我在python的烏龜模塊中製作一個向量來控制一隻烏龜的移動。我想知道是否有可能找到矢量的旋轉角度以便用於烏龜的旋轉。我想從其中一個端點找到旋轉角度。感謝您的幫助。尋找一隻烏龜的標題Vec2D
0
A
回答
0
Vec2D實例僅包含X值&。要知道烏龜朝哪個方向前進,您需要一個包含在烏龜內的第三個方向值,而不是在Vec2D中。 (從技術上講,你可能需要知道傾斜以及但是這很少使用。)
的旋轉一個Vec2D的是相對於它與原點所成的角度,無關的標題的turle。簡單地通過Vec2D的相對位置淵源考旋轉
from turtle import Turtle, Screen
screen = Screen()
yertle = Turtle('turtle')
yertle.goto(200, 200)
for _ in range(4):
yertle.goto(yertle.position().rotate(90))
screen.exitonclick()
:例如,我們可以繪製一個正方形這種方式,忽略了龜的標題。 Vec2D相對於原點的角度被稱爲自變量但我沒有看到任何Vec2D方法來獲取它。 This vector package有一個,我們可以爲我們的目的修改:
import math
from turtle import Turtle, Screen
screen = Screen()
screen.mode('logo')
def argument(self):
""" Returns the argument of the vector, the angle clockwise from 0."""
arg_in_rad = math.acos(self[1]/abs(self))
arg_in_deg = math.degrees(arg_in_rad)
if self[0] < 0:
return 360 - arg_in_deg
return arg_in_deg
yertle = Turtle('turtle')
yertle.goto(200, 200)
for _ in range(4):
print(argument(yertle.position()))
yertle.goto(yertle.position().rotate(90))
screen.exitonclick()
請注意,我用mode('logo')
簡化我的數學,因爲我們已經沒有具體的目的也主要在此代碼。雖然這會打印出烏龜相對於原點的位置的角度,但是如果我們執行forward()
命令,它不會告訴我們烏龜的朝向。
如果你想記錄和/或播放烏龜的動作,你可以使你自己的數據結構,包括一個Vec2D和烏龜的方向。
然而,圍繞保持龜的方向,只是用Vec2D位置的列表方式,是指設置龜的列表中的一個Vec2D位置的位置,使用組合turtle.setheading(turtle.towards(position))
上下一個 Vec2D在列表中的位置。這樣,烏龜總是朝着它的下一個位置前進(朝向):
from turtle import Turtle, Screen
positions = [(-3.0, 10.0), (-2.0, 13.0), (0.0, 17.0), (5.0, 23.0), (6.0, 24.0),
(11.0, 27.0), (22.0, 30.0), (49.0, 31.0), (72.0, 26.0), (116.0, 3.0),
(135.0, -31.0), (132.0, -52.0), (128.0, -65.0), (122.0, -84.0),
(109.0, -118.0), (82.0, -158.0), (20.0, -188.0), (-52.0, -181.0),
(-132.0, -136.0), (-213.0, -45.0), (-244.0, 97.0), (-206.0, 225.0)]
screen = Screen()
yertle = Turtle('turtle')
for target, position in enumerate(positions, start=1):
yertle.goto(position)
if target < len(positions):
yertle.setheading(yertle.towards(positions[target]))
screen.mainloop()
相關問題
- 1. Git烏龜問題
- 2. 將烏龜的變量值添加到另一隻烏龜的變量值
- 3. 從名單中刪除一隻烏龜
- 4. 如何將一隻烏龜的變量賦值給另一隻烏龜的變量?
- 5. 烏龜SVN合併問題
- 6. 烏龜和龜的區別?
- 7. 我怎樣才能找出哪隻烏龜在特定的座標netlogo
- 8. 將一隻烏龜移動到一個圓圈的中心
- 9. Netlogo:詢問導向鏈接「我的烏龜」和「我的烏龜」
- 10. SVN烏龜和scplugin
- 11. 烏龜SVN - AnkhSvn(VisualStudio)
- 12. 爲NetLogo中的一隻烏龜分配多個號碼
- 13. 與烏龜SVN問題庫結構
- 14. 烏龜賽車遊戲 - 無法在廣場上保持烏龜
- 15. howto:使烏龜汞和烏龜Svn共存
- 16. 一羣烏龜的平均值
- 17. 如何將烏龜設置爲龜屏
- 18. 一隻烏龜如何在for循環中向上移動?
- 19. 是烏龜SVN一樣顛覆
- 20. 繪製烏龜模塊
- 21. 烏龜SVN提交錯誤
- 22. 烏龜SVN新手結賬
- 23. 從烏龜SVN倉庫
- 24. 關於認證烏龜svn
- 25. Python。學習烏龜圖形
- 26. 與烏龜SVN恢復
- 27. 烏龜SVN導出設置
- 28. 烏龜svn導出功能
- 29. 無法使用烏龜SVN
- 30. 備份烏龜SVN文件
那麼有沒有辦法計算矢量的旋轉角度? – rbhog
@ rbhog,相對於原點(或其他任意的點)確定。但是矢量的旋轉不是烏龜的標題。兩件不同的事情。對於一條路徑上的龜,龜的朝向朝向路徑中的下一個位置。 – cdlane
我想知道的是如何找到旋轉角度與任意點相比較,以在另一個命令中設置烏龜的標題。 – rbhog