如何用坐标绘制箭头?

Sen*_*rek 0 c# math geometry itext coordinates

当您只有线条的源点和目标点的坐标时,有没有一种很好的方法来绘制箭头?

参考图片

所以我使用 ITextSharp,用 c# 编程。我知道如何轻松计算坡度和其他内容,但是有没有办法计算“箭头”三角形(在图像中标记为红色)的边缘坐标?

提前致谢

MBo*_*MBo 6

你的中心线是从(x1,y1)到 的向量(x2,y2)

向后方向向量D = (dx, dy) = (x1-x2, y1-y2)

它的长度:Norm = Sqrt(dx * dx + dy * dy)

将其标准化:uD = (udx, udy) = (dx/Norm, dy/Norm)

要形成箭头的“翅膀”,请旋转uD所需的角度。例如,我将角度Pi/6Cos(Pi/6) = Sqrt(3)/2和 一起使用Sin(Pi/6) = 1/2

ax = udx * Sqrt(3)/2 - udy * 1/2
ay = udx * 1/2 + udy * Sqrt(3)/2
bx = udx * Sqrt(3)/2 + udy * 1/2
by =  - udx * 1/2 + udy * Sqrt(3)/2
Run Code Online (Sandbox Code Playgroud)

头部与翼长的要点L=20

 (x1 + 20 * ax, y1 + 20 * ay) 
and
 (x1 + 20 * bx, y1 + 20 * by)
Run Code Online (Sandbox Code Playgroud)