gpt4 book ai didi

java - 需要缩放/平移点数组,因此路径将匹配给定的终点

转载 作者:行者123 更新时间:2023-11-30 01:42:44 25 4
gpt4 key购买 nike

我有一个点数组。我正在寻找一种方法来缩放/平移整个路径,以便路径的终点将与我给出的终点相匹配,但保持点数组的形状。

    void translate(Point[] array, Point scaleToPoint)

是否有任何算法可以实现我所描述的功能?预先感谢您,非常感谢任何帮助!

Image example of what I'm looking for enter image description here

最佳答案

您可以执行以下操作。不要将起点视为某个任意位置(例如 (0, 100)),而是将其暂时平移到原点 (0, 0)。然后,计算将终点拉伸(stretch)到新位置所需的标量。

首先,我们假设 array 非空来定义以下引用点。

Point start = array[0];
Point end = array[array.Length - 1];

然后,计算拉伸(stretch)点所需的标量。

float sx = (scaleToPoint.X - start.X) / (end.X - start.X);
float sy = (scaleToPoint.Y - start.Y) / (end.Y - start.Y);

最后,进行实际的拉伸(stretch)。

for (int i = 0; i < array.Length; i++)
{
array[i].X = array[i].X + (array[i].X - start.X) * sx;
array[i].Y = array[i].Y + (array[i].Y - start.Y) * sy;
}

您可以验证这是否有效,因为:

  • array[0] 最终回到最初的位置。
  • array[array.Length - 1] 最终为 scaleToPoint
  • 转换是线性的。

关于java - 需要缩放/平移点数组,因此路径将匹配给定的终点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59382402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com