我正在努力研究如何以三維弧形運動將點A移動到B.運動的持續時間並不重要。我找到了一大堆的維基百科頁面,但是自從我上大學以來很久沒有理解它們了。任何代碼示例對我來說都是非常有用的。謝謝,我真的很感謝你的幫助。這裏有一張圖片顯示了我期望實現的目標,儘管圖片僅代表2d中的點,我正在尋找3D解決方案。將點A以三維弧形運動移動到點B
回答
它,如果它的2D或3D不事關。 你採取每個點的位置,並找到中心beetwean他們。 距離beetwean中心,每個點是半徑。然後給物體一個移動的方向,並告訴它總是處於與中心相距半徑的距離。這是一個移動矢量,你可以給它任何你想要的方向。
假設你的問題的說法是:
給出點
a
和b
,跟蹤圓形路徑沿着位於切線up
矢量飛機:
而且你有合適的載體代數庫:
def interp(a, b, up, t):
""" 0 <= t <= 1"""
# find center and radius vector
center = (a + b)/2
radius = a - center
# split path into upwards and downwards section
omega = math.acos(radius.dot(up)) # angle between center-a and center-top
t_top = omega/math.pi # time taken to reach the top
# redefine 0 as A, 1 as the top, and B as whatever remains linear
t = t/t_top
#slerp, with t intentionally > 1
sin = math.sin
return (
center +
sin((1 - t) * omega)/sin(omega) * radius +
sin(t * omega)/sin(omega) * up
)
明確聲明庫依賴關係將會很好。此外,我會使用與所需平面正交的矢量以及交叉乘積和左手或右手規則,而不是「上」 - 但是OP沒有詳細說明這一點... – mbschenkel
@mbschenkel:我是沒有指定依賴性,因爲沒有人需要在這裏。 'numpy'是一種選擇,'pyeuclid'是另一種選擇。無論如何,是不是所希望的飛機最好用「向上」向量來標識?你能詳細說明一下嗎? – Eric
我對python並不熟悉,所以非常感謝指針。有一個無限數量的「向上」向量,而與該平面正交的(單位)向量'v'是唯一的(實際上當然有兩個:'v'和'-v',但是這種模糊性可以用於定義旋轉方向)。'up'向量可以很容易地計算爲'up = vx(ab)',其中'x'是叉積。 – mbschenkel
- 1. 使用jQuery將點表A從點A移動到點B
- 2. Cocos2d - 將一個精靈從A點移動到B點,以正弦波運動
- 3. 移動gameObject點A到點B
- 4. 直接從A點移動到B點
- 5. 以恆定速度將物體從點A移動到點B
- 6. 在二維空間中將點從A移動到B
- 7. 將對象從A點移動到B點
- 8. Libgdx Actions =>將演員從A點逐漸移動到B點
- 9. Android-想要顯示圖形以將對象從一個點A移動到B
- 10. 從點A到點B的Pygame子彈運動
- 11. FFmpeg的 - 從A點移動覆蓋到B到C到d
- 12. 使用XAML/C將一個按鈕從A點移動到B點#
- 13. 將UILabel從A點拖到B點
- 14. 如何將圖形視點移動到三維位置,查看矢量?
- 15. 移動物體從a點移動到b點(2D),只能向前移動並自行旋轉
- 16. 可以將對象從矢量A移動到矢量B,但不能從B移動到A?
- 17. 我該如何讓一個botton從A點移動到Android Studio中的B點?
- 18. 如何確定在Javascript中從點A到點B的鼠標移動效率?
- 19. 從二維空間中的點A到點B的標題?
- 20. 如何使用機器人課程將鼠標從a點移動到b點的動畫?
- 21. 如何在某種程度上將UIImageview從點A移動到B
- 22. Windows Phone:使用PointAnimation將圖像從點A動畫到B
- 23. 如何使用applyImpulse按照自定義貝塞爾路徑將節點從點A移動到點B
- 24. OWL Api,從父級A移動到B
- 25. 三個js相機移動到點
- 26. C#動畫 - 將對象從A移動到B或按角度移動對象
- 27. 如何使用andengin中的移動修改器將精靈從點A移動到B?
- 28. XSLT - 將節點移動到父節點
- 29. 遷移:在遷移過程中實際上從A點移動到B點的是什麼?
- 30. numpy的:點(A,B)和(A * B)的.sum()
「弧」,你的意思是確切的半圓?在2D中,在任何點之間都有兩種方法。在3D中,有無限多的 - 你想要哪一個? – Eric