版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、标准总结示范文本 | Excellent Model Text 资料编码:CYKJ-FW-854编号:_计算机图形学学习心得编辑:_日期:_单位:_计算机图形学学习心得用户指南:该总结资料适用于把阶段时间里取得的成绩、存在的问题及得到的经验和教训进行一次全面系统的总结,明确下一步的工作方向,少走弯路,少犯错误,提高工作效益作用。可通过修改使用,也可以直接沿用本模板进行快速编辑。一、实验目的了解梁友栋算法和编码裁剪算法并利用该算法思想实现某一图形或直线段的裁剪,加深对梁友栋算法和编码裁剪算法的理解。二、实验内容利用梁友栋算法(参数化线段裁剪算法)或编码裁剪算法变成实现对直线段或者任一图形的裁剪。
2、三、实验原理梁友栋算法简介如下:设线段两端点坐标分别为P1(x1,y1)和P2(x2,y2),则其参数化直线方程可写成下列形式:0u1当u=0时,得点P1,当u=1时,得点P2。线段的裁剪条件可以由下面的不等式表示: Wxlx1uxWxr;Wyby1uyWyt这四个不等式可以表示为:upkqk k=1,2,3,4其中,参数p,q定义为:p1-x, q1x1Wxlp2x, q2Wxrx1p3-y, q3y1Wybp4y, q4Wyty1下标k=1,2,3,4分别对应裁剪窗口的左、右、下、上四条边界线。如果线段平行于裁剪窗口的某两边界,则必有相应的pk0,如果还满足qk0时,直线是从裁剪窗口第k条
3、边界线的内部延伸到外部。当pk不等于零时,可以计算出线段与第k条裁剪窗口边界线的交点参数: 根据定义,对于每条线段,pk中必有两个小于零,而另两个大于零。对于小于零的pk,直线同第k条裁剪窗口边线是从外到内相遇的,此时如果线段同第k条裁剪窗口边界线有交点的话,是参数u从0变大时遇到的,这时计算出相应的rk值,取0和各个rk值之中的最大值记为u1。与此相反,对于大于零的pk,计算出相应的rk值,取1和各个rk值之中的最小值记为u2。两个参数u1和u2定义了在裁剪窗口内的线段部分。如果u1u2,则线段完全落在裁剪窗口之外,应被舍弃。否则被裁剪线段可见部分的端点由参数u1和u2计算出来。四、实验环境
4、Windows XP VisualC+6.0五、实验步骤进入VisualC+6.0环境,在菜单中选择“FileNewProjects”,然后选择“MFCAppWizard(exe)”新建一个工程文件单击“OK”,在弹出的对话框中选择“Single document”,单击“Finish”,在VisualC+6.0编程界面中选择CMyView单击右键,选择“Add Member Function”,在弹出的对话框中添写“void”和函数名。/ 图形裁减View.cpp : implementation of the CMyView class/#include stdafx.h#include
5、图形裁减.h#include 图形裁减Doc.h#include 图形裁减View.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CMyViewIMPLEMENT_DYNCREATE(CMyView, CView)BEGIN_MESSAGE_MAP(CMyView, CView)/AFX_MSG_MAP(CMyView)/ NOTE - the ClassWizard will add and remove mapping macros here./ DO NO
6、T EDIT what you see in these blocks of generated code!/AFX_MSG_MAP/ Standard printing commandsON_COMMAND(ID_FILE_PRINT, CView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT, CView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView:OnFilePrintPreview)END_MESSAGE_MAP/ CMyView construction/destructionCMy
7、View:CMyView/ TODO: add construction code hereCMyView:CMyViewBOOL CMyView:PreCreateWindow(CREATESTRUCT& cs)/ TODO: Modify the Window class or styles here by modifying/ the CREATESTRUCT csreturn CView:PreCreateWindow(cs);/ CMyView drawingvoid CMyView:OnDraw(CDC* pDC)CMyDoc* pDoc = GetDocument;ASSERT_
8、VALID(pDoc);LINECLIP;/ TODO: add draw code for native data here/ CMyView printingBOOL CMyView:OnPreparePrinting(CPrintInfo* pInfo)/ default preparationreturn DoPreparePrinting(pInfo);void CMyView:OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: add extra initialization before printingvoid
9、 CMyView:OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: add cleanup after printing/ CMyView diagnostics#ifdef _DEBUGvoid CMyView:AssertValid constCView:AssertValid;void CMyView:Dump(CDumpContext& dc) constCView:Dump(dc);CMyDoc* CMyView:GetDocument / non-debug version is inlineASSERT(m_pDo
10、cument-IsKindOf(RUNTIME_CLASS(CMyDoc);return (CMyDoc*)m_pDocument;#endif /_DEBUG/ CMyView message handlersvoid CMyView:LINECLIP/使用梁友栋-Basky直线裁剪算法CDC* pDC=GetDC;/取得绘图设备环境上下文指针/设置不同颜色画笔CPen newpen1(PS_SOLID,0,RGB(183,198,0);/窗口颜色CPen newpen2(PS_SOLID,0,RGB(0,0,1);/待裁剪线段颜色CPen newpen3(PS_SOLID,0,RGB(16
11、0,1,255);/裁剪后可见线段颜色/辅助变量float p4,q4,u4;float u1,u2,r4;int x1,y1,x2,y2,x0,y0,x3,y3;int dx,dy,k;int wxl=300,wxr=450,wyb=100,wyt=400;/绘制裁剪窗口pDC-SelectObject(&newpen1);pDC-Rectangle(wxl,wyt,wxr,wyb);x1=100;y1=200;x2=600;y2=400;/绘制被裁剪线段pDC-SelectObject(&newpen2);pDC-MoveTo(x1,y1);pDC-LineTo(x2,y2);/计算dx=
12、x2-x1;dy=y2-y1;p0=(float)-dx;p1=(float)dx;p2=(float)-dy;p3=(float)(dy);q0=(float)(x1-wxl);q1=(float)(wxr-x1);q2=(float)(y1-wyb);q3=(float)(wyt-y1);for(k=0;krk)?0:rk;/取用0与rk中的大值elseuk=(rku1)?uk:u1;/取用0与uk中的大值elseu2=(uk/满足条件为可见部分线段if(u1SelectObject(&newpen3);pDC-MoveTo(x0,y0);pDC-LineTo(x3,y3);六、实验结果与分析本图中矩形内紫色线段为裁剪之后可见线段,外部的黑色线段部分为带裁剪部分。七、实验中遇到的问题及解决方法1.对于VisualC+6.0的工程文件即:MFC的环境不熟悉,开始时编写视图View下的程序在步骤上尚有困难,不知道该怎样使用该环境,再参考了一些相关书籍和求教于其他人之后
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《GB-T 19876-2012机械安全 与人体部位接近速度相关的安全防护装置的定位》专题研究报告
- 《GB-T 39344-2020空间数据与信息传输系统 通信操作规程-1》专题研究报告
- 《GB-T 10514-2012硝酸磷肥中游离水含量的测定 烘箱法》专题研究报告
- 《储能材料与器件分析测试技术》课件-SEI膜
- 《宠物鉴赏》课件-另类宠物之啮齿类宠物
- Tiamo-basical-configuration参考资料说明
- 月嫂育儿技能培训协议
- 智能家居医修师岗位招聘考试试卷及答案
- 种子行业有机种子研发工程师岗位招聘考试试卷及答案
- 2026医院护理部工作计划范文(6篇)
- 外墙真石漆专项施工方案
- 信息安全供应商培训课件
- 9.3《声声慢》(寻寻觅觅)课件+2025-2026学年统编版高一语文必修上册
- 七年级数学数轴上动点应用题
- 自主导航移动机器人 (AMR) 产业发展蓝皮书 (2023 版)-部分1
- 典型事故与应急救援案例分析
- 数字乡村综合解决方案
- 猪肉推广活动方案
- 电工职业道德课件教学
- 学堂在线 雨课堂 生活英语听说 期末复习题答案
- 第十四届全国交通运输行业“大象科技杯”城市轨道交通行车调度员(职工组)理论知识竞赛题库(1400道)
评论
0/150
提交评论