Q-rover-Kai用計算ライブラリ 使用非推奨 動作未確認 あんまり意味なかった
Qcal.cpp
- Committer:
- KOTAROYamamoto
- Date:
- 2017-12-07
- Revision:
- 0:5ed58f4ef4fb
File content as of revision 0:5ed58f4ef4fb:
#include "mbed.h" #include <math.h> #include "Qcal.h"/* #define float lat1 ;//緯度一度あたりの距離(m) #define float lon1 ;//経度一度あたりの距離(m) #define float X ;//現在地−ゴール間の経度方向距離(m) #define float Y ;//現在地−ゴール間の緯度方向距離(m) #define float X2 ;//現在地−ゴール間の経度方向距離(m) #define float Y2 ;//現在地−ゴール間の緯度方向距離(m) #define float pan ; #define float dan ; #define float an ;//理想回転角 */ QCal::QCal(float gn,float ge,float lat1,float lon1){ float X;//現在地−ゴール間の経度方向距離(m) float Y;//現在地−ゴール間の緯度方向距離(m) float X2;//現在地−ゴール間の経度方向距離(m) float Y2;//現在地−ゴール間の緯度方向距離(m) float pan; float dan; float an;//理想回転角 } float QCal::QCalculate(float X,float Y,float mx,float my){ float PI = 3.1416; pan = (atan2(X,Y)*180)/PI;//位置角(°)panを定義 dan = (atan2(mx,my)*180)/PI;//方位角(°)danを定義 if(fabs(180-(pan-dan))-180>0){ an = (180-fabs(pan-dan)); } else if(fabs(180-(pan-dan))-180<0){ an = fabs(pan-dan)-180; } return an; } float QCal::QCalculateRed(float X,float Y,float X2,float Y2){ float PI = 3.1416; pan = (atan2(X2,Y2)*180)/PI;//位置角(°)panを定義 dan = (atan2(X2-X,Y2-Y)*180)/PI;//方位角(°)danを定義 if(fabs(180-(pan-dan))-180>0){ an = (180-fabs(pan-dan)); } else if(fabs(180-(pan-dan))-180<0){ an = fabs(pan-dan)-180; } return an; }