Предположим, у вас есть следующие три точки A, B и C, как показано на следующем рисунке:
Точки всегда сортируются в соответствии с их вертикальным смещением, поэтому самой верхней точкой всегда является A. Иногда B и C могут иметь одинаковую координату y.
Я пытаюсь найти координату x для точки D. Я могу найти координату Y для D, интерполируя точки A.y и C.y в (B.y / (C.y - A.y)). Я делаю свою интерполяцию, используя следующую формулу (в C ++)
float linearInterpolation(float a, float b, float t)
{
return a + (t * (b - a));
}
То есть, другими словами, D.y = линейная интерполяция (A.y, C.y, (B.y - A.y) / (C.y - A.y))
Итак, подведем итог: мой вопрос: как мне найти D.x?
Спасибо
-
Ответ:
Просто чтобы уточнить, вот решение, которое было предложено и сработало:
D.x = A.x + (B.y - A.y) * (C.x - A.x) / (C.y - A.y);
D.y = B.y;
Как показано на рисунке ниже: