【发布时间】:2015-09-18 18:42:26
【问题描述】:
我有以下情况:基点(绿色)和线段,对于每个线段,他的顶点表示为极点,与基点成θ角。
问题:对于每个段,我都有他的 2 个顶点 theta。未订!我只需要从这些数据中找出这段重叠的角度范围。例如,对于属于顶部段的 2 个顶点 {20,300},正确答案是从 300 到 20 的所有角度,而不是从 20 到 300 的所有角度。
方向是从 0 到 359,如示例所示,它是循环的。
编辑:假设 - Segment 的最大重叠角度小于 180,即 179。
我认为解决方案就是为if找到“合适的条件”...
class Node {
int theta; //angle from base point e.g. 45
double radius; //distance (in problem specific metric) from base point
}
class Segment {
//nodes not ordered in any way
Node node_1;
Node node_2;
}
List<Segments> allSegments = new ArrayList<>();
//populate allSegments...
Segment mSegment;
for (int i=0; i<allSegments.size(); i++) {
mSegment = allSegments.get(i);
if (TODO? mSegment.node_1.tetha ? mSegment.node_2.theta) {
//the order is from node_1 to node_2 or otherwise...
}
}
谢谢,
【问题讨论】:
标签: algorithm geometry computational-geometry euclidean-distance polar-coordinates