Sim*_*mon 2 java math geometry
用户将在屏幕上定义一条线,该线在绘制时具有给定的粗细(或宽度)。
我有坐标 A 和 B,以及线宽 (W)。
如何计算坐标 A1、A2、B1 和 B2。
我进行了搜索,但无法找到与已经提出的问题相对应的问题。
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)
| 归档时间: |
|
| 查看次数: |
1018 次 |
| 最近记录: |