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. 畫一條垂直線
- 3. 在谷歌地圖中畫一條垂直於兩點的線
- 4. Android - Java:如何畫一條直線慢
- 5. 如何在畫布上的兩點之間畫一條直線與安卓手機
- 6. 在Core Plot中畫一條垂直線?
- 7. 無法在一條線上對齊兩個div的垂直線
- 8. 如何在matlab中繪製一條直線的垂直平分線?
- 9. 直線與三角形邊的交點
- 10. 如何畫JUNG2的直線?
- 11. CodenamOne直線條形圖
- 12. 從一點到兩點所代表的一條直線的垂直距離
- 13. 通過兩點直線距離點的直線方程 - C
- 14. 在swift 3和核心圖形中畫出一條直線
- 15. 畫直線
- 16. ggplot - 在一條直線
- 17. 你如何找到距離某條線的給定垂直距離上的點?
- 18. touchmove在畫布上畫兩條線而不是一條線
- 19. 在Cocos2d的屏幕上畫一條直線?
- 20. 的UIView動畫弓,而不是在一條直線上
- 21. 如何將一條線分成兩條單獨的線?
- 22. matplotlib繪製一條與x軸形成固定角度的直線
- 23. 從給定點垂直於線段
- 24. 如何在兩條其他平行線之間繪製直線?
- 25. 繪製直線的線條
- 26. 獲取從地圖上畫出一條直線上的座標
- 27. 如何迭代直線上的點?
- 28. 在谷歌地圖v2上畫一條直線
- 29. Chart.js如何在條形圖的畫布上添加一條線
- 30. 如何在matlab中查找一條直線的邊緣點?
您將繪製哪個庫? – Bas
我正在使用Silverlight並使用InkPresenter,因此它只是一個點函數的例子,我想。 – descf
http://stackoverflow.com/q/1243614/183120有一個解決方案類似於Andreas'(http://stackoverflow.com/a/7470098/183120) – legends2k