00001 #include <windows.h> 00002 #include "polygon.h" 00003 #include "mmgr.h" 00004 00005 POLYGON::POLYGON() 00006 { 00007 } 00008 00009 POLYGON::~POLYGON() 00010 { 00011 } 00012 00013 VECTOR POLYGON::GetNormal() 00014 { 00015 VECTOR temp; 00016 float ux; 00017 float uy; 00018 float uz; 00019 float vx; 00020 float vy; 00021 float vz; 00022 ux = Vertex[1].x - Vertex[0].x; 00023 uy = Vertex[1].y - Vertex[0].y; 00024 uz = Vertex[1].z - Vertex[0].z; 00025 vx = Vertex[2].x - Vertex[0].x; 00026 vy = Vertex[2].y - Vertex[0].y; 00027 vz = Vertex[2].z - Vertex[0].z; 00028 temp.x = (uy*vz)-(vy*uz); 00029 temp.y = (uz*vx)-(vz*ux); 00030 temp.z = (ux*vy)-(vx*uy); 00031 return temp; 00032 } 00033 00034 void POLYGON::SetNormal() 00035 { 00036 float ux; 00037 float uy; 00038 float uz; 00039 float vx; 00040 float vy; 00041 float vz; 00042 ux = Vertex[1].x - Vertex[0].x; 00043 uy = Vertex[1].y - Vertex[0].y; 00044 uz = Vertex[1].z - Vertex[0].z; 00045 vx = Vertex[2].x - Vertex[0].x; 00046 vy = Vertex[2].y - Vertex[0].y; 00047 vz = Vertex[2].z - Vertex[0].z; 00048 Vertex[0].nx = (uy*vz)-(vy*uz); 00049 Vertex[0].ny = (uz*vx)-(vz*ux); 00050 Vertex[0].nz = (ux*vy)-(vx*uy); 00051 Vertex[1].nx = Vertex[0].nx; 00052 Vertex[1].ny = Vertex[0].ny; 00053 Vertex[1].nz = Vertex[0].nz; 00054 Vertex[2].nx = Vertex[0].nx; 00055 Vertex[2].ny = Vertex[0].ny; 00056 Vertex[2].nz = Vertex[0].nz; 00057 }