我需要一些幫助來編程位移計算。給定物體在 XY 平面上移動的距離,以及物體的偏航(航向),我想計算物體的位移。例如,物件向北移動了 5m,向東移動了 2m。
我擁有的資料是它在 XY 平面中行進的距離(X 距離和 Y 距離)以及由 X 方向確定的設備航向。我知道如何在紙上計算它,但我無法編程它。
我附上了兩個例子,展示了我是如何獲得計算的。黑點是物體的位移。在第一個示例中,行進的 X 距離為 3 米,而 Y 距離為 4 米,X 軸的航向為 70°。經過計算,我設法得到它向南移動了 2.733m,向東移動了 4.187m。在例2中,它行進,X距離為-5m,Y距離為-12m,航向為160°。我計算出該物體向北移動了 8.80m,向東移動了 9.566m。
示例 1 示例 2
uj5u.com熱心網友回復:
假設您的 XY 窗格旋轉了某個角度Zp,并且在該窗格中有一個 2D 運動矢量,假設它的方向旋轉了Zv- 相對于全域方向,矢量的總旋轉是多少?Zp Zv...
因此,您需要做的就是將旋轉Zp應用于 XY 窗格內的移動向量,即將旋轉矩陣應用于向量。這個用于旋轉的矩陣z如下所示:
cos(z) -sin(z)
sin(z) cos(z)
有了我們上面的資料:
north = cos(Zp) * x - sin(Zp) * y
east = sin(Zp) * x cos(Zp) * y
這給出了,你的第一個樣本資料應用:
north = cos(70°) * 3 - sin(70°) * 4 ~ -2.7327
east = sin(70°) * 3 cos(70°) * 4 ~ 4.1872
north = cos(160°) * -5 - sin(160°) * -12 ~ 8.8027
east = sin(160°) * -5 cos(160°) * -12 ~ 9.5662
幾乎與您計算的值相對應(注意:向北的負向移動是向南的正向移動......)。
uj5u.com熱心網友回復:
您正在做的是從極坐標到笛卡爾坐標的轉換。https://en.wikipedia.org/wiki/Polar_coordinate_system#Converting_between_polar_and_Cartesian_coordinates
如果您的笛卡爾坐標未與極軸對齊,只需通過將旋轉角度添加到極軸引數來進行補償。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/483286.html
標籤:C 数学 arduino-ide
上一篇:紙漿:最小化決策變數的標準偏差
