确定围绕对角线的边界矩形

Sim*_*mon 2 java math geometry

用户将在屏幕上定义一条线,该线在绘制时具有给定的粗细(或宽度)。

我现在需要能够确定围绕它的边界矩形的坐标。 在此处输入图片说明

我有坐标 A 和 B,以及线宽 (W)。

如何计算坐标 A1、A2、B1 和 B2。

我进行了搜索,但无法找到与已经提出的问题相对应的问题。

Yve*_*ust 6

Dx= Xb - Xa
Dy= Yb - Ya
D= sqrt(Dx * Dx + Dy * Dy)
Dx= 0.5 * W * Dx / D
Dy= 0.5 * W * Dy / D
Run Code Online (Sandbox Code Playgroud)

这将计算方向上(Dx, Dy)的长度向量。然后是垂直向量。W/2AB(-Dy, Dx)

Xmin = min(Xa, Xb) - abs(Dy) 
Xmax = max(Xa, Xb) + abs(Dy)
Ymin = min(Ya, Yb) - abs(Dx)
Ymax = max(Ya, Yb) + abs(Dx)
Run Code Online (Sandbox Code Playgroud)

更新

我错误地回答了 AABB。

对于笔画的四个角

Xa - Dy, Ya + Dx
Xa + Dy, Ya - Dx
Xb - Dy, Yb + Dx
Xb + Dy, Yb - Dx
Run Code Online (Sandbox Code Playgroud)