OpenGL 仿射变换 齐次坐标// class NRHomogeneousPoint2D { public: float x, y, ho; NRHomogeneousPoint2D(); }; class NRHomogeneousPoint3D { public: float x, y, z, ho ; NRHomogeneousPoint3D(); }; class NRHomogeneousVector2D { public: float x, y, ho; NRHomogeneousVector2D(); }; class NRHomogeneousVector3D { public: float x, y, z, ho ; NRHomogeneousVector3D(); }; //仿射变换/// class NRMatrix2D { public: float matrixArray[3][3]; NRMatrix2D(); void Identity(); float* operator [](int i); NRMatrix2D operator *(NRMatrix2D rhs); NRHomogeneousPoint2D operator*( NRHomogeneousPoint2D rhs); }; class NRTranslateTransform2D { public: NRMatrix2D translateMatrix; NRTranslateTransform2D(); void Translate(float x, float y); void Identity(); NRHomogeneousPoint2D operator*( NRHomogeneousPoint2D rhs); }; class NRScaleTransform2D { public: NRMatrix2D scaleMatrix; NRScaleTransform2D(); void Scale(float x, float y); void Identity(); NRHomogeneousPoint2D operator*( NRHomogeneousPoint2D rhs); }; class NRRotateTransform2D { public: NRMatrix2D rotateMatrix ; NRRotateTransform2D(); void Rotate(float angle); void Identity(); NRHomogeneousPoint2D operator*( NRHomogeneousPoint2D rhs); }; class NRClipTransform2D { public: NRMatrix2D clipMatrix ; NRClipTransform2D() ; void Clip(float h, float g) ; void Identity() ; NRHomogeneousPoint2D operator*( NRHomogeneousPoint2D rhs) ; }; class NRCompositeTransform2D { public: NRMatrix2D compositeMatrix ; NRCompositeTransform2D(); void AddTransform(NRTranslateTransform2D transLateTransform); void AddTransform(NRScaleTransform2D scaleTransform); void AddTransform(NRRotateTransform2D rotateTransform); void AddTransform(NRClipTransform2D clipTransform) ; void Translate(float x, float y) ; void Scale(float x, float y) ; void Rotate(float angle) ; void Clip(float h, float g) ; void Identity(); NRHomogeneousPoint2D operator*( NRHomogeneousPoint2D rhs); }; </textare