Esempio n. 1
0
void TerrainRenderer::render(){
    updateMatricies();

    float cam_x, cam_y, cam_z;
    cameraManager->getPos(&cam_x, &cam_y, &cam_z);






    //Test code
    
    /*QuadTreeNode *cursor = quadTree->root;
    while(cursor->tlNode){
        cursor = cursor->tlNode;
    }
    drawHeightmap(0.0, 0.0, 1.0, cursor->heightmap);*/

    QuadTreeNode *r = quadTree->root;
    drawNode(0.0, 0.0, 1.0, r);

    /*
    printf("Camera: (%f, %f, %f)\n", cam_x, cam_y, cam_z);

    if(isVisible(0.0, 0.0, 0.0, 1.0, 1.0)){
        printf("Visible!\n");
        glutSolidCube(1.0f);
    }*/
}
Esempio n. 2
0
void Camera3D::moveRelative ( float dx, float dy, float dz )
{
	Vector3DF vec ( dx, dy, dz );
	vec *= invrot_matrix;
	to_pos += vec;
	from_pos += vec;
	updateMatricies ();
}
Esempio n. 3
0
void Camera3D::setAngles ( float ax, float ay, float az )
{
	ang_euler = Vector3DF(ax,ay,az);
	to_pos.x = from_pos.x - cos ( ang_euler.y * DEGtoRAD ) * sin ( ang_euler.x * DEGtoRAD ) * mDolly;
	to_pos.y = from_pos.y - sin ( ang_euler.y * DEGtoRAD ) * mDolly;
	to_pos.z = from_pos.z - cos ( ang_euler.y * DEGtoRAD ) * cos ( ang_euler.x * DEGtoRAD ) * mDolly;
	updateMatricies ();
}
Esempio n. 4
0
void Camera3D::moveToPos ( float tx, float ty, float tz )
{
	to_pos += Vector3DF(tx,ty,tz);

	float dx, dy, dz;
	dx = cos ( ang_euler.y * DEGtoRAD ) * sin ( ang_euler.x * DEGtoRAD ) ;
	dy = sin ( ang_euler.y * DEGtoRAD );
	dz = cos ( ang_euler.y * DEGtoRAD ) * cos ( ang_euler.x * DEGtoRAD );
	from_pos.x = to_pos.x + dx * mOrbitDist;
	from_pos.y = to_pos.y + dy * mOrbitDist;
	from_pos.z = to_pos.z + dz * mOrbitDist;
	updateMatricies ();
}
Esempio n. 5
0
void Camera3D::moveOrbit ( float ax, float ay, float az, float dd )
{
	ang_euler += Vector3DF(ax,ay,az);
	mOrbitDist += dd;
	
	float dx, dy, dz;
	dx = cos ( ang_euler.y * DEGtoRAD ) * sin ( ang_euler.x * DEGtoRAD ) ;
	dy = sin ( ang_euler.y * DEGtoRAD );
	dz = cos ( ang_euler.y * DEGtoRAD ) * cos ( ang_euler.x * DEGtoRAD );
	from_pos.x = to_pos.x + dx * mOrbitDist;
	from_pos.y = to_pos.y + dy * mOrbitDist;
	from_pos.z = to_pos.z + dz * mOrbitDist;
	updateMatricies ();
}
Esempio n. 6
0
void Camera3D::setOrbit ( float ax, float ay, float az, Vector3DF tp, float dist, float dolly )
{
	ang_euler.Set ( ax, ay, az );
	mOrbitDist = dist;
	mDolly = dolly;
	float dx, dy, dz;
	dx = cos ( ang_euler.y * DEGtoRAD ) * sin ( ang_euler.x * DEGtoRAD ) ;
	dy = sin ( ang_euler.y * DEGtoRAD );
	dz = cos ( ang_euler.y * DEGtoRAD ) * cos ( ang_euler.x * DEGtoRAD );
	from_pos.x = tp.x + dx * mOrbitDist;
	from_pos.y = tp.y + dy * mOrbitDist;
	from_pos.z = tp.z + dz * mOrbitDist;
	to_pos.x = from_pos.x - dx * mDolly;
	to_pos.y = from_pos.y - dy * mDolly;
	to_pos.z = from_pos.z - dz * mDolly;
	updateMatricies ();
}
Esempio n. 7
0
Camera3D::Camera3D ()
{	
	
	mProjType = Perspective;
	mWire = 0;

	up_dir.Set ( 0.0, 1.0, 0 );				// frustum params
	mAspect = 800/600.0;
	mDolly = 5.0;
	mFov = 40.0;	
	mNear = 0.1;
	mFar = 6000.0;
	mTile.Set ( 0, 0, 1, 1 );

	for (int n=0; n < 8; n++ ) mOps[n] = false;	
	mOps[0] = false;

//	mOps[0] = true;		
//	mOps[1] = true;

	setOrbit ( 0, 45, 0, Vector3DF(0,0,0), 120.0, 5.0 );
	updateMatricies ();

}