2015-04-22 269 views
0

很抱歉,如果這已被問過,但我無法找到一個有效的響應或響應我能理解繪製在C#中平行線

目前我有畫線從聯合到聯合在代碼Kinect的,這形成了骨:

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

enter image description here

在圖片aboe它顯示平行線從圈子加入到cirlce,可有人請向我解釋或告訴我創建這些線路?

+0

如果問題是關於遊戲開發,你可能會得到更好的幫助(http://gamedev.stackexchange.com/) –

+0

不是遊戲開發,但我正在開發一個應該跟蹤用戶關節的程序,但是我很難做簡單的事情,如圖片顯示。例如,我只需要知道如何繪製圖片中顯示的平行線以及圓圈上方的數字。 – ShatteredPheonix

回答

3

如果您有一條從點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搜索並搜索向量數學或線性代數。

+0

噢,謝謝,當我回到家時,我會嘗試這個,並且我大部分都明白,因爲我必須使用向量數學來計算關節之間的角度。我唯一的問題是我該如何在圈子上面放一個這樣的數字? – ShatteredPheonix

+0

@ShatteredPheonix只需取得關節的位置並補償一下。僞代碼:'DrawText(text,p0 + new Point(0,-10))' – Chris

+0

@ShatteredPheonix稍後你會注意到,如果你想得到完全像這樣的圖片的結果,你還需要修剪線圈到.. ..! – Chris