社区
数据结构与算法
帖子详情
求任意位置的一个点是否在任意封闭图形之内的算法
school
2002-05-12 06:15:27
同上
...全文
59
6
打赏
收藏
求任意位置的一个点是否在任意封闭图形之内的算法
同上
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zzwu
2002-05-14
打赏
举报
回复
应基于图形文件数据,而用不到在窗口中去实际画出。你可把图形文件一次读入到内存中,然后接下来的就完全是在内存中操作了。
自然,在调试程序时,可以把您的封闭图形画在窗口中,但这时您用不到搞很大的图形来调试程序,而可用能够在窗口中放下的就可以了。小图形照样可以复杂。
当然,对于实际问题,同时把图形显示出来也是需要的,大的图形可以缩小后再显示,但显示归显示,操作是在内存中进行的,且求交过程并不是图像操作,无需在内存中开辟一个图像缓冲区。一根线只要存储它的两个端点就可以了。
zzwu
2002-05-14
打赏
举报
回复
应基于图形文件数据,而用不到在窗口中去实际画出。你可把图形文件一次读入到内存中,然后接下来的就完全是在内存中操作了。
自然,在调试程序时,可以把您的封闭图形画在窗口中,但这时您用不到搞很大的图形来调试程序,而可用能够在窗口中放下的就可以了。小图形照样可以复杂。
当然,对于实际问题,同时把图形显示出来也是需要的,大的图形可以缩小后再显示,但显示归显示,操作是在内存中进行的,且求交过程并不是图像操作,无需在内存中开辟一个图像缓冲区。一根线只要存储它的两个端点就可以了。
school
2002-05-14
打赏
举报
回复
你们讲的关于与边相交的奇偶问题,我也考虑过,只是射线的延伸是基于窗口客户区,还是基于图形文件数据。如基于窗口客户区,其大小有限,无法显示完整的图形时,射线的延伸要如何突破窗口客户区的局限。如基于图形文件数据,则需将点映射到相应的图形文件中,这样可能将造成对图形文件的频繁读写,效率大大下降......
zzwu
2002-05-13
打赏
举报
回复
我有真代码,但因为是我80年代初做的工作,是用fortran编的。
基本思想是从你指定的点作任意方向的直线(充分长),求出直线与图形边界的交点数n,如n是奇数,就在图形内,n是偶数,就在图形外。
麻烦的是要考虑特殊情况。
你可以参考《计算机图形学》的书自己动手编,作为基本功,练一练。
FROM
2002-05-13
打赏
举报
回复
这个是计算机图形学上的问题,参考其中的扫描线填充算法。不过用代码实现起来是有点复杂的。
one_add_one
2002-05-12
打赏
举报
回复
以点P为端点,向左方作射线L,由于多边形是有界的,所以射线L的左端一定在多边形外,考虑沿着L从无穷远处开始自左向右移动,遇到和多边形的第一个交点的时候,进入到了多边形的内部,遇到第二个交点的时候,离开了多边形,……所以很容易看出当L和多边形的交点数目C是奇数的时候,P在多边形内,是偶数的话P在多边形外。如图2(a),(b)所示。
但是有些特殊情况要加以考虑,如图2(c) (d) (e) (f)所示。在图2的(c) 中,L和多边形的顶点相交,这时候交点只能计算一个;在图2 (d) 中,L和多边形顶点的交点不应被计算;在图2 (e) 和 (f) 中,L和多边形的一条边重合,这条边应该被忽略不计。为了统一起见,我们在计算射线L和多边形的交点的时候,1。对于多边形的水平边不作考虑;2。对于多边形的顶点和L相交的情况,如果该顶点是其所属的边上纵坐标较大的顶点,则计数,否则忽略;3。对于P在多边形边上的情形,直接可判断P属于多边行。由此得出算法的伪代码如下:
count = 0;
以P为端点,作从右向左的射线L;
for ( 多边形的每条边side ) {
if ( P 在边 side 上 ) return true;
if ( side 是水平的 ) continue;
if ( side 的一个端点在L上且该端点是side两端点中纵坐标较大的端点 ) {
count++;
} else if ( side 和 L 相交 ) {
count++;
}
}
return ( count % 2 == 1 );
其中判断点是否在线段上的算法和判断线段是否相交的算法前文已讨论过,该算法的复杂度为O(n)。
http://www.csdn.net/expert/topic/615/615044.xml?temp=.9301721
计算机
图形
学填充
算法
的实验
在计算机
图形
学中,填充
算法
是一种常见的技术,用于在屏幕上填充一个特定区域,例如填充一个
封闭
的
图形
或图案。种子填充
算法
是实现这一功能的常用方法之一。在这个实验中,我们将深入探讨种子填充
算法
,并在VC++6.0...
论文研究-一种适用于
任意
形状区域的快速孔洞填充
算法
.pdf
1. 选择种子点:
算法
首先在孔洞区域中选择一个或多个种子点作为填充的起点。种子点的选择会影响填充的方向和效率。 2. 外接矩形构造:
算法
依据种子点的
位置
,确定一个最小外接矩形,该矩形能够完全包含孔洞区域。 ...
java判断百度地图的点
是否
在多边形区域内
3. **点在多边形内的判断
算法
**:有多种
算法
可以用来判断
一个点
是否
在多边形内,如Ray Casting(射线法)、Winding Number(风向数法)和Even-Odd Rule(偶奇规则)。其中,射线法是最常用的一种,它的基本思想是从...
《
图形
学简明教程》第3章-基本光栅
图形
算法
.ppt
这涉及到填充多边形内部的像素点,使之成为
封闭
图形
的一部分。多边形扫描转换技术在计算机辅助设计(CAD)和动画制作中至关重要,常用的扫描转换方法包括种子填充
算法
(Seed Fill Algorithm)和扫描线填充
算法
(Scan...
计算机
图形
学之渲染
算法
:Radiosity:计算机
图形
学中的辐射度优化技术.docx
Radiosity
算法
的原理基于能量守恒,即在一个
封闭
系统中,能量的总量是恒定的。在计算机
图形
学的语境中,这意味着场景中所有表面发射、反射和吸收的光能量总和是不变的。
算法
通过迭代计算,逐步逼近这个能量守恒的...
数据结构与算法
33,027
社区成员
35,335
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章