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

📄 glmath.h

📁 由TIN生成DEM
💻 H
字号:
/////////////////////////////////////////////////////////////////////////////
// glMath.h : Header file; Defines the class definitions
//
// glOOP (OpenGL Object Oriented Programming library)
// Copyright (c) Craig Fahrnbach 1997, 1998
//
// OpenGL is a registered trademark of Silicon Graphics
//
//
// This program is provided for educational and personal use only and
// is provided without guarantee or warrantee expressed or implied.
//
// Commercial use is strickly prohibited without written permission
// from ImageWare Development.
//
// This program is -not- in the public domain.
//
/////////////////////////////////////////////////////////////////////////////

#ifndef __GLMATH__
#define __GLMATH__

#include <GL/gl.h>
/////////////////////////////////////////////////////////////////////////////
// glMath Definitions:
//
#define Pi				3.14159265
#define PiOver180		1.74532925199433E-002
#define PiUnder180		5.72957795130823E+001
#define SMALL_NUMBER	0.00001
#define LARGE_NUMBER	1E20

#define X				0	// Used for array index
#define Y				1
#define Z				2
#define W				3


/////////////////////////////////////////////////////////////////////////////
// Type Definitions:
//
typedef GLfloat		VECTORF[4];
typedef GLdouble	Matx4x4[4][4];		


/////////////////////////////////////////////////////////////////////////////
// External function prototypes:
//

extern GLfloat Radiansf(GLfloat Angle);
extern GLfloat Degreesf(GLfloat Angle);
extern GLfloat Cosf(GLfloat Angle);
extern GLfloat Sinf(GLfloat Angle);
extern GLfloat Powerf(GLfloat Base, int Exponent);
extern GLfloat Sqrf(GLfloat x);
extern int Roundf(GLfloat x);

extern GLdouble Radiansd(GLdouble Angle);
extern GLdouble Degreesd(GLdouble Angle);
extern GLdouble Cosd(GLdouble Angle);
extern GLdouble Sind(GLdouble Angle);


// Vector Functions
extern void VecClear3f(VECTORF A);
extern void VecClear4f(VECTORF A);

extern void Vec3f(GLfloat r, GLfloat s, GLfloat t, VECTORF A);
extern void UnVec3f(VECTORF A, GLfloat *r, GLfloat *s, GLfloat *t);
extern void Vec4f(GLfloat r, GLfloat s, GLfloat t, GLfloat u, VECTORF A);
extern void UnVec4f(VECTORF A, GLfloat *r, GLfloat *s, GLfloat *t, GLfloat *u);

extern void VecCopy3f(VECTORF A, VECTORF B);
extern void VecCopy4f(VECTORF A, VECTORF B);

extern void VecSubf(VECTORF A, VECTORF B, VECTORF C);
extern void VecAddf(VECTORF A, VECTORF B, VECTORF C);
extern void VecAdd3f(VECTORF A, VECTORF B, VECTORF C, VECTORF D);
extern GLfloat VecDiFFf(VECTORF A, VECTORF B);

extern GLfloat VecDotf(VECTORF A, VECTORF B);
extern void VecCrossf(VECTORF A, VECTORF B, VECTORF C);
extern GLfloat VecLenf(VECTORF A);
extern void VecNormalizef(VECTORF A);
extern void CalNormalf(VECTORF A, VECTORF B, VECTORF C, VECTORF N);


// Affine Matrix Transformation Funcitons
extern void ZeroMatrix(Matx4x4 A);
extern void Translate3D(float tx, float ty, float tz, Matx4x4 A);
extern void Scale3D(float sx, float sy, float sz, Matx4x4 A);
extern void Rotate3D(int m, float Theta, Matx4x4 A);
extern void MultiplyMatricies(Matx4x4 A, Matx4x4 B, Matx4x4 C);
extern void MatrixCopy(Matx4x4 A, Matx4x4 B);
extern void TransposeMatrix(Matx4x4 A);
extern void PrepareMatrix(float Px, float Py, float Pz,
						  float Sx, float Sy, float Sz,
						  float Rx, float Ry, float Rz,
						  float Tx, float Ty, float Tz,
						  Matx4x4 XForm);
extern void PrepareInvMatrix(float Px, float Py, float Pz,
							 float Sx, float Sy, float Sz,
							 float Rx, float Ry, float Rz,
							 float Tx, float Ty, float Tz,
							 Matx4x4 XForm);
extern void VecTransformf(VECTORF sx, VECTORF dx, Matx4x4 M);


// Misc OpenGL Related Functions
extern void glMatrixTo4x4(GLdouble M[16], Matx4x4 A);
extern void Matx4x4ToglMatrix(Matx4x4 A, GLdouble M[16]);
extern void Transformf(VECTORF sx, VECTORF dx, GLdouble M[16]);


#endif // Include/Define

⌨️ 快捷键说明

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