我不擅长数学。但是,在游戏开发过程中,我需要将标准化的2D矢量(比如矢量a
)映射到矩形边缘上的点。向量a
表示从矩形中心开始的方向,您可以假设矩形的中心位于原点(0, 0
)。然后,我需要将此矢量的长度更改为位于矩形的边缘而不旋转它。
伪代码可能如下所示:
Vector2D mapVectorToRectangle(Vector2D a, float rectWidth, float rectHeight) {
//Do calculations and return value.
}
我如何在伪代码/ Java中实现它?
答案 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