geom::FieldCell<Scal> CalcRadiationField( const Mesh& mesh, const geom::MapFace<std::shared_ptr<solver::ConditionFace>>& mf_cond_radiation_shared, const geom::FieldCell<Scal>& fc_absorption_rate, Vect radiation_direction, geom::FieldCell<Scal> initial_guess) { if (radiation_direction.norm() == 0.) { return initial_guess; } radiation_direction /= radiation_direction.norm(); geom::FieldFace<Scal> ff_flux(mesh); for (auto idxface : mesh.Faces()) { ff_flux[idxface] = radiation_direction.dot(mesh.GetSurface(idxface)); } Scal time_step = 1e16; for (auto idxcell : mesh.Cells()) { for (size_t i = 0; i < mesh.GetNumNeighbourFaces(idxcell); ++i) { auto idxface = mesh.GetNeighbourFace(idxcell, i); Vect vect = mesh.GetCenter(idxcell) - mesh.GetCenter(idxface); Scal vel_dot_vect = std::abs(radiation_direction.dot(vect)); if (vel_dot_vect != 0.) { time_step = std::min(time_step, vect.sqrnorm() / vel_dot_vect); } } } geom::FieldCell<Scal> fc_source(mesh, 0.); solver::AdvectionSolverExplicit<Mesh, geom::FieldFace<Scal>> advection( mesh, initial_guess, mf_cond_radiation_shared, &ff_flux, &fc_source, 0., time_step); Scal error = 1e16; size_t count = 0; for (; count < 10 && error > 1e-3; ++count) { for (auto idxcell : mesh.Cells()) { fc_source[idxcell] = -fc_absorption_rate[idxcell] * advection.GetField()[idxcell]; } advection.StartStep(); advection.MakeIteration(); error = advection.GetConvergenceIndicator(); advection.FinishStep(); } return advection.GetField(); }
const Vect Vect::getNorm()const { Vect norming = Vect(this->m); norming.norm(); return norming; };
/** * @brief @b NOT @b Documented at this time ******************************************************************************/ void Quat :: getUnitAxis( Vect &vIn ) const { UNINITIALIZED_QUAT_CHECK; vIn.v.x = this->v.x; vIn.v.y = this->v.y; vIn.v.z = this->v.z; vIn.v.w = 1.0f; vIn.norm(); }
TEST( VectCrossCrossNorm, combo_tests ) { Vect A(1.0f, 2.0f, 3.0f, 5.0f); Vect B(10.0f, 11.0f, 12.0f, 13.0f); Vect C; CHECK( A[x] == 1.0f ); CHECK( A[y] == 2.0f ); CHECK( A[z] == 3.0f ); CHECK( A[w] == 5.0f ); CHECK( B[x] == 10.0f ); CHECK( B[y] == 11.0f ); CHECK( B[z] == 12.0f ); CHECK( B[w] == 13.0f ); C = (A-B).cross(B); Vect D = C.cross(B); D.norm(); CHECK( eq( D[x], 0.74790420f, MATH_TOLERANCE) ); CHECK( eq( D[y], 0.04273730f, MATH_TOLERANCE) ); CHECK( eq( D[z], -0.6624290f, MATH_TOLERANCE) ); CHECK( D[w] == 1.0f ); CHECK( C[x] == -9.0f ); CHECK( C[y] == 18.0f ); CHECK( C[z] == -9.0f ); CHECK( C[w] == 1.0f ); CHECK( A[x] == 1.0f ); CHECK( A[y] == 2.0f ); CHECK( A[z] == 3.0f ); CHECK( A[w] == 5.0f ); CHECK( B[x] == 10.0f ); CHECK( B[y] == 11.0f ); CHECK( B[z] == 12.0f ); CHECK( B[w] == 13.0f ); }
void calcVetor () { // Initialize x, y and z elements Vect vecA; Vect vecB(1, 10, 100); // Set elements vecA.set(1, 2, 3); // Get elements double x = vecA.getx(); double y = vecA.gety(); double z = vecA.getz(); Vect vecC; // Addition and subtraction of vectors vecC = vecA + vecB; vecC += vecA; vecC = vecA - vecB; vecC -= vecA; int val = 10; // Multiplication and division of a vector and a scholar vecC = vecA * val; vecC *= val; vecC = vecA / val; vecC /= val; // Cross product vecC = vecA * vecB; // Inner product double inner = vecA % vecB; // Norm double norm = vecA.norm(); // Normalization vecC = vecA.normalize(); }
void Ready::Enter(Bird* pBird) { pBird; RubberBand* pBack = (RubberBand*)GameObjectMan::Find(GameObjectName::RubberBandBack); RubberBand* pFront = (RubberBand*)GameObjectMan::Find(GameObjectName::RubberBandFront); Vect A(pBack->anchorX, pBack->anchorY, 0); Vect B(pFront->anchorX, pFront->anchorY, 0); Vect C = B - A; float len = C.mag(); C.norm(); C = C* 0.5 * len; C = A + C; //firstPos.Set(pBird->posX, pBird->posY); //lastPos.Set(C[x], C[y]); JumpToSling *pJump = new JumpToSling(pBird, C[x], C[y], pBird->posX, pBird->posY,0); TimerMan::AddEvent(0.0f, pJump); //pBird->SetPosition(C[x], C[y]); //pBird->pBody->SetActive(false); TimerMan::CleanObjectEvents(pBird, EventName::JUMP); }
void Box::createBox() { Vect frontBottomLeft(-0.5f, -0.5f, 0.5f); Vect frontBottomRight(0.5f, -0.5f, 0.5f); Vect frontTopLeft(-0.5f, 0.5f, 0.5f); Vect frontTopRight(0.5f, 0.5f, 0.5f); Vect backBottomLeft(-0.5f, -0.5f, -0.5f); Vect backBottomRight(0.5f, -0.5f, -0.5f); Vect backTopLeft(-0.5f, 0.5f, -0.5f); Vect backTopRight(0.5f, 0.5f, -0.5f); Vect frontLeftNormal = (frontBottomLeft - frontTopLeft).cross(frontBottomRight - frontBottomLeft); Vect frontRightNormal = (frontTopRight - frontBottomRight).cross(frontTopLeft - frontTopRight); Vect rightSideLeftNormal = (frontBottomRight - frontTopRight).cross(backBottomRight - frontBottomRight); Vect rightSideRightNormal = (backTopRight - backBottomRight).cross(frontTopRight - backTopRight); Vect backLeftNormal = (backBottomRight - backTopRight).cross(backBottomLeft - backBottomRight); Vect backRightNormal = (backTopLeft - backBottomLeft).cross(backTopRight - backTopLeft); Vect leftSideLeftNormal = (backBottomLeft - backTopLeft).cross(frontBottomLeft - backBottomLeft); Vect leftSideRightNormal = (frontTopLeft - frontBottomLeft).cross(backTopLeft - frontTopLeft); Vect topLeftNormal = (frontTopLeft - backTopLeft).cross(frontTopRight - frontTopLeft); Vect topRightNormal = (backTopRight - frontTopRight).cross(backTopLeft - backTopRight); Vect bottomLeftNormal = (backBottomLeft - frontBottomLeft).cross(backBottomRight - backBottomLeft); Vect bottomRightNormal = (frontBottomRight - backBottomRight).cross(frontBottomLeft - frontBottomRight); frontLeftNormal.norm(); frontRightNormal.norm(); rightSideLeftNormal.norm(); rightSideLeftNormal.norm(); backLeftNormal.norm(); backRightNormal.norm(); leftSideLeftNormal.norm(); leftSideRightNormal.norm(); topLeftNormal.norm(); topRightNormal.norm(); bottomLeftNormal.norm(); bottomRightNormal.norm(); boxBatch.Begin(GL_TRIANGLES, 36, 1); #if 1 //Test - Vertex Normals - No break angle - Need to work on this more - possibly when I hook in models from 3DSMax Vect ftl = frontRightNormal + leftSideRightNormal + topLeftNormal; Vect ftr = frontRightNormal + rightSideLeftNormal + topLeftNormal; Vect fbl = frontLeftNormal + leftSideLeftNormal + bottomLeftNormal; Vect fbr = frontLeftNormal + rightSideLeftNormal + bottomRightNormal; Vect btl = backRightNormal + leftSideLeftNormal + topLeftNormal; Vect btr = backLeftNormal + rightSideRightNormal + topRightNormal; Vect bbl = backLeftNormal + leftSideLeftNormal + bottomLeftNormal; Vect bbr = backLeftNormal + rightSideRightNormal + bottomLeftNormal; ftl.norm(); ftr.norm(); fbl.norm(); fbr.norm(); btl.norm(); btr.norm(); bbl.norm(); bbr.norm(); //Front //Left triangle //Top left boxBatch.Normal3f(ftl[x], ftl[y], ftl[z]); boxBatch.MultiTexCoord2f(0, 0.0f, 1.0f); boxBatch.Vertex3f(frontTopLeft[x], frontTopLeft[y], frontTopLeft[z]); //Bottom left boxBatch.Normal3f(fbl[x], fbl[y], fbl[z]); boxBatch.MultiTexCoord2f(0, 0.0f, 0.0f); boxBatch.Vertex3f(frontBottomLeft[x], frontBottomLeft[y], frontBottomLeft[z]); //Bottom right boxBatch.Normal3f(fbr[x], fbr[y], fbr[z]); boxBatch.MultiTexCoord2f(0, 1.0f, 0.0f); boxBatch.Vertex3f(frontBottomRight[x], frontBottomRight[y], frontBottomRight[z]); //Right triangle //Bottom right boxBatch.Normal3f(fbr[x], fbr[y], fbr[z]); boxBatch.MultiTexCoord2f(0, 1.0f, 0.0f); boxBatch.Vertex3f(frontBottomRight[x], frontBottomRight[y], frontBottomRight[z]); //Top right boxBatch.Normal3f(ftr[x], ftr[y], ftr[z]); boxBatch.MultiTexCoord2f(0, 1.0f, 1.0f); boxBatch.Vertex3f(frontTopRight[x], frontTopRight[y], frontTopRight[z]); //Top left boxBatch.Normal3f(ftl[x], ftl[y], ftl[z]); boxBatch.MultiTexCoord2f(0, 0.0f, 1.0f); boxBatch.Vertex3f(frontTopLeft[x], frontTopLeft[y], frontTopLeft[z]); //Right Side //Left triangle //Top left boxBatch.Normal3f(ftr[x], ftr[y], ftr[z]); boxBatch.MultiTexCoord2f(0, 0.0f, 1.0f); boxBatch.Vertex3f(frontTopRight[x], frontTopRight[y], frontTopRight[z]); //Bottom left boxBatch.Normal3f(fbr[x], fbr[y], fbr[z]); boxBatch.MultiTexCoord2f(0, 0.0f, 0.0f); boxBatch.Vertex3f(frontBottomRight[x], frontBottomRight[y], frontBottomRight[z]); //Bottom right boxBatch.Normal3f(bbr[x], bbr[y], bbr[z]); boxBatch.MultiTexCoord2f(0, 1.0f, 0.0f); boxBatch.Vertex3f(backBottomRight[x], backBottomRight[y], backBottomRight[z]); //Right triangle //Bottom right boxBatch.Normal3f(bbr[x], bbr[y], bbr[z]); boxBatch.MultiTexCoord2f(0, 1.0f, 0.0f); boxBatch.Vertex3f(backBottomRight[x], backBottomRight[y], backBottomRight[z]); //Top right boxBatch.Normal3f(btr[x], btr[y], btr[z]); boxBatch.MultiTexCoord2f(0, 1.0f, 1.0f); boxBatch.Vertex3f(backTopRight[x], backTopRight[y], backTopRight[z]); //Top left boxBatch.Normal3f(ftr[x], ftr[y], ftr[z]); boxBatch.MultiTexCoord2f(0, 0.0f, 1.0f); boxBatch.Vertex3f(frontTopRight[x], frontTopRight[y], frontTopRight[z]); //Back //Left triangle //Top left boxBatch.Normal3f(btr[x], btr[y], btr[z]); boxBatch.MultiTexCoord2f(0, 0.0f, 1.0f); boxBatch.Vertex3f(backTopRight[x], backTopRight[y], backTopRight[z]); //Bottom left boxBatch.Normal3f(bbr[x], bbr[y], bbr[z]); boxBatch.MultiTexCoord2f(0, 0.0f, 0.0f); boxBatch.Vertex3f(backBottomRight[x], backBottomRight[y], backBottomRight[z]); //Bottom right boxBatch.Normal3f(bbl[x], bbl[y], bbl[z]); boxBatch.MultiTexCoord2f(0, 1.0f, 0.0f); boxBatch.Vertex3f(backBottomLeft[x], backBottomLeft[y], backBottomLeft[z]); //Right triangle //Bottom right boxBatch.Normal3f(bbl[x], bbl[y], bbl[z]); boxBatch.MultiTexCoord2f(0, 1.0f, 0.0f); boxBatch.Vertex3f(backBottomLeft[x], backBottomLeft[y], backBottomLeft[z]); //Top right boxBatch.Normal3f(btl[x], btl[y], btl[z]); boxBatch.MultiTexCoord2f(0, 1.0f, 1.0f); boxBatch.Vertex3f(backTopLeft[x], backTopLeft[y], backTopLeft[z]); //Top left boxBatch.Normal3f(btr[x], btr[y], btr[z]); boxBatch.MultiTexCoord2f(0, 0.0f, 1.0f); boxBatch.Vertex3f(backTopRight[x], backTopRight[y], backTopRight[z]); //Left Side //Left triangle //Top left boxBatch.Normal3f(btl[x], btl[y], btl[z]); boxBatch.MultiTexCoord2f(0, 0.0f, 1.0f); boxBatch.Vertex3f(backTopLeft[x], backTopLeft[y], backTopLeft[z]); //Bottom left boxBatch.Normal3f(bbl[x], bbl[y], bbl[z]); boxBatch.MultiTexCoord2f(0, 0.0f, 0.0f); boxBatch.Vertex3f(backBottomLeft[x], backBottomLeft[y], backBottomLeft[z]); //Bottom right boxBatch.Normal3f(fbl[x], fbl[y], fbl[z]); boxBatch.MultiTexCoord2f(0, 1.0f, 0.0f); boxBatch.Vertex3f(frontBottomLeft[x], frontBottomLeft[y], frontBottomLeft[z]); //Right triangle //Bottom right boxBatch.Normal3f(fbl[x], fbl[y], fbl[z]); boxBatch.MultiTexCoord2f(0, 1.0f, 0.0f); boxBatch.Vertex3f(frontBottomLeft[x], frontBottomLeft[y], frontBottomLeft[z]); //Top right boxBatch.Normal3f(ftl[x], ftl[y], ftl[z]); boxBatch.MultiTexCoord2f(0, 1.0f, 1.0f); boxBatch.Vertex3f(frontTopLeft[x], frontTopLeft[y], frontTopLeft[z]); //Top left boxBatch.Normal3f(btl[x], btl[y], btl[z]); boxBatch.MultiTexCoord2f(0, 0.0f, 1.0f); boxBatch.Vertex3f(backTopLeft[x], backTopLeft[y], backTopLeft[z]); //Top //Left triangle //Top left boxBatch.Normal3f(btl[x], btl[y], btl[z]); boxBatch.MultiTexCoord2f(0, 0.0f, 1.0f); boxBatch.Vertex3f(backTopLeft[x], backTopLeft[y], backTopLeft[z]); //Bottom left boxBatch.Normal3f(ftl[x], ftl[y], ftl[z]); boxBatch.MultiTexCoord2f(0, 0.0f, 0.0f); boxBatch.Vertex3f(frontTopLeft[x], frontTopLeft[y], frontTopLeft[z]); //Bottom right boxBatch.Normal3f(ftr[x], ftr[y], ftr[z]); boxBatch.MultiTexCoord2f(0, 1.0f, 0.0f); boxBatch.Vertex3f(frontTopRight[x], frontTopRight[y], frontTopRight[z]); //Right triangle //Bottom right boxBatch.Normal3f(ftr[x], ftr[y], ftr[z]); boxBatch.MultiTexCoord2f(0, 1.0f, 0.0f); boxBatch.Vertex3f(frontTopRight[x], frontTopRight[y], frontTopRight[z]); //Top right boxBatch.Normal3f(btr[x], btr[y], btr[z]); boxBatch.MultiTexCoord2f(0, 1.0f, 1.0f); boxBatch.Vertex3f(backTopRight[x], backTopRight[y], backTopRight[z]); //Top left boxBatch.Normal3f(btl[x], btl[y], btl[z]); boxBatch.MultiTexCoord2f(0, 0.0f, 1.0f); boxBatch.Vertex3f(backTopLeft[x], backTopLeft[y], backTopLeft[z]); //Bottom //Left triangle //Top left boxBatch.Normal3f(fbl[x], fbl[y], fbl[z]); boxBatch.MultiTexCoord2f(0, 0.0f, 1.0f); boxBatch.Vertex3f(frontBottomLeft[x], frontBottomLeft[y], frontBottomLeft[z]); //Bottom left boxBatch.Normal3f(bbl[x], bbl[y], bbl[z]); boxBatch.MultiTexCoord2f(0, 0.0f, 0.0f); boxBatch.Vertex3f(backBottomLeft[x], backBottomLeft[y], backBottomLeft[z]); //Bottom right boxBatch.Normal3f(bbr[x], bbr[y], bbr[z]); boxBatch.MultiTexCoord2f(0, 1.0f, 0.0f); boxBatch.Vertex3f(backBottomRight[x], backBottomRight[y], backBottomRight[z]); //Right triangle //Bottom right boxBatch.Normal3f(bbr[x], bbr[y], bbr[z]); boxBatch.MultiTexCoord2f(0, 1.0f, 0.0f); boxBatch.Vertex3f(backBottomRight[x], backBottomRight[y], backBottomRight[z]); //Top right boxBatch.Normal3f(fbr[x], fbr[y], fbr[z]); boxBatch.MultiTexCoord2f(0, 1.0f, 1.0f); boxBatch.Vertex3f(frontBottomRight[x], frontBottomRight[y], frontBottomRight[z]); //Top left boxBatch.Normal3f(fbl[x], fbl[y], fbl[z]); boxBatch.MultiTexCoord2f(0, 0.0f, 1.0f); boxBatch.Vertex3f(frontBottomLeft[x], frontBottomLeft[y], frontBottomLeft[z]); #else //Front //Left triangle //Top left boxBatch.Normal3f(frontLeftNormal[x], frontLeftNormal[y], frontLeftNormal[z]); boxBatch.MultiTexCoord2f(0, 0.0f, 1.0f); boxBatch.Vertex3f(frontTopLeft[x], frontTopLeft[y], frontTopLeft[z]); //Bottom left boxBatch.Normal3f(frontLeftNormal[x], frontLeftNormal[y], frontLeftNormal[z]); boxBatch.MultiTexCoord2f(0, 0.0f, 0.0f); boxBatch.Vertex3f(frontBottomLeft[x], frontBottomLeft[y], frontBottomLeft[z]); //Bottom right boxBatch.Normal3f(frontLeftNormal[x], frontLeftNormal[y], frontLeftNormal[z]); boxBatch.MultiTexCoord2f(0, 1.0f, 0.0f); boxBatch.Vertex3f(frontBottomRight[x], frontBottomRight[y], frontBottomRight[z]); //Right triangle //Bottom right boxBatch.Normal3f(frontRightNormal[x], frontRightNormal[y], frontRightNormal[z]); boxBatch.MultiTexCoord2f(0, 1.0f, 0.0f); boxBatch.Vertex3f(frontBottomRight[x], frontBottomRight[y], frontBottomRight[z]); //Top right boxBatch.Normal3f(frontRightNormal[x], frontRightNormal[y], frontRightNormal[z]); boxBatch.MultiTexCoord2f(0, 1.0f, 1.0f); boxBatch.Vertex3f(frontTopRight[x], frontTopRight[y], frontTopRight[z]); //Top left boxBatch.Normal3f(frontRightNormal[x], frontRightNormal[y], frontRightNormal[z]); boxBatch.MultiTexCoord2f(0, 0.0f, 1.0f); boxBatch.Vertex3f(frontTopLeft[x], frontTopLeft[y], frontTopLeft[z]); //Right Side //Left triangle //Top left boxBatch.Normal3f(rightSideLeftNormal[x], rightSideLeftNormal[y], rightSideLeftNormal[z]); boxBatch.MultiTexCoord2f(0, 0.0f, 1.0f); boxBatch.Vertex3f(frontTopRight[x], frontTopRight[y], frontTopRight[z]); //Bottom left boxBatch.Normal3f(rightSideLeftNormal[x], rightSideLeftNormal[y], rightSideLeftNormal[z]); boxBatch.MultiTexCoord2f(0, 0.0f, 0.0f); boxBatch.Vertex3f(frontBottomRight[x], frontBottomRight[y], frontBottomRight[z]); //Bottom right boxBatch.Normal3f(rightSideLeftNormal[x], rightSideLeftNormal[y], rightSideLeftNormal[z]); boxBatch.MultiTexCoord2f(0, 1.0f, 0.0f); boxBatch.Vertex3f(backBottomRight[x], backBottomRight[y], backBottomRight[z]); //Right triangle //Bottom right boxBatch.Normal3f(rightSideRightNormal[x], rightSideRightNormal[y], rightSideRightNormal[z]); boxBatch.MultiTexCoord2f(0, 1.0f, 0.0f); boxBatch.Vertex3f(backBottomRight[x], backBottomRight[y], backBottomRight[z]); //Top right boxBatch.Normal3f(rightSideRightNormal[x], rightSideRightNormal[y], rightSideRightNormal[z]); boxBatch.MultiTexCoord2f(0, 1.0f, 1.0f); boxBatch.Vertex3f(backTopRight[x], backTopRight[y], backTopRight[z]); //Top left boxBatch.Normal3f(rightSideRightNormal[x], rightSideRightNormal[y], rightSideRightNormal[z]); boxBatch.MultiTexCoord2f(0, 0.0f, 1.0f); boxBatch.Vertex3f(frontTopRight[x], frontTopRight[y], frontTopRight[z]); //Back //Left triangle //Top left boxBatch.Normal3f(backLeftNormal[x], backLeftNormal[y], backLeftNormal[z]); boxBatch.MultiTexCoord2f(0, 0.0f, 1.0f); boxBatch.Vertex3f(backTopRight[x], backTopRight[y], backTopRight[z]); //Bottom left boxBatch.Normal3f(backLeftNormal[x], backLeftNormal[y], backLeftNormal[z]); boxBatch.MultiTexCoord2f(0, 0.0f, 0.0f); boxBatch.Vertex3f(backBottomRight[x], backBottomRight[y], backBottomRight[z]); //Bottom right boxBatch.Normal3f(backLeftNormal[x], backLeftNormal[y], backLeftNormal[z]); boxBatch.MultiTexCoord2f(0, 1.0f, 0.0f); boxBatch.Vertex3f(backBottomLeft[x], backBottomLeft[y], backBottomLeft[z]); //Right triangle //Bottom right boxBatch.Normal3f(backRightNormal[x], backRightNormal[y], backRightNormal[z]); boxBatch.MultiTexCoord2f(0, 1.0f, 0.0f); boxBatch.Vertex3f(backBottomLeft[x], backBottomLeft[y], backBottomLeft[z]); //Top right boxBatch.Normal3f(backRightNormal[x], backRightNormal[y], backRightNormal[z]); boxBatch.MultiTexCoord2f(0, 1.0f, 1.0f); boxBatch.Vertex3f(backTopLeft[x], backTopLeft[y], backTopLeft[z]); //Top left boxBatch.Normal3f(backRightNormal[x], backRightNormal[y], backRightNormal[z]); boxBatch.MultiTexCoord2f(0, 0.0f, 1.0f); boxBatch.Vertex3f(backTopRight[x], backTopRight[y], backTopRight[z]); //Left Side //Left triangle //Top left boxBatch.Normal3f(leftSideLeftNormal[x], leftSideLeftNormal[y], leftSideLeftNormal[z]); boxBatch.MultiTexCoord2f(0, 0.0f, 1.0f); boxBatch.Vertex3f(backTopLeft[x], backTopLeft[y], backTopLeft[z]); //Bottom left boxBatch.Normal3f(leftSideLeftNormal[x], leftSideLeftNormal[y], leftSideLeftNormal[z]); boxBatch.MultiTexCoord2f(0, 0.0f, 0.0f); boxBatch.Vertex3f(backBottomLeft[x], backBottomLeft[y], backBottomLeft[z]); //Bottom right boxBatch.Normal3f(leftSideLeftNormal[x], leftSideLeftNormal[y], leftSideLeftNormal[z]); boxBatch.MultiTexCoord2f(0, 1.0f, 0.0f); boxBatch.Vertex3f(frontBottomLeft[x], frontBottomLeft[y], frontBottomLeft[z]); //Right triangle //Bottom right boxBatch.Normal3f(leftSideRightNormal[x], leftSideRightNormal[y], leftSideRightNormal[z]); boxBatch.MultiTexCoord2f(0, 1.0f, 0.0f); boxBatch.Vertex3f(frontBottomLeft[x], frontBottomLeft[y], frontBottomLeft[z]); //Top right boxBatch.Normal3f(leftSideRightNormal[x], leftSideRightNormal[y], leftSideRightNormal[z]); boxBatch.MultiTexCoord2f(0, 1.0f, 1.0f); boxBatch.Vertex3f(frontTopLeft[x], frontTopLeft[y], frontTopLeft[z]); //Top left boxBatch.Normal3f(leftSideRightNormal[x], leftSideRightNormal[y], leftSideRightNormal[z]); boxBatch.MultiTexCoord2f(0, 0.0f, 1.0f); boxBatch.Vertex3f(backTopLeft[x], backTopLeft[y], backTopLeft[z]); //Top //Left triangle //Top left boxBatch.Normal3f(topLeftNormal[x], topLeftNormal[y], topLeftNormal[z]); boxBatch.MultiTexCoord2f(0, 0.0f, 1.0f); boxBatch.Vertex3f(backTopLeft[x], backTopLeft[y], backTopLeft[z]); //Bottom left boxBatch.Normal3f(topLeftNormal[x], topLeftNormal[y], topLeftNormal[z]); boxBatch.MultiTexCoord2f(0, 0.0f, 0.0f); boxBatch.Vertex3f(frontTopLeft[x], frontTopLeft[y], frontTopLeft[z]); //Bottom right boxBatch.Normal3f(topLeftNormal[x], topLeftNormal[y], topLeftNormal[z]); boxBatch.MultiTexCoord2f(0, 1.0f, 0.0f); boxBatch.Vertex3f(frontTopRight[x], frontTopRight[y], frontTopRight[z]); //Right triangle //Bottom right boxBatch.Normal3f(topRightNormal[x], topRightNormal[y], topRightNormal[z]); boxBatch.MultiTexCoord2f(0, 1.0f, 0.0f); boxBatch.Vertex3f(frontTopRight[x], frontTopRight[y], frontTopRight[z]); //Top right boxBatch.Normal3f(topRightNormal[x], topRightNormal[y], topRightNormal[z]); boxBatch.MultiTexCoord2f(0, 1.0f, 1.0f); boxBatch.Vertex3f(backTopRight[x], backTopRight[y], backTopRight[z]); //Top left boxBatch.Normal3f(topRightNormal[x], topRightNormal[y], topRightNormal[z]); boxBatch.MultiTexCoord2f(0, 0.0f, 1.0f); boxBatch.Vertex3f(backTopLeft[x], backTopLeft[y], backTopLeft[z]); //Bottom //Left triangle //Top left boxBatch.Normal3f(bottomLeftNormal[x], bottomLeftNormal[y], bottomLeftNormal[z]); boxBatch.MultiTexCoord2f(0, 0.0f, 1.0f); boxBatch.Vertex3f(frontBottomLeft[x], frontBottomLeft[y], frontBottomLeft[z]); //Bottom left boxBatch.Normal3f(bottomLeftNormal[x], bottomLeftNormal[y], bottomLeftNormal[z]); boxBatch.MultiTexCoord2f(0, 0.0f, 0.0f); boxBatch.Vertex3f(backBottomLeft[x], backBottomLeft[y], backBottomLeft[z]); //Bottom right boxBatch.Normal3f(bottomLeftNormal[x], bottomLeftNormal[y], bottomLeftNormal[z]); boxBatch.MultiTexCoord2f(0, 1.0f, 0.0f); boxBatch.Vertex3f(backBottomRight[x], backBottomRight[y], backBottomRight[z]); //Right triangle //Bottom right boxBatch.Normal3f(bottomRightNormal[x], bottomRightNormal[y], bottomRightNormal[z]); boxBatch.MultiTexCoord2f(0, 1.0f, 0.0f); boxBatch.Vertex3f(backBottomRight[x], backBottomRight[y], backBottomRight[z]); //Top right boxBatch.Normal3f(bottomRightNormal[x], bottomRightNormal[y], bottomRightNormal[z]); boxBatch.MultiTexCoord2f(0, 1.0f, 1.0f); boxBatch.Vertex3f(frontBottomRight[x], frontBottomRight[y], frontBottomRight[z]); //Top left boxBatch.Normal3f(bottomRightNormal[x], bottomRightNormal[y], bottomRightNormal[z]); boxBatch.MultiTexCoord2f(0, 0.0f, 1.0f); boxBatch.Vertex3f(frontBottomLeft[x], frontBottomLeft[y], frontBottomLeft[z]); #endif boxBatch.End(); }