清华大学土木工程CAD技术基础课件04计算机图形技术

上传人:东*** 文档编号:270893812 上传时间:2022-03-27 格式:PDF 页数:103 大小:592.91KB
返回 下载 相关 举报
清华大学土木工程CAD技术基础课件04计算机图形技术_第1页
第1页 / 共103页
清华大学土木工程CAD技术基础课件04计算机图形技术_第2页
第2页 / 共103页
清华大学土木工程CAD技术基础课件04计算机图形技术_第3页
第3页 / 共103页
清华大学土木工程CAD技术基础课件04计算机图形技术_第4页
第4页 / 共103页
清华大学土木工程CAD技术基础课件04计算机图形技术_第5页
第5页 / 共103页
点击查看更多>>
资源描述

《清华大学土木工程CAD技术基础课件04计算机图形技术》由会员分享,可在线阅读,更多相关《清华大学土木工程CAD技术基础课件04计算机图形技术(103页珍藏版)》请在金锄头文库上搜索。

1、第四章:计算机图形技术第四章:计算机图形技术?4-1基本图形生成基本图形生成?4-2图形几何变换图形几何变换?4-3图形显示处理图形显示处理?4-4 工程绘图程序设计工程绘图程序设计4-1 基本图形生成基本图形生成常用的坐标系常用的坐标系?用户坐标系用户坐标系?用户描述或输入图形的坐标系用户描述或输入图形的坐标系?一般取直角坐标系,取值范围是实数域,单位是任意的。一般取直角坐标系,取值范围是实数域,单位是任意的。?设备坐标系设备坐标系?图形设备输出图形的坐标系图形设备输出图形的坐标系?一般为二维坐标,取值范围是某一个整域,常用单位是光栅单位和脉冲当量。一般为二维坐标,取值范围是某一个整域,常用

2、单位是光栅单位和脉冲当量。?规格化坐标系规格化坐标系?虚拟的坐标系,与设备无关,通常取无量纲单位 。虚拟的坐标系,与设备无关,通常取无量纲单位 。基本图形元素基本图形元素?矢量图形矢量图形?以直线段作为基本元素以直线段作为基本元素?矢量图形生成器:矢量图形生成器:?随机扫描显示器随机扫描显示器?笔式绘图仪笔式绘图仪?光栅图形光栅图形?以点作为基本元素以点作为基本元素?光栅图形生成器:光栅图形生成器:?光栅扫描显示器光栅扫描显示器?静电绘图仪和喷墨绘图仪静电绘图仪和喷墨绘图仪直线和直线图形直线和直线图形1. 生成直线的基本算法生成直线的基本算法?问题的提出问题的提出?笔式绘图仪笔式绘图仪: 任意

3、一条斜直线,是由任意一条斜直线,是由x, y方向的直线组合成的阶梯线来近似。方向的直线组合成的阶梯线来近似。直线由什么样的阶梯线近似?画笔的每一步方向如何确定?直线由什么样的阶梯线近似?画笔的每一步方向如何确定??光栅扫描显示器光栅扫描显示器: 显示任意一条直线,是确定发亮的象素点最佳逼近直线。显示任意一条直线,是确定发亮的象素点最佳逼近直线。如何选择发亮的象素最佳逼近直线?如何选择发亮的象素最佳逼近直线?- 取决于生成直线的基本算法取决于生成直线的基本算法- 取决于生成直线的基本算法取决于生成直线的基本算法?基本原理基本原理:“增量法”“增量法”?产生产生 x 和和 y 两个方向的两个方向的

4、 “走步走步” 信号,据此指示电子束偏移或绘图笔动作 。信号,据此指示电子束偏移或绘图笔动作 。x走步走步stepy走步走步ystep其中:x, y - 直线起始点到终止点x, y方向上的位移量;step - 设备的单位步长。?各种方法的不同点各种方法的不同点?判断、生成判断、生成 x, y信号的过程和方法不同信号的过程和方法不同?发送的命令不同发送的命令不同?各自更为适应的设备对象不同各自更为适应的设备对象不同?生成直线的常用算法生成直线的常用算法?笔式绘图仪笔式绘图仪逐点比较法、正负法;逐点比较法、正负法;?光栅扫描显示器光栅扫描显示器DDA法、法、Bresenham法法对称对称DDA法法

5、简单简单DDA法法直线和直线图形直线和直线图形2. 直线的属性直线的属性?线宽线宽?直线的宽度一般是在设备坐标下定义直线的宽度一般是在设备坐标下定义?把设备能产生的最小直线宽度作为基准,再定义二倍宽或四倍宽的直线。把设备能产生的最小直线宽度作为基准,再定义二倍宽或四倍宽的直线。?线型线型?长度定义一般在用户坐标系下进行长度定义一般在用户坐标系下进行Tline ( x1, y1, x2, y2, dy1, dk1, lt )dy1:实线长度、dk1:虚线长度lt:线型名dkldylSL( x1, y1 )ang( tx,ty )( x2, y2 )?虚线生成步骤:虚线生成步骤: 设线段长部分和:

6、 设线段长部分和:dem = 0线段长线段长:212212)y(y)x(xSL+=+= x0 = x1,y0 = y1dem = dem + dyl若若: dem SL 连线连线 (x1, y1 ) (x2, y2 )若若: dem SL 返回若返回若: dem SLx1=x0+dem * * cos(ang)y1=y0+dem * * sin(ang)返回 返回 实线段的终点实线段的终点实线段的起点实线段的起点?颜色颜色?取决于光栅扫描系统可以提供的颜色取决于光栅扫描系统可以提供的颜色? ?点划线点划线直线和直线图形直线和直线图形:3. 直线图形直线图形?折线集折线集?Pline (n, w

7、point)?矩形矩形?两点式两点式?点差式点差式?矩形网格矩形网格?正多边形正多边形?标高线标高线?尺寸线尺寸线教材:教材:P56矩形矩形矩形矩形?矩形的生成按输入变量分类,有两种形式:矩形的生成按输入变量分类,有两种形式:?两点式两点式?已知:两个角点坐标已知:两个角点坐标P1、P3;?矩形与水平轴的夹角矩形与水平轴的夹角ang?思路:求出思路:求出P2、P4点的坐标,依次连接点的坐标,依次连接P1、P2、P3、P4各点。各点。?设:设:Cs = cos(ang),Sn = sin(ang)dx = P3xCs+P3ySn p1xCs P1ySndy = P3xSn+P3y Cs + p1

8、xSn P1yCsP2x = dx Cs +p1xP2y = dx Sn+p1yP4x = dy Sn+p1xP4y = dy Cs +p1yP1P2P3P4angangdydx? ?点差式点差式点差式点差式?已知: 矩形左下角点坐标已知: 矩形左下角点坐标P1;边长边长dx、dy矩形与水平轴的夹角矩形与水平轴的夹角ang?思路:求出思路:求出P2、 P3、 P4点的坐标,依次连接点的坐标,依次连接P1、 P2、P3、P4各点。各点。#include #include #include dbents.h#include math.h/#include geassign.h#include db

9、apserv.h#include adslib.h#include #include #include dbents.h#include math.h/#include geassign.h#include dbapserv.h#include adslib.h“void initApp();void unloadApp();void firstARX();void drawRect();void initApp();void unloadApp();void firstARX();void drawRect();编程绘制点差式矩形编程绘制点差式矩形ObjectARX头文件头文件声明两个应用函

10、数声明两个应用函数void initApp()acedRegCmds-addCommand(firstARX_Commands,/命令组名firstARX,/全球命令名第一次,/本地/翻译命令名ACRX_CMD_TRANSPARENT,/命令模式firstARX);/被调用的函数acedRegCmds-addCommand(firstARX_Commands,/命令组名DRAWRECT,/全球命令名void initApp()acedRegCmds-addCommand(firstARX_Commands,/命令组名firstARX,/全球命令名第一次,/本地/翻译命令名ACRX_CMD_TR

11、ANSPARENT,/命令模式firstARX);/被调用的函数acedRegCmds-addCommand(firstARX_Commands,/命令组名DRAWRECT,/全球命令名“绘制矩形绘制矩形”,/本地/翻译命令名ACRX_CMD_TRANSPARENT,/命令模式drawRect);/被调用的函数void unloadApp()acedRegCmds-removeGroup(firstARX_Commands);,/本地/翻译命令名ACRX_CMD_TRANSPARENT,/命令模式drawRect);/被调用的函数void unloadApp()acedRegCmds-remo

12、veGroup(firstARX_Commands);添加了两条命令添加了两条命令。void firstARX()ads_alert(这是我的第一个ARX应用程序!);extern C AcRx:AppRetCodeacrxEntryPoint(AcRx:AppMsgCode msg, void* pkt)switch (msg) /msg参数是AutoCAD传递给应用程序的消息case AcRx:kInitAppMsg: /解锁应用程序,这样它才能被卸载acrxDynamicLinker-unlockApplication(pkt);acrxRegisterAppMDIAware(pkt);

13、initApp();break;case AcRx:kUnloadAppMsg:unloadApp();break;default:break;return AcRx:kRetOK;void firstARX()ads_alert(这是我的第一个ARX应用程序!);extern C AcRx:AppRetCodeacrxEntryPoint(AcRx:AppMsgCode msg, void* pkt)switch (msg) /msg参数是AutoCAD传递给应用程序的消息case AcRx:kInitAppMsg: /解锁应用程序,这样它才能被卸载acrxDynamicLinker-unl

14、ockApplication(pkt);acrxRegisterAppMDIAware(pkt);initApp();break;case AcRx:kUnloadAppMsg:unloadApp();break;default:break;return AcRx:kRetOK; 定义应用函数,显示一个提示对话框定义应用函数,显示一个提示对话框用于消息处理的主入口点,传递消息到应用程序用于消息处理的主入口点,传递消息到应用程序AcDbObjectId createLine(AcGePoint3d startPoint, AcGePoint3d endPoint)AcDbObjectId obj

15、Id;AcDbLine *pLine;AcDbObjectId createLine(AcGePoint3d startPoint, AcGePoint3d endPoint)AcDbObjectId objId;AcDbLine *pLine;/初始化一个/初始化一个AcDbLine类的指针类的指针AcDbBlockTable *pBlockTable;AcDbBlockTableRecord *pBlock;AcDbBlockTable *pBlockTable;AcDbBlockTableRecord *pBlock;/打开块表/打开块表acdbHostApplicationServic

16、es()-workingDatabase()-getBlockTable(pBlockTable,AcDb:kForRead); acdbHostApplicationServices()-workingDatabase()-getBlockTable(pBlockTable,AcDb:kForRead); /打开模型空间块表段,获得当前块表记录,并关闭块表/打开模型空间块表段,获得当前块表记录,并关闭块表pBlockTable-getAt(ACDB_MODEL_SPACE, pBlock, AcDb:kForWrite);pBlockTable-close(); pBlockTable-getAt(ACDB_MODEL_SPACE, pBlock, AcDb:kForWrite);pBlockTable-close(); /向当前块表记录中添加直线对象向当前块表记录中添加直线对象pLine = new AcDbLine(startPoint, endPoint);pBlock-appendAcDbEntity(objId, pLine);pBlock-close();pLine-cl

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 机械/制造/汽车 > CAD/CAE/CAM

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号