在 C# 中绘制平行线

Drawing Parallel Lines in C#

抱歉,如果之前有人问过这个问题,但我找不到有效的回复或我能理解的回复

目前我有一个代码在 Kinect 中从一个关节到另一个关节绘制一条线,这形成了骨骼:

  drawingContext.DrawLine(drawPen, jointPoints[jointType0], jointPoints[jointType1]);

在图片 aboe 中,它显示了从一个圆到另一个圆的平行线,有人可以向我解释或告诉我如何创建这些线吗?

如果您有一条从点 p0 到点 p1 的直线,并且想要创建一条平行线/偏移线,您需要使用三角函数或矢量数学。

要使用矢量数学来完成:

  • 求直线的方向向量
  • 求一个垂直于那个的向量
  • 使用垂直向量偏移p0p1

伪代码:

Vector vLine = ( p1 - p0 ).Normalized();
Vector vPerp = new Vector( -vLine.Y, vLine.X );
Point newp0 = p0 + vPerp * offset distance
Point newp1 = p1 + vPerp * offset distance
DrawLine( newp0, newp1 );

反转偏移量或取反 vPerp 以获得另一侧的线。你如何做到这一点取决于你有什么可用的。 System.Windows.VectorSystem.Windows.Point 应该可以正常工作,因为您使用的是 WPF。

如果您对这里发生的事情更详细感兴趣,请继续谷歌搜索并搜索矢量数学或线性代数。