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


C++ PV3D::normaliza方法代码示例

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


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

示例1: creaTuboFrenet

void MontanaRusa::creaTuboFrenet(){
        //Lo multiplicamos por el numero de vueltas
        GLfloat intervalo = 2*M_PI*2/NQ;
        PV3D** vertices = getVertices();

        //Construimos los vertices de cada cara del tubo
        for(int i=0; i<NQ; i++){
                GLfloat valor = i*intervalo;
                PV3D* T = primeraDerivada(valor);
                T->normaliza();
                PV3D* B = primeraDerivada(valor)->productoVectorial(segundaDerivada(valor));
                B->normaliza();
                PV3D* N = B->productoVectorial(T);
                PV3D* C = funcion(valor);
                for(int j=0; j<NP; j++){
                        int indiceVertice = NP*i+j;
                        PV3D* vertice = perfil[j]->multiplicaMatriz(N,B,T,C);
                        vertices[indiceVertice] = vertice;
                }
        }

        //Construimos las caras
        for(int i=0; i<NQ; i++){
                for (int j=0; j<NP; j++){
                        int indiceCara = NP*i+j;
                        caras[indiceCara] = new Cara(4);
                        VerticeNormal** normalesCara = new VerticeNormal*[4];

                        int verticeBase = indiceCara;
                        int v0 = verticeBase % (NP*NQ);
                        int v1 = sucesor(verticeBase % (NP*NQ));
                        int v2 = (sucesor(verticeBase)+NP) % (NP*NQ);
                        int v3 = (verticeBase + NP) % (NP*NQ);

                        normalesCara[0] = new VerticeNormal(v0,indiceCara);
                        normalesCara[1] = new VerticeNormal(v1,indiceCara);
                        normalesCara[2] = new VerticeNormal(v2,indiceCara);
                        normalesCara[3] = new VerticeNormal(v3,indiceCara);

                        caras[indiceCara]->addVerticeNormal(normalesCara);
                }

        }

        //Calculamos las normales de cada cara
        for(int i=0; i<numCaras; i++){
                normales[i] = CalculoVectorNormalPorNewell(caras[i]);
        }
}
开发者ID:alvaropascualcrespo,项目名称:Camara,代码行数:49,代码来源:MontanaRusa.cpp

示例2: vNormal

PV3D* MontanaRusa::vNormal(GLfloat t){
	PV3D* bin = vBinormal(t);
	PV3D* tang = vTangente(t);

	PV3D* norm = bin->productoVectorial(tang);
	norm->normaliza();

	return norm;
}
开发者ID:Aryalexa,项目名称:CompGraphics,代码行数:9,代码来源:MontanaRusa.cpp

示例3: vBinormal

PV3D* MontanaRusa::vBinormal(GLfloat t){
	PV3D* deriv1 = new PV3D(-3 * sin(t), 6 * cos(2 * t), 3 * cos(t), 0);
	PV3D* deriv2 = new PV3D(-3 * cos(t), -12 * sin(2 * t), -3 * sin(t), 0);

	PV3D* bin = deriv1->productoVectorial(deriv2);
	bin->normaliza();

	return bin;
}
开发者ID:Aryalexa,项目名称:CompGraphics,代码行数:9,代码来源:MontanaRusa.cpp

示例4: dibujaCoche

void MontanaRusa::dibujaCoche(){
        GLfloat movimiento = coche->getMovimiento();
        PV3D* T = primeraDerivada(movimiento);
        T->normaliza();
        PV3D* B = primeraDerivada(movimiento)->productoVectorial(segundaDerivada(movimiento));
        B->normaliza();
        PV3D* N = B->productoVectorial(T);
        PV3D* C = funcion(movimiento);

        GLfloat m[] = { N->getX(), N->getY(), N->getZ(), N->isPoint(),
                        B->getX(), B->getY(), B->getZ(), B->isPoint(),
                        T->getX(), T->getY(), T->getZ(), T->isPoint(),
                        C->getX(), C->getY(), C->getZ(), C->isPoint()};

        glMatrixMode(GL_MODELVIEW);
        glPushMatrix();
                glMultMatrixf(m);
                coche->dibuja();
        glPopMatrix();
}
开发者ID:alvaropascualcrespo,项目名称:Camara,代码行数:20,代码来源:MontanaRusa.cpp

示例5: calculoVectorNormalPorNewell

PV3D* Malla::calculoVectorNormalPorNewell(Cara C){
	PV3D* n = new PV3D(0, 0, 0, 0);
	for (int i = 0; i < C.getNumeroVertices(); i++){
		PV3D* vertActual = vertice[C.getIndiceVertice(i)];
		PV3D* vertSiguiente = vertice[C.getIndiceVertice((i + 1) % C.getNumeroVertices())];
		n->setX(n->getX() + ((vertActual->getY() - vertSiguiente->getY())*(vertActual->getZ() + vertSiguiente->getZ())));
		n->setY(n->getY() + ((vertActual->getZ() - vertSiguiente->getZ())*(vertActual->getX() + vertSiguiente->getX()))); // Z * X
		n->setZ(n->getZ() + ((vertActual->getX() - vertSiguiente->getX())*(vertActual->getY() + vertSiguiente->getY()))); // X * Y
	}
	return n->normaliza();
}
开发者ID:MrSlide22,项目名称:IG,代码行数:11,代码来源:Malla.cpp

示例6: vectorNormalNewell

PV3D* Malla::vectorNormalNewell(Cara* c){
	PV3D* n = new PV3D();
	for(int i=0; i<c->getNumVertices(); i++){
		PV3D* vertActual = vertice[c->getIndiceVerticeK(i)];
		PV3D* vertSig = vertice[c->getIndiceVerticeK((i+1) % c->getNumVertices())];

		n->setX(n->getX() + ((vertActual->getY() - vertSig->getY()) * (vertActual->getZ() + vertSig->getZ())));
		n->setY(n->getY() + ((vertActual->getZ() - vertSig->getZ()) * (vertActual->getX() + vertSig->getX())));
		n->setZ(n->getZ() + ((vertActual->getX() - vertSig->getX()) * (vertActual->getY() + vertSig->getY())));
	}
	return n->normaliza();
}
开发者ID:SalamiCo,项目名称:IGrP7,代码行数:12,代码来源:Malla.cpp

示例7: key


//.........这里部分代码省略.........
			camera.giraZ(0.1);
			break;

		case '4': //Lateral
			camera.lateral();
			break;

		case '5': //Frontal
			camera.frontal();
			break;

		case '6': //Cenital
			camera.cenital();
			break;

		case '7': //Esquina
			camera.esquina();
			break;

		case 'o': //Ortogonal
			glMatrixMode(GL_PROJECTION);
			glLoadIdentity();
			glOrtho(xLeft, xRight, yBot, yTop, N, F);
			break;
		case 'p': //Perspectiva
			glMatrixMode(GL_PROJECTION);
			glLoadIdentity();
			gluPerspective(45, 1, N, F);
			break;
		case 'l': //Oblicua
			glMatrixMode(GL_PROJECTION);
			glLoadIdentity();
			
			d.normaliza();

			if(d.getZ() != 0.0 && (d.getX() != 0 || d.getY() != 0 || d.getZ() != 1)){
				GLfloat m[16] = {	
						1, 0, 0, 0,
						0, 1, 0, 0,
						0, 0, 1, 0,
						0, 0, 0, 1
					};
				m[8] = -(d.getX()) / d.getZ();
				m[9] = -(d.getY()) / d.getZ();
				m[12] = -N * (d.getX() / d.getZ());
				m[13] = -N * (d.getY() / d.getZ());

				glOrtho(xLeft, xRight, yBot, yTop, N, F);
				glMultMatrixf(m);
			}
			break;

		case 'y': //Trasladar escena
			escena->traslacionEscena(1, 0, 0);
			break;
		case 'h':
			escena->traslacionEscena(-1, 0, 0);
			break;

		case 'g': //Escalacion escena
			escena->escalacionEscena(1, 2, 1);
			break;
		case 'b':
			escena->escalacionEscena(1, 0.5, 1);
			break;
开发者ID:SalamiCo,项目名称:IGrP7,代码行数:66,代码来源:main.cpp


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