我一直在设法解决这个问题。
要解决的问题
说我有3分。
P1 ---------- P2, and P3 can be anywhere around P1 and P2
Run Code Online (Sandbox Code Playgroud)
将P3插值到P1和P2之间的直线上要计算的公式是什么?
我需要一个公式来计算P3和P1之间的直线的新X,Y坐标。
到目前为止我的代码
public Point lerp(Point P0, Point P1, Point P)
{
double y1 = P0.Y + (P1.Y - P0.Y) * ((P.X - P0.X) / (P1.X - P0.X));
double x1 = P.X;
double y2 = P.Y;
double x2 = P0.X + (P1.X - P0.X) * ((P.Y - P0.Y) / (P1.Y - P0.Y));
return new Point((x1 + x2) / 2, (y1 + y2) / 2);
} …
Run Code Online (Sandbox Code Playgroud) 我想找到 n 个点集的最小外接矩形。首先我找到了凸包。如果我有一个来自点集的凸包(我通过格雷厄姆扫描得到它)存储为排序列表。通过二分搜索,我从凸包的每条边找到了距离最远的点。现在有了最大距离的一个边缘和点,我怎样才能找到其余的 2 个点,以便我可以制作一个矩形。我知道该凸包的至少两个极值点必须位于最小外接矩形(Xmin,Xmax,Ymin,Ymax)上。我该如何使用它?是否需要位于多边形的边缘,有什么办法可以做到这一点?我这样做的原因是我需要 O(nlogn) 时间复杂度。感谢您的每一次帮助。
例子:
在此示例中,我们在矩形上有 Xmin 和 Ymax,但没有 Xmin 或 X max