C# 找到两点之间的极限点 我有点A和另一点(如B、C或D)的坐标 我还有A和另一点之间的距离 我知道A和另一点之间允许的最大距离(用紫色线和假想的圆表示) 问题:如何找到红色点(B1、C1或D1)的坐标 示例:A=(-1,1),E=(3,-8),最大允许距离=4。点E1的坐标是多少

C# 找到两点之间的极限点 我有点A和另一点(如B、C或D)的坐标 我还有A和另一点之间的距离 我知道A和另一点之间允许的最大距离(用紫色线和假想的圆表示) 问题:如何找到红色点(B1、C1或D1)的坐标 示例:A=(-1,1),E=(3,-8),最大允许距离=4。点E1的坐标是多少,c#,vector,xna,C#,Vector,Xna,以下是问题的图像: 注: 我发现另外两个问题非常相似或相等,但我无法解决这些问题: 顺便说一句,这不是家庭作业我需要这个来解决编程问题,但我忘了数学…假设a是位置向量,B是位置向量,maxLength是允许的最大长度 A和B是的(正如您标记此问题一样) 这真的是一个编程问题吗?这似乎更像是一个基本的数学问题,所以,你想要一个a->B/C/D方向的向量,长度为MaxDistance?萨纳托斯:是的,这是一个编程问题,因为这是我在C#/XNA中为游戏设置集合点的问题。乔治:不,我不想要向量(像

以下是问题的图像:

注: 我发现另外两个问题非常相似或相等,但我无法解决这些问题:


顺便说一句,这不是家庭作业我需要这个来解决编程问题,但我忘了数学…

假设a是位置向量,B是位置向量,maxLength是允许的最大长度

A
B
是的(正如您标记此问题一样)


这真的是一个编程问题吗?这似乎更像是一个基本的数学问题,所以,你想要一个a->B/C/D方向的向量,长度为MaxDistance?萨纳托斯:是的,这是一个编程问题,因为这是我在C#/XNA中为游戏设置集合点的问题。乔治:不,我不想要向量(像向量)但我只需要A->B之间直线上点的坐标,例如,点的确切位置受最大范围限制(不确定)。是的,坐标确实是矢量2结构。这个解决方案工作得很好,而且似乎也不会花费太多的性能。只需注意Normalize()返回void,因此它仍然需要2-3行,但仍然可以工作。@user653160:更正为使用static
Normalize
方法。
// Create a vector that describes going from A to B
var AtoB = (B - A);
// Make a vector going from A to B, but only one unit in length
var AtoBUnitLength = Vector2.Normalize(AtoB);
// Make a vector in the direction of B from A, of length maxLength
var AtoB1 = AtoBUnitLength * maxLength;
// B1 is the starting point (A) + the direction vector of the
// correct length we just created.
var B1 = A + AtoB1;

// One liner:
var B1 = A + Vector2.Normalize(B - A) * maxLength;