00001 #include "include/IvMatrix33.h"
00002 #include "include/IvMath.h"
00003 #include "Vertex.h"
00004
00005 using namespace model;
00006
00016 Vertex::Vertex(IvVector3* vCoordinates) {
00017 setCoordinates(vCoordinates);
00018 m_index = 0;
00019 }
00020
00036 Vertex::Vertex(float fX, float fY, float fZ) {
00037 setCoordinates(fX,fY,fZ);
00038 m_index = 0;
00039 }
00040
00050 Vertex::Vertex(const Vertex& other) :
00051 m_vCoordinates( other.m_vCoordinates ),
00052 m_vNormal( other.m_vNormal )
00053 {
00054 m_index = 0;
00055 }
00056
00066 Vertex& Vertex::operator=(const Vertex& other)
00067 {
00068
00069 if ( this == &other )
00070 return *this;
00071
00072 m_vCoordinates = other.m_vCoordinates;
00073 m_vNormal = other.m_vNormal;
00074
00075 return *this;
00076 }
00077
00092 void Vertex::setCoordinates(float fX, float fY, float fZ) {
00093 m_vCoordinates = new IvVector3(fX,fY,fZ);
00094 }
00095
00104 void Vertex::setCoordinates(IvVector3* vCoordinates) {
00105 m_vCoordinates = vCoordinates;
00106 }
00107
00122 void Vertex::updateCoordinates(float fX, float fY, float fZ) {
00123 m_vCoordinates->x = fX;
00124 m_vCoordinates->y = fY;
00125 m_vCoordinates->z = fZ;
00126 }
00127
00136 IvVector3* Vertex::getCoordinates() {
00137 return m_vCoordinates;
00138 }
00139
00148 IvVector3* Vertex::getNormal() {
00149 return m_vNormal;
00150 }
00151
00160 void Vertex::setNormal(IvVector3* vNormal) {
00161 m_vNormal = vNormal;
00162 }
00163
00178 void Vertex::setNormal(float fX, float fY, float fZ) {
00179 m_vNormal = new IvVector3(fX,fY,fZ);
00180 }
00181
00190 void Vertex::translate(IvVector3* vTargetpos) {
00191 m_vCoordinates=&(*m_vCoordinates + *vTargetpos);
00192 }
00193
00208 void Vertex::rotate(float fAngleX, float fAngleY, float fAngleZ) {
00209 IvMatrix33 euler = IvMatrix33();
00210 euler.Rotation(fAngleZ, fAngleY, fAngleX);
00211 m_vNormal = &(*m_vNormal * euler);
00212 }
00213
00225 bool Vertex::operator==( const Vertex& other ) const
00226 {
00227 if(other.m_vCoordinates == m_vCoordinates && other.m_vNormal == m_vNormal) {
00228 return true;
00229 }
00230 return false;
00231 }
00232
00244 bool Vertex::operator!=( const Vertex& other ) const
00245 {
00246 if(other.m_vCoordinates == m_vCoordinates && other.m_vNormal == m_vNormal) {
00247 return false;
00248 }
00249 return true;
00250 }
00251
00260 void Vertex::setIndex(int index) {
00261 m_index = index;
00262 }
00263
00272 int Vertex::getIndex() {
00273 return m_index;
00274 }