慣性航法で用いられる座標変換をプログラムにしました。ECI座標の初期位置を設定した後、ECI,ECEF,NED,機体座標系の変換を行います。行列計算の方法や値の設定などは、ヘッダーファイル内の記述を見れば分かると思います。 また計算結果はTeratermで確認する事が出来ます。 (行列を見る場合はtoString関数、ベクトルを見る場合はtoString_V関数を使用します)
Vector/Vector.h
- Committer:
- Joeatsumi
- Date:
- 2019-01-30
- Revision:
- 0:6a28eb668082
File content as of revision 0:6a28eb668082:
#pragma once #include "mbed.h" class Matrix; class Vector { public: Vector(int dim); ~Vector(); Vector(const Vector& v); Vector& operator=(const Vector& v); Vector operator+(); Vector operator-(); Vector& operator*=(float c); Vector& operator/=(float c); Vector& operator+=(const Vector& v); Vector& operator-=(const Vector& v); void SetComp(int dimNo, float val); void SetComps(float* vals); float GetNorm() const; Vector Normalize() const; Vector GetParaCompTo(Vector v); Vector GetPerpCompTo(Vector v); inline int GetDim() const { return dim; } inline const float* GetpComponents() const { return (const float*)components; } inline float GetComp(int dimNo) const { if (dimNo > dim) error("Index Out of Bounds Error !!"); return components[dimNo-1]; } void CleanUp(); private: int dim; float* components; Vector& operator*=(const Matrix& m); Vector& operator*=(const Vector& m); }; Vector operator+(const Vector& lhv, const Vector& rhv); Vector operator-(const Vector& lhv, const Vector& rhv); Vector Cross(const Vector& lhv, const Vector& rhv); Vector operator*(const float c, const Vector& rhv); Vector operator*(const Vector& lhv, const float c); float operator*(const Vector& lhv, const Vector& rhv);