计算机图形学Word文档格式.docx
- 文档编号:20507694
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:16
- 大小:42.33KB
计算机图形学Word文档格式.docx
《计算机图形学Word文档格式.docx》由会员分享,可在线阅读,更多相关《计算机图形学Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
//Overrides
//ClassWizardgeneratedvirtualfunctionoverrides
//{{AFX_VIRTUAL(CMygroup7View)
public:
virtualvoidOnDraw(CDC*pDC);
//overriddentodrawthisview
virtualBOOLPreCreateWindow(CREATESTRUCT&
cs);
protected:
virtualBOOLOnPreparePrinting(CPrintInfo*pInfo);
virtualvoidOnBeginPrinting(CDC*pDC,CPrintInfo*pInfo);
virtualvoidOnEndPrinting(CDC*pDC,CPrintInfo*pInfo);
//}}AFX_VIRTUAL
//Implementation
voidClearMatrix(doubleA[4][4]);
//清除矩阵函数
voidCalculate(doubleP[][4],doubleT[][4]);
//两个矩阵相乘函数
doublePt3D[8][4];
doublePt2D[8][2];
intMaxY;
intMaxX;
intFt[6][5];
voidTransform3DTo2D(constdoubleP3D[][4],doubleP2D[][2],constintn);
//三维变二维函数
voidReadPoint();
//读入顶点坐标函数
voidReadFace();
//读入面坐标函数
voidKeepOriginalMatrix(doubleOrig[][4],doubleDest[][4]);
voidGetMaxY();
//获得屏幕的最大y值函数
voidGetMaxX();
//获得屏幕的最大x值函数
voidDrawTriView(doubleTri[8][4]);
//绘制三视图调用函数
voidDrawLine(CPointp[],intnum);
//绘制多边形边线函数
voidDrawCube();
//绘制立方体函数
virtual~CMygroup7View();
#ifdef_DEBUG
virtualvoidAssertValid()const;
virtualvoidDump(CDumpContext&
dc)const;
#endif
//Generatedmessagemapfunctions
//{{AFX_MSG(CMygroup7View)
afx_msgvoidOnDrawHView();
afx_msgvoidOnDrawWView();
afx_msgvoidOnDrawVView();
afx_msgvoidOnDrawresource();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
#ifndef_DEBUG//debugversioningroup7View.cpp
inlineCMygroup7Doc*CMygroup7View:
:
GetDocument()
{return(CMygroup7Doc*)m_pDocument;
}
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
//MicrosoftVisualC++willinsertadditionaldeclarationsimmediatelybeforethepreviousline.
#endif//!
defined(AFX_group7VIEW_H__15A74253_C6B0_462A_83DC_3F71E576EE24__INCLUDED_)
group7View.cpp文件
//group7View.cpp:
implementationoftheCMygroup7Viewclass
//
#include"
stdafx.h"
group7.h"
group7Doc.h"
group7View.h"
#defineROUND(a)int(a+0.5)//四舍五入
#definePI3.1415926//圆周率
math.h"
//数学头文件
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
//CMygroup7View
IMPLEMENT_DYNCREATE(CMygroup7View,CView)
BEGIN_MESSAGE_MAP(CMygroup7View,CView)
//{{AFX_MSG_MAP(CMygroup7View)
ON_COMMAND(ID_DRAW_H_VIEW,OnDrawHView)
ON_COMMAND(ID_DRAW_W_VIEW,OnDrawWView)
ON_COMMAND(ID_DRAW_V_VIEW,OnDrawVView)
ON_COMMAND(ID_DRAWRESOURCE,OnDrawresource)
//}}AFX_MSG_MAP
//Standardprintingcommands
ON_COMMAND(ID_FILE_PRINT,CView:
OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT,CView:
ON_COMMAND(ID_FILE_PRINT_PREVIEW,CView:
OnFilePrintPreview)
END_MESSAGE_MAP()
//CMygroup7Viewconstruction/destruction
CMygroup7View:
CMygroup7View()
//TODO:
addconstructioncodehere
}
~CMygroup7View()
BOOLCMygroup7View:
PreCreateWindow(CREATESTRUCT&
cs)
ModifytheWindowclassorstylesherebymodifying
//theCREATESTRUCTcs
returnCView:
PreCreateWindow(cs);
//CMygroup7Viewdrawing
voidCMygroup7View:
OnDraw(CDC*pDC)
//CMygroup7Doc*pDoc=GetDocument();
//ASSERT_VALID(pDoc);
GetMaxX();
GetMaxY();
CPenMyPen3d,MyPen2d,MyPen,*OldPen;
MyPen3d.CreatePen(PS_SOLID,1,RGB(0,0,255));
OldPen=pDC->
SelectObject(&
MyPen3d);
pDC->
MoveTo(MaxX/4,MaxY/2);
//绘制y轴
LineTo(MaxX/2-25,MaxY/2);
TextOut(MaxX/2-50,MaxY/2-20,"
y"
);
//绘制z轴
LineTo(MaxX/4,0);
TextOut(MaxX/4-20,10,"
z"
//绘制x轴
LineTo(MaxX/4-MaxY/2,MaxY);
//夹角为135°
TextOut(MaxX/4-MaxY/2+70,MaxY-30,"
x"
TextOut(MaxX/4-20,MaxY/2-10,"
0"
TextOut(20,20,"
长方体"
SelectObject(OldPen);
MyPen3d.DeleteObject();
MyPen.CreatePen(PS_SOLID,3,RGB(0,255,0));
MyPen);
MoveTo(MaxX/2-25,0);
//绘制分割线
LineTo(MaxX/2-25,MaxY);
MyPen.DeleteObject();
if(ViewKind==1)
{
MyPen2d.CreatePen(PS_SOLID,1,RGB(0,0,255));
OldPen=pDC->
MyPen2d);
pDC->
MoveTo(MaxX/2-25,MaxY/2);
LineTo(3*MaxX/4,MaxY/2);
TextOut(MaxX/2-15,MaxY/2-20,"
MoveTo(3*MaxX/4,MaxY/2);
LineTo(3*MaxX/4,0);
TextOut(3*MaxX/4-20,10,"
//绘制右y轴
LineTo(MaxX,MaxY/2);
TextOut(MaxX-20,MaxY/2-20,"
//绘制下y轴
LineTo(3*MaxX/4,MaxY);
TextOut(3*MaxX/4-20,MaxY-20,"
TextOut(MaxX/2+10,20,"
三视图"
MyPen2d.DeleteObject();
else
投影图"
CMygroup7Doc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
adddrawcodefornativedatahere
//CMygroup7Viewprinting
OnPreparePrinting(CPrintInfo*pInfo)
//defaultpreparation
returnDoPreparePrinting(pInfo);
OnBeginPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/)
addextrainitializationbeforeprinting
OnEndPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/)
addcleanupafterprinting
//CMygroup7Viewdiagnostics
AssertValid()const
CView:
AssertValid();
Dump(CDumpContext&
dc)const
Dump(dc);
CMygroup7Doc*CMygroup7View:
GetDocument()//non-debugversionisinline
ASSERT(m_pDocument->
IsKindOf(RUNTIME_CLASS(CMygroup7Doc)));
return(CMygroup7Doc*)m_pDocument;
#endif//_DEBUG
//CMygroup7Viewmessagehandlers
OnDrawHView()//绘制H面
{
if(ViewKind!
=1)
ViewKind=1;
RedrawWindow();
ReadPoint();
ReadFace();
DrawCube();
doubleTH[4][4];
//俯视图变换矩阵
doublePtemp[8][4];
ClearMatrix(TH);
TH[0][0]=1;
TH[1][2]=-1;
TH[3][2]=-50;
TH[3][3]=1;
KeepOriginalMatrix(Pt3D,Ptemp);
Calculate(Ptemp,TH);
DrawTriView(Ptemp);
Addyourcommandhandlercodehere
OnDrawWView()//绘制W面
doubleTW[4][4];
ClearMatrix(TW);
TW[1][0]=-1;
TW[2][2]=1;
TW[3][0]=-50;
TW[3][3]=1;
Calculate(Ptemp,TW);
DrawCube()
CPointp[5];
//定义多边形顶点数组
Transform3DTo2D(Pt3D,Pt2D,8);
intTotalEdge,PointNumber;
for(intface=0;
face<
6;
face++)
TotalEdge=Ft[face][0];
//每个面的总边数
for(intedge=1;
edge<
=TotalEdge;
edge++)//边循环
{
PointNumber=Ft[face][edge];
//面的顶点号
p[edge]=CPoint(ROUND(MaxX/4+Pt2D[PointNumber][0]),ROUND(MaxY/2+Pt2D[PointNumber][1]));
}
DrawLine(p,TotalEdge);
//绘制多边形
DrawLine(CPointp[],intnum)
CClientDCdc(this);
for(inti=1;
i<
=num;
i++)
if(i==1)
dc.MoveTo(p[1]);
else
dc.LineTo(p[i]);
dc.LineTo(p[1]);
DrawTriView(doubleTri[][4])
p[edge]=CPoint(ROUND(3*MaxX/4-Tri[PointNumber][0]),ROUND(MaxY/2-Tri[PointNumber][2]));
DrawLine(p,TotalEdge);
GetMaxX()
CRectRect;
GetClientRect(&
Rect);
MaxX=Rect.right;
GetMaxY()
MaxY=Rect.bottom;
KeepOriginalMatrix(doubleOrig[][4],doubleDest[][4])
inti,j;
for(i=0;
8;
for(j=0;
j<
4;
j++)
Dest[i][j]=Orig[i][j];
ReadFace()
Ft[0][0]=4;
Ft[0][1]=0;
Ft[0][2]=1;
Ft[0][3]=2;
Ft[0][4]=3;
Ft[1][0]=4;
Ft[1][1]=3;
Ft[1][2]=0;
Ft[1][3]=4;
Ft[1][4]=7;
Ft[2][0]=4;
Ft[2][1]=7;
Ft[2][2]=4;
Ft[2][3]=5;
Ft[2][4]=6;
Ft[3][0]=4;
Ft[3][1]=6;
Ft[3][2]=2;
Ft[3][3]=1;
Ft[3][4]=5;
Ft[4][0]=4;
Ft[4][1]=5;
Ft[4][2]=1;
Ft[4][3]=0;
Ft[4][4]=4;
Ft[5][0]=4;
Ft[5][1]=6;
Ft[5][2]=2;
Ft[5][3]=3;
Ft[5][4]=7;
ReadPoint()
Pt3D[0][0]=0;
Pt3D[0][1]=0;
Pt3D[0][2]=0;
Pt3D[0][3]=1;
Pt3D[1][0]=100;
Pt3D[1][1]=0;
Pt3D[1][2]=0;
Pt3D[1][3]=1;
Pt3D[2][0]=100;
Pt3D[2][1]=200;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 图形学