当前位置: 首页>>代码示例>>C++>>正文


C++ MathVector::y方法代码示例

本文整理汇总了C++中MathVector::y方法的典型用法代码示例。如果您正苦于以下问题:C++ MathVector::y方法的具体用法?C++ MathVector::y怎么用?C++ MathVector::y使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在MathVector的用法示例。


在下文中一共展示了MathVector::y方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: drawWeaponFaceNormals

/*
***************************************************************
*
* Draws the face normals on the weapon model
*
***************************************************************
*/
void GLWidget::drawWeaponFaceNormals()
{
    glDisable(GL_LIGHTING);
    glColor3f(0.0, 0.0, 1.0);
    for(int i = 0; i < weaponReader_.numberOfTriangles(); i++)
    {
        int indexOne = 0;
        int indexTwo = 0;
        int indexThree = 0;
        weaponReader_.retrieveTriangleVertexIndicies(i, &indexOne,
                &indexTwo, &indexThree);

        MathVector* faceNormals = weaponReader_.faceNormals()->at(i);


        VertexCoordinate vertexOne = weaponReader_.retrieveVertexCoordinatesAt(indexOne);
        VertexCoordinate vertexTwo = weaponReader_.retrieveVertexCoordinatesAt(indexTwo);
        VertexCoordinate vertexThree = weaponReader_.retrieveVertexCoordinatesAt(indexThree);

        VertexCoordinate middleOfTriangle;
        middleOfTriangle.x = ((vertexOne.x + vertexTwo.x + vertexThree.x)/3);
        middleOfTriangle.y = ((vertexOne.y + vertexTwo.y + vertexThree.y)/3);
        middleOfTriangle.z = ((vertexOne.z + vertexTwo.z + vertexThree.z)/3);

        glBegin(GL_LINES);
        glVertex3f(middleOfTriangle.x, middleOfTriangle.y,
                   middleOfTriangle.z);
        glVertex3f((faceNormals->x()*2)+middleOfTriangle.x, (faceNormals->y()*2)+middleOfTriangle.y,
                   (faceNormals->z()*2)+middleOfTriangle.z);
        glEnd();
    }
    glEnable(GL_LIGHTING);
}
开发者ID:adickin,项目名称:Md2-Viewer,代码行数:40,代码来源:GLWidget.cpp

示例2: TriangleBoxIntersection

///
//	TriangleBoxIntersection()
//
//		Determine if a bounding box and triangle intersect
//
bool TriangleBoxIntersection(const MathVector<3>& p0, const MathVector<3>& p1,
							 const MathVector<3>& p2,
							 const MathVector<3>& boxMin, const MathVector<3>& boxMax)
{
	vector3 Trans;
	vector3 Scale(1.0, 1.0, 1.0);
	vector3 TransMax;
	TRI		TestTri;

	///
	//	Compute the scale and transform required to make BBox
	//	a voxel
	//
	Trans.x() = (boxMax.x() + boxMin.x()) / 2;
	Trans.y() = (boxMax.y() + boxMin.y()) / 2;
	Trans.z() = (boxMax.z() + boxMin.z()) / 2;

	VecSubtract(TransMax, boxMax, Trans);
	
	if(TransMax.x() != 0)
		Scale.x() = 0.5f / TransMax.x();
	if(TransMax.y() != 0)
		Scale.y() = 0.5f / TransMax.y();
	if(TransMax.z() != 0)
		Scale.z() = 0.5f / TransMax.z();

	///
	//	Put the triangle in voxel space
	//	
	TestTri.m_P[0].x() = (p0.x() - Trans.x()) * Scale.x();
	TestTri.m_P[0].y() = (p0.y() - Trans.y()) * Scale.y();
	TestTri.m_P[0].z() = (p0.z() - Trans.z()) * Scale.z();

	TestTri.m_P[1].x() = (p1.x() - Trans.x()) * Scale.x();
	TestTri.m_P[1].y() = (p1.y() - Trans.y()) * Scale.y();
	TestTri.m_P[1].z() = (p1.z() - Trans.z()) * Scale.z();
	
	TestTri.m_P[2].x() = (p2.x() - Trans.x()) * Scale.x();
	TestTri.m_P[2].y() = (p2.y() - Trans.y()) * Scale.y();
	TestTri.m_P[2].z() = (p2.z() - Trans.z()) * Scale.z();

	///
	//	Test against the voxel
	//
	return(TriCubeIntersection(TestTri) == INSIDE);	
}
开发者ID:bsumirak,项目名称:ugcore,代码行数:51,代码来源:tri_box.cpp

示例3: drawWeaponVertexNormals

/*
***************************************************************
*
* Draws the vertex normals on the weapon model
*
***************************************************************
*/
void GLWidget::drawWeaponVertexNormals()
{
    glDisable(GL_LIGHTING);
    glColor3f(1.0, 0.0, 0.0);
    for(int i = 0; i < weaponReader_.numberOfVertices(); i++)
    {
        MathVector* vertexNormal = weaponReader_.vertexNormals()->at(i);
        VertexCoordinate vertexCoordinate = weaponReader_.retrieveVertexCoordinatesAt(i);

        glBegin(GL_LINES);
        glVertex3f(vertexCoordinate.x, vertexCoordinate.y,
                   vertexCoordinate.z);
        glVertex3f((vertexNormal->x()*2)+vertexCoordinate.x, (vertexNormal->y()*2)+vertexCoordinate.y,
                   (vertexNormal->z()*2)+vertexCoordinate.z);
        glEnd();
    }
    glEnable(GL_LIGHTING);
}
开发者ID:adickin,项目名称:Md2-Viewer,代码行数:25,代码来源:GLWidget.cpp

示例4: drawWeapon

/*
***************************************************************
*
*  Draws the weapon model that is currently opened in the weaponReader_
*
***************************************************************
*/
void GLWidget::drawWeapon()
{
    if(textureLoadedForWeapon_)
    {
        glEnable(GL_TEXTURE_2D);
        glBindTexture(GL_TEXTURE_2D, weaponTexture_);
    }
    else
    {
        glColor3f(1.0, 0.0, 0.0);
    }

    glBegin(GL_TRIANGLES);

    for(int currentTriangle = 0;
            currentTriangle < weaponReader_.numberOfTriangles(); currentTriangle++)
    {
        int indexOne = 0;
        int indexTwo = 0;
        int indexThree = 0;
        weaponReader_.retrieveTriangleVertexIndicies(currentTriangle, &indexOne,
                &indexTwo, &indexThree);

        int texOne = 0;
        int texTwo = 0;
        int texThree = 0;
        weaponReader_.retrieveTriangleTextureIndicies(currentTriangle, &texOne,
                &texTwo, &texThree);

        VertexCoordinate vertexOne = weaponReader_.retrieveVertexCoordinatesAt(indexOne);
        VertexCoordinate vertexTwo = weaponReader_.retrieveVertexCoordinatesAt(indexTwo);
        VertexCoordinate vertexThree = weaponReader_.retrieveVertexCoordinatesAt(indexThree);

        TextureCoordinate textureOne = weaponReader_.retrieveTextureCoordinateAt(texOne);
        TextureCoordinate textureTwo = weaponReader_.retrieveTextureCoordinateAt(texTwo);
        TextureCoordinate textureThree = weaponReader_.retrieveTextureCoordinateAt(texThree);

        //Point One.
        MathVector* vector;
        if(displayMode_== DrawingDefines::FLAT_SHADING)
        {
            vector = weaponReader_.faceNormals()->at(currentTriangle);
        }
        else
        {
            vector = weaponReader_.vertexNormals()->at(indexOne);
        }
        glNormal3f(vector->x(), vector->y(), vector->z());
        glTexCoord2f((float) textureOne.u/weaponReader_.skinWidth(),
                     (float) textureOne.v/weaponReader_.skinHeight());
        glVertex3f(vertexOne.x, vertexOne.y, vertexOne.z);

        //Point Two
        if(displayMode_== DrawingDefines::FLAT_SHADING)
        {
            vector = weaponReader_.faceNormals()->at(currentTriangle);
        }
        else
        {
            vector = weaponReader_.vertexNormals()->at(indexTwo);
        }
        glNormal3f(vector->x(), vector->y(), vector->z());
        glTexCoord2f((float) textureTwo.u/weaponReader_.skinWidth(),
                     (float) textureTwo.v/weaponReader_.skinHeight());
        glVertex3f(vertexTwo.x, vertexTwo.y, vertexTwo.z);

        //Point Three
        if(displayMode_== DrawingDefines::FLAT_SHADING)
        {
            vector = weaponReader_.faceNormals()->at(currentTriangle);
        }
        else
        {
            vector = weaponReader_.vertexNormals()->at(indexThree);
        }
        vector = weaponReader_.vertexNormals()->at(indexThree);
        glNormal3f(vector->x(), vector->y(), vector->z());
        glTexCoord2f((float) textureThree.u/weaponReader_.skinWidth(),
                     (float) textureThree.v/weaponReader_.skinHeight());
        glVertex3f(vertexThree.x, vertexThree.y, vertexThree.z);
    }
    glEnd();

    glDisable(GL_TEXTURE_2D);
}
开发者ID:adickin,项目名称:Md2-Viewer,代码行数:92,代码来源:GLWidget.cpp

示例5: drawModel

/*
***************************************************************
*
*  Draws the model based on the opened MD2 model file
*
***************************************************************
*/
void GLWidget::drawModel()
{
    switch(displayMode_)
    {
    case DrawingDefines::WIREFRAME:
    {
        glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
        break;
    }
    case DrawingDefines::FLAT_SHADING:
    {
        glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
        glShadeModel(GL_FLAT);
        break;
    }
    case DrawingDefines::SMOOTH_SHADING:
    {
        glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
        glShadeModel(GL_SMOOTH);
        break;
    }
    }

    if(textureLoadedForMd2Model_)
    {
        glEnable(GL_TEXTURE_2D);
        glBindTexture(GL_TEXTURE_2D, modelTexture_);
    }
    else
    {
        glColor3f(0.0, 1.0, 0.0);
    }

    glBegin(GL_TRIANGLES);

    for(int currentTriangle = 0;
            currentTriangle < modelReader_.numberOfTriangles(); currentTriangle++)
    {
        int indexOne = 0;
        int indexTwo = 0;
        int indexThree = 0;
        modelReader_.retrieveTriangleVertexIndicies(currentTriangle, &indexOne,
                &indexTwo, &indexThree);

        int texOne = 0;
        int texTwo = 0;
        int texThree = 0;
        modelReader_.retrieveTriangleTextureIndicies(currentTriangle, &texOne,
                &texTwo, &texThree);

        VertexCoordinate vertexOne = modelReader_.retrieveVertexCoordinatesAt(indexOne);
        VertexCoordinate vertexTwo = modelReader_.retrieveVertexCoordinatesAt(indexTwo);
        VertexCoordinate vertexThree = modelReader_.retrieveVertexCoordinatesAt(indexThree);

        TextureCoordinate textureOne = modelReader_.retrieveTextureCoordinateAt(texOne);
        TextureCoordinate textureTwo = modelReader_.retrieveTextureCoordinateAt(texTwo);
        TextureCoordinate textureThree = modelReader_.retrieveTextureCoordinateAt(texThree);

        //Point One.
        MathVector* vector;
        if(displayMode_== DrawingDefines::FLAT_SHADING)
        {
            vector = modelReader_.faceNormals()->at(currentTriangle);
        }
        else
        {
            vector = modelReader_.vertexNormals()->at(indexOne);
        }
        glNormal3f(vector->x(), vector->y(), vector->z());
        glTexCoord2f((float) textureOne.u/modelReader_.skinWidth(),
                     (float) textureOne.v/modelReader_.skinHeight());
        glVertex3f(vertexOne.x, vertexOne.y, vertexOne.z);

        //Point Two
        if(displayMode_== DrawingDefines::FLAT_SHADING)
        {
            vector = modelReader_.faceNormals()->at(currentTriangle);
        }
        else
        {
            vector = modelReader_.vertexNormals()->at(indexTwo);
        }
        glNormal3f(vector->x(), vector->y(), vector->z());
        glTexCoord2f((float) textureTwo.u/modelReader_.skinWidth(),
                     (float) textureTwo.v/modelReader_.skinHeight());
        glVertex3f(vertexTwo.x, vertexTwo.y, vertexTwo.z);

        //Point Three
        if(displayMode_== DrawingDefines::FLAT_SHADING)
        {
            vector = modelReader_.faceNormals()->at(currentTriangle);
        }
        else
//.........这里部分代码省略.........
开发者ID:adickin,项目名称:Md2-Viewer,代码行数:101,代码来源:GLWidget.cpp


注:本文中的MathVector::y方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。