FineKernelToolKit 3.1.0

- 総合概要
- 名前空間
- クラス
- ファイル

- ファイル一覧

Matrix_CLI.h
[詳解]
1 // Matrix_CLI.h
2
3 #pragma once
4
5 #include <FK/Matrix.h>
6 #include "Vector_CLI.h"
7
8 namespace FK_CLI {
9
11
23 public ref class fk_Angle {
24 internal:
25 double h_, p_, b_;
26
27 static operator ::fk_Angle (fk_Angle^);
28
29 public:
30 #ifndef FK_DOXYGEN_USER_PROCESS
31 fk_Angle(::fk_Angle);
32 #endif
33
35
38 fk_Angle();
39
41
49 fk_Angle(double h, double p, double b);
50
52
57 fk_Angle(fk_Angle^ angle);
58
60 ~fk_Angle();
61
63 property double h {
64 double get();
65 void set(double value);
66 }
67
69 property double p {
70 double get();
71 void set(double value);
72 }
73
75 property double b {
76 double get();
77 void set(double value);
78 }
79
81
86 void Set(double h, double p, double b);
87 };
88
90
108 public ref class fk_Matrix {
109 internal:
110 ::fk_Matrix *pMatrix;
111 cli::array<float>^ refArray;
112 public:
113
115
118 fk_Matrix();
119
121 fk_Matrix(fk_Matrix^);
122
124 ~fk_Matrix();
125
127 !fk_Matrix();
128
130
136 property double default[int, int] {
137 double get(int, int);
138 void set(int, int, double);
139 }
140
141 #ifndef FK_DOXYGEN_USER_PROCESS
142 cli::array<float>^ GetFloatArray();
143 #endif // FK_DOXYGEN_USER_PROCESS
144
146
148
157 bool Equals(fk_Matrix^ M);
158
160
169 virtual bool Equals(Object^ O) override;
170
172
177 String^ ToString() override;
178
180
190 static fk_HVector^ operator*(fk_Matrix^ M, fk_HVector^ V1);
191
193
205 static fk_Matrix^ operator*(fk_Matrix^ M1, fk_Matrix^ M2);
206
208
216 static fk_Matrix^ operator*(double d, fk_Matrix^ M1);
217
219
227 static fk_Matrix^ operator*(fk_Matrix^ M1, double d);
228
230
240 static fk_Matrix^ operator-(fk_Matrix^ M1, fk_Matrix^ M2);
241
243
253 static fk_Matrix^ operator+(fk_Matrix^ M1, fk_Matrix^ M2);
254
256
266 static void operator +=(fk_Matrix^ M1, fk_Matrix^ M2);
267
269
279 static void operator -=(fk_Matrix^ M1, fk_Matrix^ M2);
280
282
297 static void operator *=(fk_Matrix^ M1, fk_Matrix^ M2);
298
300
301
303
306 void Init();
307
309
325 void Set(int row, int col, double value);
326
327
329
347 void SetRow(int row, fk_Vector^ V);
348
350
368 void SetRow(int row, fk_HVector^ V);
369
371
389 void SetCol(int col, fk_Vector^ V);
390
392
410 void SetCol(int col, fk_HVector^ V);
411
412
414
422 fk_HVector^ GetRow(int row);
423
425
433 fk_HVector^ GetCol(int col);
434
436
438
439
441
454 bool Inverse();
455
457
466 fk_Matrix^ GetInverse();
467
469
474 void Negate();
475
477
485 bool IsRegular();
486
488
497 bool IsSingular();
498
500
502
503
504
506
513 void MakeRot(double rad, fk_Axis axis);
514
516
523 void MakeTrans(double x, double y, double z);
524
526
531 void MakeTrans(fk_Vector^ V);
532
534
542 void MakeEuler(double h, double p, double b);
543
545
551 void MakeEuler(fk_Angle^ angle);
552
554
561 void MakeScale(double x, double y, double z);
562
564
570 void MakeScale(fk_Vector^ V);
571 };
572 }
573
574 /****************************************************************************
575 *
576 * Copyright (c) 1999-2016, Fine Kernel Project, All rights reserved.
577 *
578 * Redistribution and use in source and binary forms,
579 * with or without modification, are permitted provided that the
580 * following conditions are met:
581 *
582 * - Redistributions of source code must retain the above
583 * copyright notice, this list of conditions and the
584 * following disclaimer.
585 *
586 * - Redistributions in binary form must reproduce the above
587 * copyright notice, this list of conditions and the
588 * following disclaimer in the documentation and/or
589 * other materials provided with the distribution.
590 *
591 * - Neither the name of the copyright holders nor the names
592 * of its contributors may be used to endorse or promote
593 * products derived from this software without specific
594 * prior written permission.
595 *
596 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
597 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
598 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
599 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
600 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
601 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
602 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
603 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
604 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
605 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
606 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
607 * POSSIBILITY OF SUCH DAMAGE.
608 *
609 ****************************************************************************/
610 /****************************************************************************
611 *
612 * Copyright (c) 1999-2016, Fine Kernel Project, All rights reserved.
613 *
614 * 本ソフトウェアおよびソースコードのライセンスは、基本的に
615 * 「修正 BSD ライセンス」に従います。以下にその詳細を記します。
616 *
617 * ソースコード形式かバイナリ形式か、変更するかしないかを問わず、
618 * 以下の条件を満たす場合に限り、再頒布および使用が許可されます。
619 *
620 * - ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、
621 * および下記免責条項を含めること。
622 *
623 * - バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の
624 * 資料に、上記の著作権表示、本条件一覧、および下記免責条項を
625 * 含めること。
626 *
627 * - 書面による特別の許可なしに、本ソフトウェアから派生した製品の
628 * 宣伝または販売促進に、本ソフトウェアの著作権者の名前または
629 * コントリビューターの名前を使用してはならない。
630 *
631 * 本ソフトウェアは、著作権者およびコントリビューターによって「現
632 * 状のまま」提供されており、明示黙示を問わず、商業的な使用可能性、
633 * および特定の目的に対する適合性に関す暗黙の保証も含め、またそれ
634 * に限定されない、いかなる保証もないものとします。著作権者もコン
635 * トリビューターも、事由のいかんを問わず、損害発生の原因いかんを
636 * 問わず、かつ責任の根拠が契約であるか厳格責任であるか(過失その
637 * 他の)不法行為であるかを問わず、仮にそのような損害が発生する可
638 * 能性を知らされていたとしても、本ソフトウェアの使用によって発生
639 * した(代替品または代用サービスの調達、使用の喪失、データの喪失、
640 * 利益の喪失、業務の中断も含め、またそれに限定されない)直接損害、
641 * 間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害に
642 * ついて、一切責任を負わないものとします。
643 *
644 ****************************************************************************/
FK_CLI::fk_Matrix::Init
void Init()
単位行列化メソッド
FK_CLI::fk_Angle::~fk_Angle
~fk_Angle()
デストラクタ
FK_CLI::fk_Matrix::SetCol
void SetCol(int col, fk_Vector^ V)
列ベクトル成分設定メソッド1
FK_CLI::fk_Matrix::operator+=
static void operator+=(fk_Matrix^ M1, fk_Matrix^ M2)
行列和代入演算子
FK_CLI::fk_Matrix::operator*
static fk_HVector^ operator*(fk_Matrix^ M, fk_HVector^ V1)
ベクトル変換二項演算子
FK_CLI::fk_Angle
オイラー角を表すクラス
Definition: Matrix_CLI.h:23
FK_CLI::fk_Matrix::IsRegular
bool IsRegular()
正則判定メソッド
FK_CLI::fk_Angle::p
double p
ピッチ角プロパティ
Definition: Matrix_CLI.h:69
FK_CLI::fk_Matrix::GetCol
fk_HVector^ GetCol(int col)
列ベクトル成分取得メソッド
FK_CLI::fk_Matrix::MakeTrans
void MakeTrans(double x, double y, double z)
平行移動行列生成メソッド1
FK_CLI::fk_Matrix::operator-
static fk_Matrix^ operator-(fk_Matrix^ M1, fk_Matrix^ M2)
行列差二項演算子
Vector_CLI.h
FK_CLI::fk_HVector
4次元ベクトルを管理するクラス
Definition: Vector_CLI.h:446
FK_CLI::fk_Matrix::~fk_Matrix
~fk_Matrix()
デストラクタ
FK_CLI::fk_Matrix::Negate
void Negate()
転置化メソッド
FK_CLI::fk_Matrix::GetRow
fk_HVector^ GetRow(int row)
行ベクトル成分取得メソッド
FK_CLI::fk_Matrix::IsSingular
bool IsSingular()
特異判定メソッド
FK_CLI::fk_Matrix::ToString
String^ ToString() override
文字列出力メソッド
FK_CLI::fk_Matrix::Inverse
bool Inverse()
逆行列化メソッド
FK_CLI::fk_Matrix
4元正方行列を管理するクラス
Definition: Matrix_CLI.h:108
FK_CLI::fk_Matrix::MakeRot
void MakeRot(double rad, fk_Axis axis)
座標軸回転行列生成メソッド
FK_CLI::fk_Angle::h
double h
ヘディング角プロパティ
Definition: Matrix_CLI.h:63
FK_CLI::fk_Axis
fk_Axis
座標軸を表す列挙型
Definition: Vector_CLI.h:12
FK_CLI::fk_Vector
3次元ベクトルを管理するクラス
Definition: Vector_CLI.h:37
FK_CLI::fk_Angle::Set
void Set(double h, double p, double b)
設定用メソッド
FK_CLI::fk_Matrix::MakeEuler
void MakeEuler(double h, double p, double b)
オイラー角回転行列生成メソッド1
FK_CLI::fk_Angle::fk_Angle
fk_Angle()
コンストラクタ1
FK_CLI::fk_Matrix::operator+
static fk_Matrix^ operator+(fk_Matrix^ M1, fk_Matrix^ M2)
行列和二項演算子
FK_CLI::fk_Matrix::operator*=
static void operator*=(fk_Matrix^ M1, fk_Matrix^ M2)
行列積代入演算子1
FK_CLI::fk_Angle::b
double b
バンク角プロパティ
Definition: Matrix_CLI.h:75
FK_CLI::fk_Matrix::GetInverse
fk_Matrix^ GetInverse()
逆行列取得演算子
FK_CLI::fk_Matrix::MakeScale
void MakeScale(double x, double y, double z)
拡大縮小行列生成メソッド1
FK_CLI::fk_Matrix::fk_Matrix
fk_Matrix()
コンストラクタ
FK_CLI::fk_Matrix::Equals
bool Equals(fk_Matrix^ M)
同値比較メソッド1
FK_CLI::fk_Matrix::operator-=
static void operator-=(fk_Matrix^ M1, fk_Matrix^ M2)
行列差代入演算子1
FK_CLI::fk_Matrix::Set
void Set(int row, int col, double value)
成分設定メソッド
FK_CLI::fk_Matrix::SetRow
void SetRow(int row, fk_Vector^ V)
行ベクトル成分設定メソッド1
FK_CLI
Definition: AppWindow_CLI.h:11