Exemplo n.º 1
1
namespace Bread
{
	sVector3 sVector3::ZERO = sVector3(0.0f, 0.0f, 0.0f);
	sVector3 sVector3::X_BASIS = sVector3(1.0f, 0.0f, 0.0f);
	sVector3 sVector3::Y_BASIS = sVector3(0.0f, 1.0f, 0.0f);
	sVector3 sVector3::Z_BASIS = sVector3(0.0f, 0.0f, 1.0f);


}
Exemplo n.º 2
0
void GetMouseRay(sVector3 &pos1, sVector3  &pos2, sVector3 &dir) {
	int myX, myY;
	glfwGetMousePos(&myX,&myY);
	
	gCamera.Render();
	
	double mvmatrix[16];
	double projmatrix[16];
	int viewport[4];
	double dx,dy,dz;
	
	
	glGetIntegerv(GL_VIEWPORT, viewport);
	glGetDoublev(GL_MODELVIEW_MATRIX,mvmatrix);
	glGetDoublev(GL_PROJECTION_MATRIX, projmatrix);
	
	double mouseY = viewport[3] - myY;
	
	gluUnProject((double)myX, (double)mouseY, 0.0, mvmatrix, projmatrix, viewport, &dx, &dy, &dz);
	pos1 = sVector3((float)dx,(float)dy,(float)dz);
	
	gluUnProject((double)myX, (double)mouseY, 1.0, mvmatrix, projmatrix, viewport, &dx, &dy, &dz);
	pos2  = sVector3((float)dx,(float)dy,(float)dz);
	
	float x,y,z, mag;
	
	x = pos2.x - pos1.x;
	y = pos2.y - pos1.y;
	z = pos2.z - pos1.z;
	
	mag = sqrt(x*x + y*y + z * z);
	
	x/= mag;
	y/= mag;
	z/= mag;
	dir = sVector3(x,y,z);
	
	
}
Exemplo n.º 3
0
	void cBatchRenderManager::push(sSphere const* sphere, DWORD color)
	{
		//
		int vertNum = 50;
		float unitAngle = cMath::TWOPI/(float)vertNum;
		//
		sVector3 pos(1.0f, 0.0f, 0.0f);
		sVector3 out, startV, endV;
		addMulVec3(sphere->m_center, pos, sphere->m_radius, startV);
		//
		sQuaternion quat;
		float angle = 0.0f;
		for (int i = 0; i <= vertNum; ++i, angle += unitAngle)
		{
			rotQuat(pos, sVector3(0.0f, 1.0f, 0.0f), angle, out);
			addMulVec3(sphere->m_center, out, sphere->m_radius, endV);

			push(&startV, &endV, color);
			startV = endV;
		}
	}