/* =========================================================================== Copyright (C) 2008 Daniel Örstadius This file is part of bsp-renderer source code. bsp-renderer is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. bsp-renderer is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with bsp-renderer. If not, see . */ // BspVertex.cpp -- used in the tessellation of the Bezier patches #include #include "Q3Map_BspVertex.h" BspVertex::BspVertex() { for (int i=0; i<3; i++) mPosition[i] = 0; for (int i=0; i<3; i++) mNormal[i] = 0; for(int i=0; i<2; i++) for(int j=0; j<2; j++) mTexcoord[i][j] = 0; } BspVertex::BspVertex(float p[3], float texcoord[2][2], float n[3]) { for (int i=0; i<3; i++) mPosition[i] = p[i]; for (int i=0; i<3; i++) mNormal[i] = n[i]; for(int i=0; i<2; i++) for(int j=0; j<2; j++) { this->mTexcoord[i][j] = texcoord[i][j]; } } BspVertex BspVertex::operator+(BspVertex a) { BspVertex res; for (int i=0; i<3; i++) { res.mPosition[i] = this->mPosition[i] + a.mPosition[i]; res.mNormal[i] = this->mNormal[i] + a.mNormal[i]; } for(int i=0; i<2; i++) for(int j=0; j<2; j++) { res.mTexcoord[i][j] = this->mTexcoord[i][j] + a.mTexcoord[i][j]; } return res; } BspVertex BspVertex::operator*(float a) { BspVertex res; for (int i=0; i<3; i++) { res.mPosition[i] = this->mPosition[i] * a; res.mNormal[i] = this->mNormal[i] * a; } for(int i=0; i<2; i++) for(int j=0; j<2; j++) res.mTexcoord[i][j] = this->mTexcoord[i][j] * a; return res; } void BspVertex::normalise(void) { //QVECTOR n((float)mNormal[0], (float)mNormal[1], (float)mNormal[2]); //D3DXVec3Normalize(&n, &n); //mNormal[0] = n.x; //mNormal[1] = n.y; //mNormal[2] = n.z; float flLen=sqrt( mNormal[0]*mNormal[0] + mNormal[1]*mNormal[1] + mNormal[2]*mNormal[2] ) ; mNormal[0]/=flLen ; mNormal[1]/=flLen ; mNormal[2]/=flLen ; }