向多边形添加新点的算法

时间:2010-07-23 09:19:32

标签: algorithm geometry 2d

问候所有人,

在我正在开发的应用程序中,我有多边形,如图所示

http://i30.tinypic.com/1127ggk.jpg

我的数据结构是双链表,如下所示。

RzCurve {
   RzNode *head;
};


RzNode{
      double x;
      double y;
      RzNode *next;
      RzNode *prev;
}

我想实现一种允许用户通过点击鼠标添加新节点的算法。

有关此的任何提示吗?

此致 umanga

2 个答案:

答案 0 :(得分:5)

我可能会遍历所有线段,计算distance of the point to the line线段,并在线段的端点之间插入点到新点的最短距离。此外,我只考虑线段,其中线穿过新点并垂直于线段的终点线与线段相交。

答案 1 :(得分:1)

会通过所有角落,计算两个角度的平分线。如果单击的点落入由2个平分线定义的半平面和2个角度之间的线段,则必须将您的点添加到当前线段(即新点连接到检查下的2个角)。

你必须小心凹多边形。如果2个平分线在多边形外部相交,则只有当该点落入由平分线和分段定义的三角形内时,才必须将该点添加到当前分段。

示例:

alt text http://img265.imageshack.us/img265/2098/134073347.png

相关问题