Beispiel #1
0
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();
}
Beispiel #2
0
const Vect Vect::getNorm()const
{
	Vect norming = Vect(this->m);
	norming.norm();

	return norming;
};
Beispiel #3
0
/**
* @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 );

}
Beispiel #5
0
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);
}
Beispiel #7
0
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();
}