В настоящее время я работаю над кульминацией своей информатики, и я застрял и не могу найти ответы на похожие вопросы, задаваемые о переполнении стека.
Проблема, которую я пытаюсь решить, состоит в том, что есть тризаданные точки в форме (x, y) на экране (1280 на 720, где верхний левый угол (0, 0)), и вы должны найти кривую, которая проходит через все три точки.
ИтакЗная, что есть три точки, вы знаете, что они образуют треугольник.После нахождения окружности у вас теперь есть:
- Радиус,
- Начало координат,
- И три угла
Криваядолжен начинаться в первой заданной точке, проходить через вторую заданную точку и заканчиваться в третьей заданной точке.
int pointX = Math.round(circumcentreX + radius * Math.cos(angle));
int pointY = Math.round(circumcentreY + radius * Math.sin(angle));
Выше приведены уравнения, которые я нашел , чтобы найти точки накривая с учетом угла.
Я также знаю, как найти углы трех заданных точек с помощью Math.atan2(y, x);
Основная проблема, которую я имею, - это найти углы, лежащие накривая .Пока у меня есть
float angle = (float)Math.toRadians(beginningAngle - (beginningAngle - endAngle) * t);
, где t - это процент кривой, в которой он находится, но он не работает в половине случаев.
Углы окружности были бы такими, гдеСевер 270, Восток 0, Юг 90, Запад 180.
Вот как должна выглядеть кривая
Angles: 183.57921 : 264.60202 : 358.09354
X coordinates: [473, 597, 747]
Y coordinates: [376, 248, 380]
Вот случай, когда он терпит неудачу
Angles: 179.00537 : 270.5897 : 2.6373901
X coordinates: [473, 614, 752]
Y coordinates: [376, 234, 380]
Пожалуйста, дайте мне знать, если вы нашли способ найти углы или хотели бы некоторый исходный код.Заранее спасибо!