Эй, ребята, это небольшая домашняя головоломка, над которой я работаю, и мой триггер не слишком силен, так что терпите меня.
У меня есть список из трех вершин, и я уже выяснил, как рассчитать внутренний угол, в котором они встречаются (я использую это для проверки, чтобы убедиться, что они имеют действительный угол, поэтому многоугольник является действительным многоугольником) .
В настоящее время я вынимаю три вершины подряд, затем вычисляю ребра до вершины, на которую хочу задать угол, а затем получаю ако векторного произведения в этой точке:
double dx21 = one.x - two.x;
double dx31 = three.x - two.x;
double dy21 = one.y - two.y;
double dy31 = three.y - two.y;
double m12 = Math.sqrt(dx21*dx21 + dy21*dy21);
double m13 = Math.sqrt(dx31*dx31 + dy31*dy31);
double theta = Math.acos((dx21*dx31 + dy21*dy31)/ (m12 * m13));
Я знаю, что формально я мог бы получить внешний угол, вычтя внутренний угол из 360 градусов, но это проверка работоспособности, чтобы убедиться, что многоугольник действителен (вершины расположены в порядке против часовой стрелки).
Примечание, которое мне дали, было то, чтобы убедиться, что грех векторного произведения в вершинах был положительным, но я какое-то время играл на этом на бумаге, и мне не очень повезло, заставляя это работать.
Я знаю, что это в основном математический вопрос, но любой совет был бы очень полезен.