Matrix4x3-未测试-头文件

写这个,实现了除透视投影的其他大多数东西,反射,切变,缩放,平移,旋转,矩阵还真是一个好工具.连续研究这些东西大概三个星期了,真有点恶心了.C++叫我忘得差不多了,用C#永久了真的会白痴许多的.游戏开发渐渐会降低开发者的门槛,真正要做到牛还是要脚踏实地一步一步学习好多东西的.先去继续研究别的吧,而后再决定是不是杀回来.图形学方向还真多,先把数学这块学好吧,之后就简单多了.是吧,不然看别的,是干眼馋啊.

#ifndef MATRIX4X3_H_
#define MATRIX4X3_H_

class Vector3 ;
class EulerAngles ;
class Quaternion ;
class RotationMatrix ;

class Matrix4x3
{
private:
	enum AxisName
	{
		X,
		Y,
		Z,
	} ;

public:
	float m11, m12, m13 ;
	float m21, m22, m23 ;
	float m31, m32, m33 ;
	float tx, ty, tz ;

	void Identity() ;

	void ZeroTranslation() ;
	void SetTranslation(const Vector3& d) ;
	void SetUpTranslation(const Vector3& d) ;

	void SetUpLocalToParent(const Vector3& pos, const EulerAngles& orient) ;
	void SetUpLocalToParent(const Vector3& pos, const RotationMatrix& orient) ;
	void SetUpParentToLocal(const Vector3& pos, const EulerAngles& orient) ;
	void SetUpParentToLocal(const Vector3& pos, const RotationMatrix& orient) ;

	void SetUpRotate(AxisName axisName, float theta) ;

	void SetUpRotate(const Vector3& axis, float theta) ;

	void FromQuaternion(const Quaternion& q) ;

	void SetUpScale(const Vector3& s) ;

	void SetUpScaleAlongAxis(const Vector3& axis, float k) ;

	void SetUpShera(AxisName axisName, float s, float t) ;

	void SetUpProject(const Vector3& n) ;

	void SetUpReflect(AxisName axisName, float k = 0) ;

	void SetUpReflect(const Vector3& n) ;

	static float Determinant(const Matrix4x3& m) ;

	static Matrix4x3 Inverse(const Matrix4x3& m) ;
} ;

#endif


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值