在C#中绘制平行线

时间:2015-04-22 19:30:14

标签: c# xaml graphics kinect drawingcontext

很抱歉,如果之前已经提出此问题,但我找不到有效的回复或我能理解的回复

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

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

enter image description here

在图片aboe中,它显示了从圆圈到cirlce的平行线,有人可以向我解释或者让我来创建这些线条吗?

1 个答案:

答案 0 :(得分:4)

如果你有一条从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。

如果您对此处更详细的内容感兴趣,可以使用Google搜索并搜索矢量数学或线性代数。