| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 900 人关注过本帖
标题:本人是小白菜,有个问题想请教大虾们.
只看楼主 加入收藏
zhaoya881010
Rank: 9Rank: 9Rank: 9
来 自:芒砀古郡
等 级:蜘蛛侠
威 望:1
帖 子:339
专家分:1177
注 册:2010-11-21
收藏
得分:0 
给定点p;
*************************************************************
到如果从P作水平向左的射线的话,如果P在多边形内部,那么这条射线与多边形的交点必为奇数,如果P在多边形外部,则交点个数必为偶数(0也在内)。所以,我们可以顺序考虑多边形的每条边,求出交点的总个数。还有一些特殊情况要考虑。假如考虑边(P1,P2),
1)如果射线正好穿过P1或者P2,那么这个交点会被算作2次,处理办法是如果P的从坐标与P1,P2中较小的纵坐标相同,则直接忽略这种情况
2)如果射线水平,则射线要么与其无交点,要么有无数个,这种情况也直接忽略。
3)如果射线竖直,而P0的横坐标小于P1,P2的横坐标,则必然相交。
4)再判断相交之前,先判断P是否在边(P1,P2)的上面,如果在,则直接得出结论:P再多边形内部。
待会大家根据这个写个算法


Go Go Go
2010-12-20 21:39
zzgzzg00
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:388
专家分:627
注 册:2010-8-2
收藏
得分:2 
#include<graphics.h>
main()
{
int graphdriver=DETECT;
int graphmode,d[1000],n,i,j,k,x,y;
initgraph(&graphdriver,&graphmode,"");
cleardevice();
scanf("%d",&n);
for(i=0;i<=2*n-1;i++)
scanf("%d",&d[i]);
scanf("%d %d",&j,&k);
cleardevice();
setcolor(2);
putpixel(j,k,4);
setfillstyle(1,5);
fillpoly(n,d);
x=getpixel(j,k);
if(x==4)
printf("no");
if(x==5)
printf("yes");
}
不知行不行
反正当输入三角形为(0 0 250 250 600 0)而点为(250 100)时输出了yes 点为(250 260)时输出了no

粗心是大敌
2010-12-20 21:45
jsyouxiwang
Rank: 1
来 自:江苏
等 级:新手上路
帖 子:6
专家分:4
注 册:2010-12-20
收藏
得分:0 
求个程序运行下

没有最好,只有更好!
2010-12-21 18:56
王晓明
Rank: 2
等 级:论坛游民
帖 子:40
专家分:62
注 册:2009-3-12
收藏
得分:2 
http://topic.
2010-12-21 19:27
快速回复:本人是小白菜,有个问题想请教大虾们.
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033966 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved