⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 transform.h

📁 桌面台球3D 开发环境VC 库DIRECTX8.1以上
💻 H
字号:
#if !defined	(TRANSFORM_H)
#define			 TRANSFORM_H

struct VECTOR
{
  float x, y, z;
};

struct TrackballStruct
{
	float  centerX, centerY;   // sphere center
	float  radius ;            // sphere radius   
	float  pointX1, pointY1;   // the first  mouse  position
	float  pointX2, pointY2;   // the second mouse  position
	float  pointX3, pointY3;   // release mouse     position
};

struct EYE
{
  VECTOR origin;  // eye point
  VECTOR center;  // refrence point
  VECTOR up;      // up vector
  VECTOR axisX;   // X-Axis vector of the eye coordinate
  VECTOR axisY;   // Y-Axis vector of the eye coordinate
  VECTOR axisZ;   // Z-Axis vector of the eye coordinate
};

//---------------- vector & matrix operation -----------------------

// V = ( x, y, z )  or  V = A 
void VectorCopy(VECTOR & V, float x, float y, float z);
void VectorCopy(VECTOR & V, VECTOR A);

// V = A + B
void VectorAdd(VECTOR & V, VECTOR A, VECTOR B);

// V = A - B
void VectorSub(VECTOR & V, VECTOR A, VECTOR B);

// V = s * V
void VectorScale(VECTOR & V, float s);

// V = A x B
void VectorCross(VECTOR & V, VECTOR A, VECTOR B);

// dot = A . B
void VectorDot(float & dot, VECTOR A, VECTOR B);

// len = |V|
void VectorLength(float & len, VECTOR V);

// V = V/(|V|)
void VectorNormalize(VECTOR & V);

// M = M1*M2
void MultMatrixf( float *M,  float *M1, float *M2,
					 int m1Row, int m1Col, int m2Row, int m2Col);

// transpose matrix
void TransMatrix( float *M, int row, int col);

// "inverse" of matrix M
int  InvMatrixf(float *M, int n);

//---------------- world coordinate -------------------------------------

// transform point P(x,y,z) from object coordinate to world coordinate
void ObjectToWorld(float point[3], float result[3]);

// transform point P(x,y,z) from world coordinate to object coordinate
void WorldToObject(float point[3], float result[3]);

// translate in world coordinate, d[3]=(dx, dy, dz)
void WorldTranslate(float d[3]); 

// rotate in world coordinate
void WorldRotate(float point[3], float normal[3], float angle);

//----------------- eye coordinate -------------------------------------- 
// eye is in the world coordinate

// calculate eye axes vectors
void SetEyeStruct(float eyeX,    float eyeY,    float eyeZ, 
					 float centerX, float centerY, float centerZ, 
					 float upX,     float upY,     float upZ,
					 EYE  & eye);

// transform point P(x,y,z) from world coordinate to eye coordinate
void WorldToEye(float point[3], float result[3], EYE eye);

// transform point P(x,y,z) from eye coordinate to world coordinate
void EyeToWorld(float point[3], float result[3], EYE eye);

// translate in eye coordinate, d[3]=(dx, dy, dz)
void EyeTranslate(float d[3], EYE eye);

// rotate in eye coordinate
void EyeRotate(float point[3], float normal[3], float angle, 
				  EYE eye);

//TrackBall Algorithm
void Trackball(int   event,   float radius ,
				  float centerX, float centerY, float mouseX, float mouseY,
				  float &axisX , float &axisY , float &axisZ, float &angle );

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -