社区
数据结构与算法
帖子详情
求任意位置的一个点是否在任意封闭图形之内的算法
school
2002-05-12 06:15:27
同上
...全文
51
6
打赏
收藏
求任意位置的一个点是否在任意封闭图形之内的算法
同上
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
ACM 内部预定函数
11.判断一个
封闭
图形
是凹集还是凸集 12.Graham扫描法寻找凸包 13.
求
两条线段的交点 数论: 1.x的二进制长度 2.返回x的二进制表示中从低到高的第i位 3.模取幂运算 4.
求
解模线性方程 5.
求
解模线性方程组...
计算机
图形
学:传统函数方法判定点在不规则
封闭
区域内的判定方法
在
封闭
的多边形中,需要判断...那么就同法国这个方法来实现,点
是否
在
封闭
图形
中的判定 bool PointInRegion(cocos2d::CCPoint pt,vector<cocos2d>::plist) { int Cross=0; //依次判定每一条边的情况 for..
判断点
是否
在
封闭
区域里面
判断点在不在区域里面,作点水平向左的线段(这个水平线段尽量的达到X轴负方向),看与
图形
(代指区域)的交点
是否
是奇数个,如果是奇数个就是在
图形
里面。 关于交点特殊情况的判断,如果水平向左的线段与
图形
的...
多线段几何
图形
—— 简单几何
图形
(从线段中搜索
封闭
图形
)
在连通图(通俗的解释 图中每一个顶点最少可以到达两根线。 同时我们把使用了此顶点的线段称之为此顶点的连通线)中。 以顶点为圆心,则整个圆会被N个连通线划分成N个圆心角。 如上图,顶点A的圆,被划分成1,2,...
判断一个坐标点
是否
在不规则多边形内部的
算法
假设多边形的坐标存放在一个数组里,首先我们需要取得该数组在横坐标和纵坐标的最大值和最小值,根据这四个点算出一个四边型,首先判断目标坐标点
是否
在这个四边型
之内
,如果在这个四边型之外,那
数据结构与算法
33,009
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章