射线与多边形交点(200分)

  • 主题发起人 主题发起人 hug
  • 开始时间 开始时间
H

hug

Unregistered / Unconfirmed
GUEST, unregistred user!
大家好,预祝大家新年快乐!同时问一个思路比较简单,考虑细节又比较难的问题:
多变性顶点:512 ,547
471 ,546
447 ,513
445 ,447
492 ,404
501 ,404
512 ,405
517 ,411
518 ,420
522 ,425
517 ,428
504 ,428
501 ,428
495 ,429
493 ,436
493 ,447
496 ,455
505 ,456
506 ,457
513 ,458
526 ,458
530 ,458
531 ,477
531 ,486
531 ,491
514 ,491
503 ,501
532 ,501
532 ,523
以486,501 (该点总是在多变形的内部)为中心做射线从零度开始每个5度作一条射线,
共做到355度,72条射线,求每条射线与多变形的交点!
注:该多变形顶点是用鼠标在图像上取的,目的是每条射线的长度,
考虑每条射线和多变形多个交点和相切的情况。还要判断每条射线被
多变形割的线段在多变形内外。
 
楼主好像说的很复杂,那不能简化点
 
主要是在图像上根据区一些勾画轮廓(不规则),以内部的某点作为原点,
每5度画一条射线,求射线与多边形的交点。
 
以射线的端点为圆点O,连接多边形的一条边的两个端点A、B,计算OA、OB与X轴的角度,如果射线的角度在这两个角度中间,那么射线将与此边有交点,否则无交点。
 
谢谢,beginner999,这个问题困扰我了好几天了,我得思路一直都是这样的,
只是考虑特殊情况,很麻烦,昨天下午,这个问题我解决了,
开始的时候
,判断5*i与A[j]和A[j+1]比较大小,A[]是顶点角度数组。
因为A[j]和A[j+1]大小那已确定,所以困扰了我好几天,现在我是把A[j]和A[j+1]放到
2位数组里面。在按照大小顺序排列A[j]和A[j+1],然后再5*i与A[j]和A[j+1]比较大小。最后得出了整取得结果。
 
以上只对凸的有用,但对于这样的
|-----------/
| /
| /
| /
| /
| / / /
/ @ / / /
/ / / /
// //
如图@为中心点,求得时候没有办法判断角度在如(340,10)这样的范围内
 
看看图形学的书吧有详细介绍这种求直线(射线)与多边形的交点的各种情形的。
 
后退
顶部