У меня следующая ситуация: базовая точка (зеленая) и сегменты, для каждого сегмента его вершины представлены как полярная точка с углом тета от базовой точки.Направление сегмента в полярной плоскости
Проблема: Для каждого сегмента у меня есть его 2 вершины тета-х. Не заказано! Мне нужно только из этих данных выяснить диапазон углов, которые этот сегмент перекрывает. Например, для 2 вершин {20,300}, принадлежащих верхнему сегменту, правильный ответ - все углы от 300 до 20 и НЕ от 20 до 300.
Направление от 0 до 359 и, как видно на примере, это циклическая.
EDIT: Успенская - Максимальный угол перекрытия для сегмента составляет менее 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...
}
}
Спасибо,
очень хороший ответ! – michael