Idealy我想提供一系列的點,並在每個點都有一條直角(從第二點開始)畫一條直線。每條線的方向將會交替出現,所以如果我碰巧繪製了一個由6個點組成的曲線,則會爲每個以第二個點開始的點繪製一個給定長度的線,也就是說,交替兩側會增加5條線的曲線,有點像一條腿交替的毛毛蟲。 (我知道這些線不會完全與曲線成直角,而是與曲線上任意兩點形成的直線成直角)。給定2分我如何在與兩點形成的直線上畫一條直線?
13
A
回答
30
這是一個問題vector mathematics。您可以通過從A中減去B來計算A點和B點之間的引導矢量。在2D中,只有在2D中,通過反轉x和y分量並將一個分量取爲負值,可以獲得與此矢量成直角的向量。如果你否定新的x分量,你會左轉,通過否定y你會右轉。然後,可以通過將每個分量除以矢量的長度(sqrt(x x + y y)),將導向矢量縮小爲單位大小(=長度1)。最後,您可以根據需要的長度再次拉伸單位矢量,並獲得您想要的大小之一。如果將此矢量添加到A或B,則會得到要繪製線條的點。
這裏有一個小數學題:
這是A和B點表示爲向量。
的引導矢量由一個簡單的減法計算。
該法線矢量通過翻轉導向矢量給定,即扭轉組件和使一種成分爲陰性。 NL =正常,翻轉到左側,NR =正常,翻轉到正常矢量的單位矢量被由向量的長度除以每個部件給予正確
。
計算一個矢量的長度
如果要(從A到來時)來繪製從B中的線向左你計算點P畫線爲
因此,當迭代點時,您希望一次繪製到左側,一次到右側。
如果你有點在你的畫布外面,那麼你的長度可能太大了。通過計算矢量BP和邊界的交點,當然可以計算出P的矢量將穿過邊界的點。
相關問題
- 1. 找到一條直線與已知直線相交,給定一個點
- 2. 在wpf RichTextBox上畫一條垂直線
- 3. 給定一個邊界框和一條直線(兩個點),確定直線是否與方框相交
- 4. 如何找到給定線的另一點和垂直線上的2個點的線上點的X座標?
- 5. 從點畫出一條直線
- 6. c#畫一條直線
- 7. 畫一條垂直線
- 8. 畫一條直線iOS
- 9. 在ios中的視圖上畫出一條直線給定點和度數?
- 10. 在谷歌地圖中畫一條垂直於兩點的線
- 11. Android - Java:如何畫一條直線慢
- 12. 如何在畫布上的兩點之間畫一條直線與安卓手機
- 13. 如何在同一圖表的兩個Y軸上繪製一條直線和一條直線,用R-ggplot?
- 14. 基於兩條線以上畫線的交點的生成點
- 15. 無法在一條線上對齊兩個div的垂直線
- 16. 在Core Plot中畫一條垂直線?
- 17. 畫一條垂直線,當兩個線圖相遇 - SSRS
- 18. 如何在matlab中繪製一條直線的垂直平分線?
- 19. 條形圖上的垂直線
- 20. 如何畫JUNG2的直線?
- 21. 直線與三角形邊的交點
- 22. CodenamOne直線條形圖
- 23. 從一點到兩點所代表的一條直線的垂直距離
- 24. 在Android中畫一條垂直線,由相等部分分開
- 25. 畫一條直線元素HTML 5
- 26. 在swift 3和核心圖形中畫出一條直線
- 27. 找到垂直於給定線的點
- 28. 找到線段上的點以形成直角三角形?
- 29. 畫直線
- 30. ggplot - 在一條直線
您將繪製哪個庫? – Bas
我正在使用Silverlight並使用InkPresenter,因此它只是一個點函數的例子,我想。 – descf
http://stackoverflow.com/q/1243614/183120有一個解決方案類似於Andreas'(http://stackoverflow.com/a/7470098/183120) – legends2k