1 / 15
文档名称:

计算机图形学.doc

格式:doc   大小:84KB   页数:15页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

计算机图形学.doc

上传人:精品小课件 2021/3/25 文件大小:84 KB

下载得到文件列表

计算机图形学.doc

文档介绍

文档介绍:计算机图形学
——投影变换

姓名:
学号:
班级:一大班二小班
一、实现目标
将屏幕垂直划分为两部分,左半部分绘制三维坐标系和长方体, 右半部分绘制二维坐标系及三视图。首先设置成长方体,在绘制绘制三视图
二、算法设计
1. 在屏幕左半部分绘制三维坐标系。
2. 在屏幕右半部分绘制二维坐标系。
3. 读入长方体的三维顶点齐次坐标及其面坐标,并将三维顶点齐次坐标变换为相应的屏幕二维齐次坐标,并在屏幕左半部分绘制长方体。
4. 分别给主视图、俯视图和侧视图变换矩阵的非零元素赋值。
5. 将原始图形的顶点集合齐次坐标矩阵和三视图变换矩阵相乘,结果赋予变换后的三视图顶点集合齐次坐标矩阵。
其中,
主视图变换矩阵为:
俯视图变换矩阵为:
主视图变换矩阵为:
6. 根据变换后的顶点集合齐次坐标矩阵的元素绘制三视图。
三、源代码及注释

lass CMygroup7View : public CView
{
protected: // create from serialization only
CMygroupView();
DECLARE_DYNCREATE(CMygroupView)
// Attributes
public:
CMygroup7Doc* GetDocument();
// Operations
public:
int ViewKind;
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CMygroup7View)
public:
virtual void OnDraw(CDC* pDC); // overridden to draw this view
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
protected:
virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);
//}}AFX_VIRTUAL
// Implementation
public:
void ClearMatrix(double A[4][4]);//清除矩阵函数
void Calculate(double P[][4],double T[][4]);//两个矩阵相乘函数
double Pt3D[8][4];
double Pt2D[8][2];
int MaxY;
int MaxX;
int Ft[6][5];
void Transform3DTo2D(const double P3D[][4],double P2D[][2],const int n);//三维变二维函数
void ReadPoint();//读入顶点坐标函数
void ReadFace();//读入面坐标函数
void KeepOriginalMatrix(double Orig[][4],double Dest[][4]);
void GetMaxY();//获得屏幕的最大y值函数
void GetMaxX();//获得屏幕的最大x值函数
void DrawTriView(double Tri[8][4]);//绘制三视图调用函数
void DrawLine(CPoint p[],int num);//绘制多边形边线函数
void DrawCube();//绘制立方体函数
virtual ~CMygroup7View();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
protected:
// Generated message map functions
p