Math 将二维向量映射到矩形

Math 将二维向量映射到矩形,math,geometry,Math,Geometry,我的数学不是很好。然而,在游戏开发过程中,我需要将一个规范化的2D向量,比如向量a,映射到矩形边缘上的一个点。矢量a表示从矩形中心开始的方向,可以假定矩形的中心位于原点(0,0)。然后我需要改变这个向量的长度,使其位于矩形的边缘,而不旋转它 伪代码可能如下所示: Vector2D mapVectorToRectangle(Vector2D a, float rectWidth, float rectHeight) { //Do calculations and return value.

我的数学不是很好。然而,在游戏开发过程中,我需要将一个规范化的2D向量,比如向量
a
,映射到矩形边缘上的一个点。矢量
a
表示从矩形中心开始的方向,可以假定矩形的中心位于原点(
0,0
)。然后我需要改变这个向量的长度,使其位于矩形的边缘,而不旋转它

伪代码可能如下所示:

Vector2D mapVectorToRectangle(Vector2D a, float rectWidth, float rectHeight) {
    //Do calculations and return value.
}
如何在伪代码/Java中实现此功能?

伪代码:

Vector2D mapVectorToRectangle(Vector2D a, float rectWidth, float rectHeight) {
  return a/max(abs(a.x)/rectWidth, abs(b.y)/rectHeight)/2
}

考虑来自原点的光线与方向向量
a
和原点中心矩形相交的下一个伪代码:

if rectWidth * Abs(a.y) < rectHeight * Abs(a.x) then
   x = Sign(a.x) * rectWidth / 2
   y = a.y * x / a.x
else
   y = Sign(a.y) * rectHeight / 2
   x = a.x * y / a.y
如果rectWidth*Abs(a.y)
函数是否返回单个标量值?
a={1,1}
和rect 2x1的结果是什么?
a={-2,1}
和平方2x2的结果是什么?(也许,我不太理解这个问题)@MBo函数不会返回标量值。该函数返回一个向量除以两个标量。在这种情况下,向量是
a
,第一个标量是对
max
的调用,第二个标量是常量
2
。好了,现在就清楚了。我的示例案例的结果是否与您的愿望一致?您所说的向量的位置是什么意思?@MBo这是一个很好的观点,我习惯于将向量视为坐标。更新为使用更好的单词。