0

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

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

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

在此处输入图像描述

在上面的图片中,它显示了从圆连接到圆的平行线,有人可以向我解释或告诉我创建这些线吗?

4

1 回答 1

4

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

使用向量数学来做到这一点:

  • 求直线的方向向量
  • 找到一个垂直于它的向量
  • 使用垂直向量偏移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.Vector并且System.Windows.Point应该可以正常工作,因为您使用的是 WPF。

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

于 2015-04-22T19:57:35.637 回答