- 107
- 0
- 约1.18万字
- 约 6页
- 2021-11-23 发布于河北
- 举报
1 (中国科学院 软件研究所 计算机科学开放研究实验室, 北京 100080
1 (中国科学院 软件研究所 计算机科学开放研究实验室, 北京 100080) ;
2 (澳门大学科学技术学院, 澳门)
E 2m a il: w h n @ io s. ac. cn; w eh @ io s. ac. cn
h t tp: ?? HYPERLINK http://www/ www. io s. ac. cn ?op en lab?F ir stP age. h tm l
摘要: 提出一种新方法, 以检测一个点是否在多边形或多面体内. 该方法通过将多面体的面片和多边形的边组
织成层次结构, 在检测时运用二分查找算法, 不必处理每个面片和每条边. 试验结果表明, 这种方法简单、有 效, 有较高的检测速度.
关键词: 点; 多边形; 多面体; 包含检测
中图法分类号: T P 391
文献标识码: A
关于点是否在一个多边形或多面体内的检测问题是计算机图形学中的基本问题. 至今, 对于二维情况下点
在多边形内的检测, 已有了深入的研究1 . 然而, 三维情况下点在多面体内的检测方面虽已有大量的工作, 却还 存在着许多困难. 这些方法大都因算法复杂而要处理许多奇异情况2 . 最近, 有人提出了两种不必处理奇异情况 的检测方法3, 4 , 但它们均需进行大量的计算. 迄今为止, 点在多边形、多面体内的检测方法, 大多要处理所有边 或面片, 这无疑制约了检测速度的提高.
本文提出一种新的检测方法. 通过预处理, 将多边形的边和多面体的面片进行层次化的组织. 由此, 检测时 不必处理多边形的所有边或多面体的所有面片, 就可以计算出测试点发出的检测线穿过多边形或多面体的区间 段. 比较测试点与这些区间段, 就可以知道测试点是否在多边形或多面体内.
下面, 我们先给出多边形和多面体的定义, 再分别讨论二维平面上点在多边形内的检测方法以及三维空间 中点在多面体内的检测方法, 最后对算法进行分析和讨论.
1 多边形和多面体的定义
根据参考文献2 , 多边形的一般定义为: 给出一系列共面的点 A 1 , A 2 , . . . , A n , 将这些点依次用线段连接,
最后, A n 与A 1 相连. 这样, A 1 , A 2 , . . . , A n 是多边形的顶点, 连接顶点间的线段称为边.
但本文讨论的多边形有两个约束条件: (1) 多边形的任意两条边, 除共享顶点外不能相交; (2) 多边形的边 是直线段. 我们将这类多边形称为简单直边多边形. 为论述方便, 文中简称为多边形.
由文献2 可知, 本文处理的多面体是由简单直边多边形构成的封闭体, 且任意一个多边形的一条边是而且 只能是另一多边形的一条边, 两个多边形除共享边外不能相交. 这些多边形称为多面体的面片.
将多边形和多面体构成的封闭空间定义为它们的内部. 这样, 检测点是否在多边形或多面体内的问题, 就是 判断它是否在多边形或多面体的内部.
Ξ
收稿日期: 1999204227; 修改日期: 1999210208
基金项目: 国家自然科学基金资助项目(
作者简介: 王文成 ( 1967- ) , 男, 湖南双峰人, 博士, 副研究员, 主要研究领域为科学计算可视化, 计算机图形学; 吴恩华
( 1947- ) , 男, 江苏如东人, 研究员, 博士生导师, 主要研究领域为虚拟现实, 科学计算可视化, 真实感图形学等.
2 点在多边形内的新检测方法检测一个点是否在一个多边形中, 一种常用的方法是射线法5 ,
2 点在多边形内的新检测方法
检测一个点是否在一个多边形中, 一种常用的方法是射线法5 , 即从检测点发出一条射线, 求该射线与多边 形的边相交的数目. 若有奇数个交点, 则点在多边形中; 否则, 点在多边形外. 虽然射线法简单、有效, 但它很难处 理一些奇异性情况. 比如, 射线与某一条边共线或射线经过多边形的顶点时, 就很难统计射线与多边形的交点个 数. 当然, 可以调整射线方向以避免这些奇异性情况, 但这是比较麻烦的. 况且我们也可以构造一个多边形, 使它 相对于某个检测点而言具有各个方向的边. 对此, 射线法是无能为力的.
结合射线法和多边形扫描转换算法5 , 我们提出一种新的检测方法. 它由两部分组成. 第 1 部分是预处理过 程, 它将多边形的边组织成层次结构. 第 2 部分是检测过程, 它根据被检测点的位置生成一条检测线, 然后在预 处理生成的边层次结构的基础上, 快速求取检测线穿越多边形的区间段, 最后将检测点与这些区间段进行比
原创力文档

文档评论(0)