gpt4 book ai didi

c# - 如何将一个 3D 点与另一个 3D 点的距离调整给定距离

转载 作者:太空狗 更新时间:2023-10-29 22:19:09 25 4
gpt4 key购买 nike

我正在使用 point3D 和 vector3D 类,我需要一些帮助将点调整给定距离。

  • 点 A - 位于坐标 0,0,0 的点。
  • B 点 - 位于坐标 1,1,1 的点。
  • 向量 AB - 向量 AB 告诉我两点 A 和 B 之间的长度是距离 = 1.73205078。

enter image description here

代码:

Point3D A = new Point3D { X = 0, Y = 0, Z = 0 };
Point3D B = new Point3D { X = 1, Y = 1, Z = 1 };
Vector3D AtoB = A - B;
Double distanceBetweenAandB = AtoB.Length; // the distance will be 1.73205078 here.

我想调整 B 点。我想将 A 点和 B 点之间的距离减少到 0.5 而不是 1(调整到位置 C,如图所示)。我正在努力弄清楚如何做到这一点。

A 点 (0,0,0) 已知,B 点 (1,1,1) 已知,调整距离 (0.5) 已知。我如何计算?

伪代码:

Point3D A = new Point3D { X = 0, Y = 0, Z = 0 };
Point3D B = new Point3D { X = 1, Y = 1, Z = 1 };
Double distanceToAdjust = 0.5;

Point3D newCoordinate = B - distanceToAdjust; // this doesnt work!

调整后的B点如下图所示:

enter image description here

我正在使用自己定义的 Point3D 类和 Vector3D 类。

最佳答案

让我们为您的点假设您给定的参数,并创建第三个点,我们将其称为 newCoordinate,该点 A 将作为您的引用:

Point3D A = new Point3D { X = 0, Y = 0, Z = 0 };
Point3D B = new Point3D { X = 1, Y = 1, Z = 1 };

Double distanceToAdjust = 0.5;

Point3D newCoordinate = new Point3D {
A.X + ((B.X - A.X) * distanceToAdjust),
A.Y + ((B.Y - A.Y) * distanceToAdjust),
A.Z + ((B.Z - A.Z) * distanceToAdjust)
}

这里我们看到了原始点:

Original plotted points

假设此值,newCoordinate 将位于 X=0.5、Y=0.5、Z=0.5。漂亮的图表如下:

enter image description here

就在那里,就在两个原始点之间。

作为模拟,如果您更改 A 和 B 并改为假定此值:

Point3D A = new Point3D { X = -8, Y = 4, Z = 3 };
Point3D B = new Point3D { X = 3, Y = 2, Z = 1 };

那么 newCoordinate 位置将为 X=-2.5, Y=3, Z=2。

enter image description here

现在,相同点,但使用 distanceToAdjust = 1.2:

enter image description here

记住这两点:

  • 距离的变化总是需要一个引用点。在我的样本中,我假定为 A;这就是为什么它出现在每个 newCoordinate 参数初始化的第一部分。
  • distanceToAdjust 被视为一个乘数

附录:我用来帮助可视化的漂亮工具 can be found here .

关于c# - 如何将一个 3D 点与另一个 3D 点的距离调整给定距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21001728/

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