将2D矢量映射到矩形

时间:2017-07-29 04:45:03

标签: math geometry

我不擅长数学。但是,在游戏开发过程中,我需要将标准化的2D矢量(比如矢量a)映射到矩形边缘上的点。向量a表示从矩形中心开始的方向,您可以假设矩形的中心位于原点(0, 0)。然后,我需要将此矢量的长度更改为位于矩形的边缘而不旋转它。

伪代码可能如下所示:

Vector2D mapVectorToRectangle(Vector2D a, float rectWidth, float rectHeight) {
    //Do calculations and return value.
}

我如何在伪代码/ Java中实现它?

2 个答案:

答案 0 :(得分:1)

伪代码:

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

答案 1 :(得分:0)

考虑下一个来自原点的光线与方向向量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