用户将在屏幕上定义一条线,当绘制时,该线将具有给定的厚度(或宽度)。
我有坐标A和B,以及线条粗细(W)。
如何计算坐标A1,A2,B1和B2。
我搜索过但无法找到与此问题相对应的问题。
答案 0 :(得分:1)
Dx= Xb - Xa
Dy= Yb - Ya
D= sqrt(Dx * Dx + Dy * Dy)
Dx= 0.5 * W * Dx / D
Dy= 0.5 * W * Dy / D
这会在(Dx, Dy)
的方向上计算W/2
长度为AB
的向量。然后(-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)
<强>更新强>:
我错误地回答了AABB。
对于笔画的四个角落
Xa - Dy, Ya + Dx
Xa + Dy, Ya - Dx
Xb - Dy, Yb + Dx
Xb + Dy, Yb - Dx