图形的绘制方法.pdf

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

图形的绘制方法

针对计算机辅助几何造型中经常用到的各种复杂边界的平面图形,

基于OpenGL的NURBS曲面绘制及裁剪功能,提出了一种绘制复杂边

界平面图形的方法,避免了对平面图形进行网格化处理。以下是小编搜

索整理图形的绘制方法,欢迎大家阅读!

 引言

 在计算机辅助几何造型领域,常常会用到各种具有复杂边界的平

面图形,其边界不仅有直线,还可能有圆弧等各种曲线。目前OpenGL

提供了绘制三角面以及凸多边形的函数,没有直接提供绘制凹多边形及

有曲线边界的平面图形的方法。但是其拥有强大的NURBS曲面绘制函

数,可以绘制任意的NURBS曲面,并且可以裁剪绘制NURBS曲面。

由于平面也可以看作是一种最简单的曲面,所以可以把OpenGL的

NURBS曲面绘制功能借鉴到对平面图形的绘制当中,实现对复杂边界

平面图形的绘制。

 文中图形是在笛卡尔坐标系中的xoy平面上进行讨论的,对于不

在这个平面上的图形,也可以在其所在的平面上建立局部坐标系,再按

照如下提到的方法进行计算。

 1NURBS及其相关概念

 NURBS是NonUniformRationalBSplines的缩写,表示非均匀有

理B样条的意思。其核心思想在于用多个控制点来表示一条曲线或曲

面。

 1.1NURBS控制点

 在计算机辅助几何造型中,常常用到各种各样的曲线,可以用简

单解析式表示的曲线远远不能满足要求。为了更方便地用来表示曲线、

曲面形状,可以用一系列点来控制和调节曲线、曲面的形状,这些点被

称为控制点。

 在NURBS的理论中,控制点包含两部分信息,一部分是点的坐

标值,另一部分是点的权重。点的坐标值表示点在空间中的位置,点的

权重值表示点对曲线或曲面的影响大小。三维空间上的控制点可以用四

维向量表示,分别代表三个坐标和一个权重值。也可以用三维向量表

示,这时权重默认为1.0。二维空间上的控制点可以用三维向量表示,

代表两个坐标值和一个权重,也可以用二维向量表示,此时权重默认为

1.0。

 1.2NURBS曲线、曲面

 NURBS曲线用空间中的一组控制点向量表示,每一个点都可以

对曲线的形状有一定的影响。NURBS曲面用空间中的一组控制点矩阵

表示。根据NURBS的解析式,如果确定了控制点,也就可以唯一确定

一条曲线或者一条曲面。也正是由于NURBS的这种精确表示的特性,

在计算机辅助几何造型中得到了广泛的应用。

 2几种图形的NURBS表示方法

 2.1曲线

 本文仅对工程中最常见的线段和圆弧进行讨论,其它曲线可以参

照NURBS公式计算其表示方法。

 2.1.1直线段

 用2个控制点表示,2个控制点的坐标值为线段的端点坐标值,

权重为1.0。

 2.1.2圆弧

 需要按照圆弧的圆心角θ的大小讨论,分以下情况:

 对于0°小于θ≤90的圆弧,用3个控制点PA,PB,PC表示,其

中两端的控制点PA,PC的坐标值分别为圆弧的2个端点的坐标值,权

重都为1.0。中间的点PB的坐标值为圆弧两个端点处的两条切线的交

点坐标值,权重值weight计算公式为:weight=cos(θ2)。

 对于圆心角超过90°的圆弧(包括圆环),可以切成多段圆弧,每

段圆弧都不超过90°,再把每段圆弧用上面的方法表示,即用多段圆弧

来表示。

 2.2平面矩形

 平面矩形用4个控制点表示,4个控制点的坐标为矩形4个角点

的坐标值。为方便起见,可以用三维向量表示,权重默认为1.0。

 3OpenGL中NURBS的特殊说明

 3.1控制点

 在OpenGL中表示带权重的控制点有特殊的表示方法,对于控制

点P,若其坐标为(x,y,z),权重为weight,则在OpenGL中表示该控

制点的四维向量计算公式为:

 =(xweight,yweight,zweight,weight)

 (1)3.2曲面裁剪函数

 OpenGL中供曲面裁剪调用的函数是gluBeginTrim、gluEndTrim

与gluNurbssCurve、gluPwlCurve。在进行曲面裁剪

您可能关注的文档

文档评论(0)

180****9759 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档