object3.rar

  • PUDN用户
    了解作者
  • C/C++
    开发工具
  • 4KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 2
    下载次数
  • 2011-05-22 23:54
    上传日期
Object test generation
object3.rar
  • KOG_Objeto.cpp
    13.9KB
  • KOG_Objeto.h
    1.5KB
内容介绍
#include "KOG_Objeto.h" KOG_Objeto::KOG_Objeto(U8 idGenerador,char *parametros) { char cadena[256]; bool triangulizar; m_malla=NULL; m_mallaTemp=NULL; m_matTemp[0]=1;m_matTemp[1]=0;m_matTemp[2]=0;m_matTemp[3]=0; m_matTemp[4]=0;m_matTemp[5]=1;m_matTemp[6]=0;m_matTemp[7]=0; m_matTemp[8]=0;m_matTemp[9]=0;m_matTemp[10]=1;m_matTemp[11]=0; m_matTemp[12]=0;m_matTemp[13]=0;m_matTemp[14]=0;m_matTemp[15]=1; m_matT[0]=1;m_matT[1]=0;m_matT[2]=0;m_matT[3]=0; m_matT[4]=0;m_matT[5]=1;m_matT[6]=0;m_matT[7]=0; m_matT[8]=0;m_matT[9]=0;m_matT[10]=1;m_matT[11]=0; m_matT[12]=0;m_matT[13]=0;m_matT[14]=0;m_matT[15]=1; switch(idGenerador) { case GENERADOR_CUBO: m_malla=new Malla(); m_mallaTemp=new Malla(); m_malla->cargarCubo(); m_mallaTemp->cargarCubo(); trasladar(0.0,1.5,0.0); fijarMatrizTransformacion(); break; case GENERADOR_PLANO: m_malla=new Malla(); m_mallaTemp=new Malla(); m_malla->cargarPlano(); m_mallaTemp->cargarPlano(); rotacionX(90); escaladoX(2); escaladoY(2); fijarMatrizTransformacion(); break; case GENERADOR_OBJ: m_malla=new Malla(); m_mallaTemp=new Malla(); strcpy(cadena,parametros); triangulizar=parametros[strlen(cadena)+1]; m_malla->cargarOBJ(cadena,0); m_mallaTemp->cargarOBJ(cadena,0); fijarMatrizTransformacion(); break; default: MessageBox(NULL,"Generador no disponible","Aviso",MB_OK); return; } } KOG_Objeto::~KOG_Objeto() { if(m_malla!=NULL) delete[] m_malla; if(m_mallaTemp!=NULL) delete[] m_mallaTemp; } Malla* KOG_Objeto::getMalla() { return m_malla; } Malla* KOG_Objeto::getMallaTemp() { return m_mallaTemp; } void KOG_Objeto::multMatrices(float *m1,float *m2) { float nueva[16]; nueva[0] = m1[0]*m2[0] + m1[4]*m2[1] + m1[8]*m2[2] + m1[12]*m2[3]; nueva[1] = m1[1]*m2[0] + m1[5]*m2[1] + m1[9]*m2[2] + m1[13]*m2[3]; nueva[2] = m1[2]*m2[0] + m1[6]*m2[1] + m1[10]*m2[2] + m1[14]*m2[3]; nueva[3] = m1[3]*m2[0] + m1[7]*m2[1] + m1[11]*m2[2] + m1[15]*m2[3]; nueva[4] = m1[0]*m2[4] + m1[4]*m2[5] + m1[8]*m2[6] + m1[12]*m2[7]; nueva[5] = m1[1]*m2[4] + m1[5]*m2[5] + m1[9]*m2[6] + m1[13]*m2[7]; nueva[6] = m1[2]*m2[4] + m1[6]*m2[5] + m1[10]*m2[6] + m1[14]*m2[7]; nueva[7] = m1[3]*m2[4] + m1[7]*m2[5] + m1[11]*m2[6] + m1[15]*m2[7]; nueva[8] = m1[0]*m2[8] + m1[4]*m2[9] + m1[8]*m2[10] + m1[12]*m2[11]; nueva[9] = m1[1]*m2[8] + m1[5]*m2[9] + m1[9]*m2[10] + m1[13]*m2[11]; nueva[10]= m1[2]*m2[8] + m1[6]*m2[9] + m1[10]*m2[10] + m1[14]*m2[11]; nueva[11]= m1[3]*m2[8] + m1[7]*m2[9] + m1[11]*m2[10] + m1[15]*m2[11]; nueva[12]= m1[0]*m2[12] + m1[4]*m2[13] + m1[8]*m2[14] + m1[12]*m2[15]; nueva[13]= m1[1]*m2[12] + m1[5]*m2[13] + m1[9]*m2[14] + m1[13]*m2[15]; nueva[14]= m1[2]*m2[12] + m1[6]*m2[13] + m1[10]*m2[14] + m1[14]*m2[15]; nueva[15]= m1[3]*m2[12] + m1[7]*m2[13] + m1[11]*m2[14] + m1[15]*m2[15]; for(int i=0;i<16;i++) m2[i]=nueva[i]; } void KOG_Objeto::trasladar(float x,float y,float z) { float matTraslacion[16]; matTraslacion[0]=1;matTraslacion[4]=0;matTraslacion[8]=0;matTraslacion[12]=x; matTraslacion[1]=0;matTraslacion[5]=1;matTraslacion[9]=0;matTraslacion[13]=y; matTraslacion[2]=0;matTraslacion[6]=0;matTraslacion[10]=1;matTraslacion[14]=z; matTraslacion[3]=0;matTraslacion[7]=0;matTraslacion[11]=0;matTraslacion[15]=1; multMatrices(matTraslacion,m_matT); } void KOG_Objeto::rotacionX(float angulo) { float matRotacionX[16]; trasladar(-m_matTemp[12],-m_matTemp[13],-m_matTemp[14]); matRotacionX[0]=1;matRotacionX[4]=0;matRotacionX[8]=0;matRotacionX[12]=0; matRotacionX[1]=0;matRotacionX[5]=cos(angulo);matRotacionX[9]=sin(angulo);matRotacionX[13]=0; matRotacionX[2]=0;matRotacionX[6]=-sin(angulo);matRotacionX[10]=cos(angulo);matRotacionX[14]=0; matRotacionX[3]=0;matRotacionX[7]=0;matRotacionX[11]=0;matRotacionX[15]=1; multMatrices(matRotacionX,m_matT); trasladar(m_matTemp[12],m_matTemp[13],m_matTemp[14]); } void KOG_Objeto::rotacionY(float angulo) { float matRotacionY[16]; trasladar(-m_matTemp[12],-m_matTemp[13],-m_matTemp[14]); matRotacionY[0]=cos(angulo);matRotacionY[4]=0;matRotacionY[8]=-sin(angulo);matRotacionY[12]=0; matRotacionY[1]=0;matRotacionY[5]=1;matRotacionY[9]=0;matRotacionY[13]=0; matRotacionY[2]=sin(angulo);matRotacionY[6]=0;matRotacionY[10]=cos(angulo);matRotacionY[14]=0; matRotacionY[3]=0;matRotacionY[7]=0;matRotacionY[11]=0;matRotacionY[15]=1; multMatrices(matRotacionY,m_matT); trasladar(m_matTemp[12],m_matTemp[13],m_matTemp[14]); } void KOG_Objeto::rotacionZ(float angulo) { float matRotacionZ[16]; trasladar(-m_matTemp[12],-m_matTemp[13],-m_matTemp[14]); matRotacionZ[0]=cos(angulo);matRotacionZ[4]=sin(angulo);matRotacionZ[8]=0;matRotacionZ[12]=0; matRotacionZ[1]=-sin(angulo);matRotacionZ[5]=cos(angulo);matRotacionZ[9]=0;matRotacionZ[13]=0; matRotacionZ[2]=0;matRotacionZ[6]=0;matRotacionZ[10]=1;matRotacionZ[14]=0; matRotacionZ[3]=0;matRotacionZ[7]=0;matRotacionZ[11]=0;matRotacionZ[15]=1; multMatrices(matRotacionZ,m_matT); trasladar(m_matTemp[12],m_matTemp[13],m_matTemp[14]); } void KOG_Objeto::escaladoX(float esc) { float matEscaladoX[16]; trasladar(-m_matTemp[12],-m_matTemp[13],-m_matTemp[14]); matEscaladoX[0]=esc;matEscaladoX[4]=0;matEscaladoX[8]=0;matEscaladoX[12]=0; matEscaladoX[1]=0;matEscaladoX[5]=1;matEscaladoX[9]=0;matEscaladoX[13]=0; matEscaladoX[2]=0;matEscaladoX[6]=0;matEscaladoX[10]=1;matEscaladoX[14]=0; matEscaladoX[3]=0;matEscaladoX[7]=0;matEscaladoX[11]=0;matEscaladoX[15]=1; multMatrices(matEscaladoX,m_matT); trasladar(m_matTemp[12],m_matTemp[13],m_matTemp[14]); } void KOG_Objeto::escaladoY(float esc) { float matEscaladoY[16]; trasladar(-m_matTemp[12],-m_matTemp[13],-m_matTemp[14]); matEscaladoY[0]=1;matEscaladoY[4]=0;matEscaladoY[8]=0;matEscaladoY[12]=0; matEscaladoY[1]=0;matEscaladoY[5]=esc;matEscaladoY[9]=0;matEscaladoY[13]=0; matEscaladoY[2]=0;matEscaladoY[6]=0;matEscaladoY[10]=1;matEscaladoY[14]=0; matEscaladoY[3]=0;matEscaladoY[7]=0;matEscaladoY[11]=0;matEscaladoY[15]=1; multMatrices(matEscaladoY,m_matT); trasladar(m_matTemp[12],m_matTemp[13],m_matTemp[14]); } void KOG_Objeto::escaladoZ(float esc) { float matEscaladoZ[16]; trasladar(-m_matTemp[12],-m_matTemp[13],-m_matTemp[14]); matEscaladoZ[0]=1;matEscaladoZ[4]=0;matEscaladoZ[8]=0;matEscaladoZ[12]=0; matEscaladoZ[1]=0;matEscaladoZ[5]=1;matEscaladoZ[9]=0;matEscaladoZ[13]=0; matEscaladoZ[2]=0;matEscaladoZ[6]=0;matEscaladoZ[10]=esc;matEscaladoZ[14]=0; matEscaladoZ[3]=0;matEscaladoZ[7]=0;matEscaladoZ[11]=0;matEscaladoZ[15]=1; multMatrices(matEscaladoZ,m_matT); trasladar(m_matTemp[12],m_matTemp[13],m_matTemp[14]); } void KOG_Objeto::guardarMatrizTransformacion() { m_matT[0]=m_matTemp[0];m_matT[4]=m_matTemp[4];m_matT[8]=m_matTemp[8];m_matT[12]=m_matTemp[12]; m_matT[1]=m_matTemp[1];m_matT[5]=m_matTemp[5];m_matT[9]=m_matTemp[9];m_matT[13]=m_matTemp[13]; m_matT[2]=m_matTemp[2];m_matT[6]=m_matTemp[6];m_matT[10]=m_matTemp[10];m_matT[14]=m_matTemp[14]; m_matT[3]=m_matTemp[3];m_matT[7]=m_matTemp[7];m_matT[11]=m_matTemp[11];m_matT[15]=m_matTemp[15]; } void KOG_Objeto::fijarMatrizTransformacion() { m_matTemp[0]=m_matT[0];m_matTemp[4]=m_matT[4];m_matTemp[8]=m_matT[8];m_matTemp[12]=m_matT[12]; m_matTemp[1]=m_matT[1];m_matTemp[5]=m_matT[5];m_matTemp[9]=m_matT[9];m_matTemp[13]=m_matT[13]; m_matTemp[2]=m_matT[2];m_matTemp[6]=m_matT[6];m_matTemp[10]=m_matT[10];m_matTemp[14]=m_matT[14]; m_matTemp[3]=m_matT[3];m_matTemp[7]=m_matT[7];m_matTemp[11]=m_matT[11];m_matTemp[15]=m_matT[15]; } void KOG_Objeto::dibujar() { glPushMatrix(); glMultMatrixf(m_matT); m_malla->dibujarMalla(); glPopMatrix(); } void KOG_Objeto::dibujarTemp() { U32 numVertices=m_malla->m_numVertices; if(numVertices==0) return; Vector3 *verts; verts=m_malla->m_va; float men
评论
    相关推荐
    • GENERATION.rar
      GENERATION OF SIGNALS
    • signal generation
      signal generation using matlab
    • feedback-generation
      反馈产生
    • Maze-generation
      迷宫一代 使用递归回溯算法
    • terrain-generation
      地形生成 练习地形生成算法。
    • python-generation
      课程计划:面向初学者的“ Generation Python”课程
    • Forms generation
      用来生成验证表单输入的类 -支持在客户端与服务器端双重验证 -支持accesskey操作 -支持对复选框、单选框、文字框、列表框、上传文件框等格式的验证 -支持对Email、信用卡、数字、字符长度等多种类型的验证
    • Next Generation SOA
      Title: Next Generation SOA Author: Bernd Trops, Bertold Maier, Clemens Utschig-Utschig, Hajo Normann, Pethuru Raj Cheliah, Thomas Erl, Torsten Winterberg Length: 400 pages Edition: 1 Language: English...
    • generation-vue
      视觉生成 项目设置 npm install 编译和热重装以进行开发 npm run serve 编译并最小化生产 npm run build 整理和修复文件 npm run lint 自定义配置 请参阅。
    • code_generation
      自述文件 该自述文件通常会记录启动和运行应用程序所需的所有步骤。 您可能要讲的内容: Ruby版本 系统依赖 配置 数据库创建 数据库初始化 如何运行测试套件 服务(作业队列,缓存服务器,搜索引擎等) ...