假设你有以下三个点A
, B
, 和C
如下图所示:
这些点总是根据它们的垂直偏移量排序,所以最上面的点总是 A。有时 B 和 C 可能有相同的 y 坐标。
我试图找到点 D 的 x 坐标。我可以通过插值点A.y
和C.y
at找到 D 的 Y 坐标(B.y / (C.y - A.y))
。我正在使用以下公式进行插值(在 C++ 中)
float linearInterpolation(float a, float b, float t)
{
return a + (t * (b - a));
}
所以换句话说,D.y = linearInterpolation(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;
如下图所示: