libGDX - 如何将多边形绘制为线(斜接连接类型)?
libGDX - How can I draw polygon as a line (Miter join type)?
如果我知道像这张图片这样的顶点(红色):
我如何 从已知顶点上方确定这些下方未知顶点,这些顶点将线作为斜接彼此连接?
首先看这个Q/A。
您的任务是相同的,只是简单了一点,因为所有线段的线条粗细都相同。
基本上,你需要计算D点的坐标,当
A、B、C 和线宽 d[=45= 的坐标] 众所周知。
1) 计算角度α,使用Law of Cosines,就像这里
How to calculate an angle from three points?
2) 然后你可以找到向量u和v的长度L:
L =|u| =|v| = d / sin α;
3) 计算向量 u 和 v:
的向量分量
ux = L * (Ax – Bx) / |AB|;
uy = L * (Ay – By) / |AB|;
|AB| - 向量的长度 AB,可以很容易地从点坐标 A 和 B.
vx = L * (Cx – Bx) / |BC|;
vy = L * (Cy – By) / |BC|;
4) 最后找到D点的坐标:
Dx = Bx + ux + vx;
Dy = By + uy + vy;
5) 对你线上的所有点都这样做。
如果我知道像这张图片这样的顶点(红色):
我如何 从已知顶点上方确定这些下方未知顶点,这些顶点将线作为斜接彼此连接?
首先看这个Q/A。
您的任务是相同的,只是简单了一点,因为所有线段的线条粗细都相同。
基本上,你需要计算D点的坐标,当 A、B、C 和线宽 d[=45= 的坐标] 众所周知。
1) 计算角度α,使用Law of Cosines,就像这里 How to calculate an angle from three points?
2) 然后你可以找到向量u和v的长度L:
L =|u| =|v| = d / sin α;
3) 计算向量 u 和 v:
的向量分量ux = L * (Ax – Bx) / |AB|;
uy = L * (Ay – By) / |AB|;
|AB| - 向量的长度 AB,可以很容易地从点坐标 A 和 B.
vx = L * (Cx – Bx) / |BC|;
vy = L * (Cy – By) / |BC|;
4) 最后找到D点的坐标:
Dx = Bx + ux + vx;
Dy = By + uy + vy;
5) 对你线上的所有点都这样做。