问候所有人,
在我正在开发的应用程序中,我有多边形,如图所示
http://i30.tinypic.com/1127ggk.jpg
我的数据结构是双链表,如下所示。
RzCurve {
RzNode *head;
};
RzNode{
double x;
double y;
RzNode *next;
RzNode *prev;
}
我想实现一种允许用户通过点击鼠标添加新节点的算法。
有关此的任何提示吗?
此致 umanga
答案 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