FineKernelToolKit 4.2.13
読み取り中…
検索中…
一致する文字列を見つけられません
Matrix_CLI.h
[詳解]
1#pragma once
2
3#include <FK/Matrix.h>
4#include "Vector_CLI.h"
5
6namespace FK_CLI {
7
9
21 public ref class fk_Angle {
22 internal:
23 double h_, p_, b_;
24
25 static operator ::FK::fk_Angle (fk_Angle^);
26
27 public:
28#if !defined(FK_DOXYGEN_USER_PROCESS)
29 fk_Angle(::FK::fk_Angle);
30#endif
31
33
37
39
47 fk_Angle(double h, double p, double b);
48
50
56
59
61 property double h {
62 double get();
63 void set(double value);
64 }
65
67 property double p {
68 double get();
69 void set(double value);
70 }
71
73 property double b {
74 double get();
75 void set(double value);
76 }
77
79
84 void Set(double h, double p, double b);
85 };
86
88
106 public ref class fk_Matrix {
107 internal:
108 ::FK::fk_Matrix *pMatrix;
109 cli::array<float>^ refArray;
110 public:
111
113
117
120
123
126
128
135 property double default [int, int] {
136 double get(int, int);
137 void set(int, int, double);
138 }
139
140#if !defined(FK_DOXYGEN_USER_PROCESS)
141 cli::array<float>^ GetFloatArray();
142#endif // FK_DOXYGEN_USER_PROCESS
143
145
147
157
159
168 virtual bool Equals(Object^ O) override;
169
171
176 String^ ToString() override;
177
179
190
192
205
207
215 static fk_Matrix^ operator*(double d, fk_Matrix^ M1);
216
218
226 static fk_Matrix^ operator*(fk_Matrix^ M1, double d);
227
229
240
242
253
255
266
268
279
281
297
300
302
305 void Init();
306
308
324 void Set(int row, int col, double value);
325
326
328
346 void SetRow(int row, fk_Vector^ V);
347
349
367 void SetRow(int row, fk_HVector^ V);
368
370
388 void SetCol(int col, fk_Vector^ V);
389
391
409 void SetCol(int col, fk_HVector^ V);
410
411
413
422
424
433
435
438
440
453 bool Inverse();
454
456
466
468
473 void Negate();
474
476
484 bool IsRegular();
485
487
497
499
502
504
511 void MakeRot(double rad, fk_Axis axis);
512
514
521 void MakeTrans(double x, double y, double z);
522
524
530
532
540 void MakeEuler(double h, double p, double b);
541
543
549 void MakeEuler(fk_Angle^ angle);
550
552
559 void MakeScale(double x, double y, double z);
560
562
569
571
583 void MakePerspective(double fovy, double near, double far, double aspect);
584
585
587
601 void MakeFrustum(double left, double right, double bottom, double top, double near, double far);
602
604
616 void MakeOrtho(double left, double right, double bottom, double top, double near, double far);
617 };
618}
619
620/****************************************************************************
621 *
622 * Copyright (c) 1999-2024, Fine Kernel Project, All rights reserved.
623 *
624 * Redistribution and use in source and binary forms,
625 * with or without modification, are permitted provided that the
626 * following conditions are met:
627 *
628 * - Redistributions of source code must retain the above
629 * copyright notice, this list of conditions and the
630 * following disclaimer.
631 *
632 * - Redistributions in binary form must reproduce the above
633 * copyright notice, this list of conditions and the
634 * following disclaimer in the documentation and/or
635 * other materials provided with the distribution.
636 *
637 * - Neither the name of the copyright holders nor the names
638 * of its contributors may be used to endorse or promote
639 * products derived from this software without specific
640 * prior written permission.
641 *
642 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
643 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
644 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
645 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
646 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
647 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
648 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
649 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
650 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
651 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
652 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
653 * POSSIBILITY OF SUCH DAMAGE.
654 *
655 ****************************************************************************/
656/****************************************************************************
657 *
658 * Copyright (c) 1999-2024, Fine Kernel Project, All rights reserved.
659 *
660 * 本ソフトウェアおよびソースコードのライセンスは、基本的に
661 * 「修正 BSD ライセンス」に従います。以下にその詳細を記します。
662 *
663 * ソースコード形式かバイナリ形式か、変更するかしないかを問わず、
664 * 以下の条件を満たす場合に限り、再頒布および使用が許可されます。
665 *
666 * - ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、
667 * および下記免責条項を含めること。
668 *
669 * - バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の
670 * 資料に、上記の著作権表示、本条件一覧、および下記免責条項を
671 * 含めること。
672 *
673 * - 書面による特別の許可なしに、本ソフトウェアから派生した製品の
674 * 宣伝または販売促進に、本ソフトウェアの著作権者の名前または
675 * コントリビューターの名前を使用してはならない。
676 *
677 * 本ソフトウェアは、著作権者およびコントリビューターによって「現
678 * 状のまま」提供されており、明示黙示を問わず、商業的な使用可能性、
679 * および特定の目的に対する適合性に関す暗黙の保証も含め、またそれ
680 * に限定されない、いかなる保証もないものとします。著作権者もコン
681 * トリビューターも、事由のいかんを問わず、損害発生の原因いかんを
682 * 問わず、かつ責任の根拠が契約であるか厳格責任であるか(過失その
683 * 他の)不法行為であるかを問わず、仮にそのような損害が発生する可
684 * 能性を知らされていたとしても、本ソフトウェアの使用によって発生
685 * した(代替品または代用サービスの調達、使用の喪失、データの喪失、
686 * 利益の喪失、業務の中断も含め、またそれに限定されない)直接損害、
687 * 間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害に
688 * ついて、一切責任を負わないものとします。
689 *
690 ****************************************************************************/
オイラー角を表すクラス
Definition Matrix_CLI.h:21
~fk_Angle()
デストラクタ
double h
ヘディング角プロパティ
Definition Matrix_CLI.h:61
void Set(double h, double p, double b)
設定用メソッド
fk_Angle()
コンストラクタ1
fk_Angle(double h, double p, double b)
コンストラクタ2
double b
バンク角プロパティ
Definition Matrix_CLI.h:73
double p
ピッチ角プロパティ
Definition Matrix_CLI.h:67
fk_Angle(fk_Angle^ angle)
コンストラクタ3
4次元ベクトルを管理するクラス
Definition Vector_CLI.h:465
4元正方行列を管理するクラス
Definition Matrix_CLI.h:106
static fk_Matrix ^ operator-(fk_Matrix^ M1, fk_Matrix^ M2)
行列差二項演算子
void MakeRot(double rad, fk_Axis axis)
座標軸回転行列生成メソッド
static fk_Matrix ^ operator+(fk_Matrix^ M1, fk_Matrix^ M2)
行列和二項演算子
void MakeScale(fk_Vector^ V)
拡大縮小行列生成メソッド2
fk_Matrix()
コンストラクタ
void Init()
単位行列化メソッド
void SetCol(int col, fk_HVector^ V)
列ベクトル成分設定メソッド1
void MakeTrans(double x, double y, double z)
平行移動行列生成メソッド1
String ^ ToString() override
文字列出力メソッド
static fk_Matrix ^ operator*(double d, fk_Matrix^ M1)
行列実数倍二項演算子1
virtual bool Equals(Object^ O) override
同値比較メソッド2
void SetRow(int row, fk_HVector^ V)
行ベクトル成分設定メソッド2
static fk_Matrix ^ operator*(fk_Matrix^ M1, double d)
行列実数倍二項演算子2
static fk_Matrix ^ operator*(fk_Matrix^ M1, fk_Matrix^ M2)
行列積二項演算子
void SetCol(int col, fk_Vector^ V)
列ベクトル成分設定メソッド1
bool IsSingular()
特異判定メソッド
bool Equals(fk_Matrix^ M)
同値比較メソッド1
void Negate()
転置化メソッド
void MakePerspective(double fovy, double near, double far, double aspect)
簡易透視投影変換行列生成関数
void MakeFrustum(double left, double right, double bottom, double top, double near, double far)
一般透視投影変換行列生成関数
void MakeScale(double x, double y, double z)
拡大縮小行列生成メソッド1
static fk_HVector ^ operator*(fk_Matrix^ M, fk_HVector^ V1)
ベクトル変換二項演算子
void SetRow(int row, fk_Vector^ V)
行ベクトル成分設定メソッド1
fk_HVector ^ GetRow(int row)
行ベクトル成分取得メソッド
void MakeEuler(double h, double p, double b)
オイラー角回転行列生成メソッド1
bool IsRegular()
正則判定メソッド
~fk_Matrix()
デストラクタ
void MakeOrtho(double left, double right, double bottom, double top, double near, double far)
平行投影変換行列生成関数
void MakeEuler(fk_Angle^ angle)
オイラー角回転行列生成メソッド2
static void operator*=(fk_Matrix^ M1, fk_Matrix^ M2)
行列積代入演算子1
fk_Matrix(fk_Matrix^)
コピーコンストラクタ
fk_HVector ^ GetCol(int col)
列ベクトル成分取得メソッド
static void operator+=(fk_Matrix^ M1, fk_Matrix^ M2)
行列和代入演算子
void Set(int row, int col, double value)
成分設定メソッド
bool Inverse()
逆行列化メソッド
fk_Matrix ^ GetInverse()
逆行列取得演算子
void MakeTrans(fk_Vector^ V)
平行移動行列生成メソッド2
static void operator-=(fk_Matrix^ M1, fk_Matrix^ M2)
行列差代入演算子1
3次元ベクトルを管理するクラス
Definition Vector_CLI.h:35
Definition AppWindow_CLI.h:11
@ M2
マウス中クリック、あるいはホイールクリック(第2ボタン)
@ M1
マウス左クリック(第1ボタン)
fk_Axis
座標軸を表す列挙型
Definition Vector_CLI.h:10