FineKernelToolKit 4.2.13
読み取り中…
検索中…
一致する文字列を見つけられません
Math_CLI.h
[詳解]
1#pragma once
2
3#include <FK/Math.h>
4#include "Quaternion_CLI.h"
5
6namespace FK_CLI
7{
8 using namespace System;
9
11 public enum class fk_LineType {
12 OPEN,
13 CLOSE,
14 HALF,
15 };
16
18
35 public ref class fk_Math {
36 public:
37
41
49 static double Sgn(double a);
50
52
64 static double Clamp(double a, double min, double max);
66
69
71
83 static double CalcCosine(fk_Vector^ A, fk_Vector^ B);
84
86
109 static Tuple<double, double, double>^ DivideVec(fk_Vector^ V, fk_Vector^ A, fk_Vector^ B, fk_Vector^ C);
110
112
115
117
145 static bool IsOnLine(fk_LineType type, fk_Vector^ A, fk_Vector^ B, fk_Vector^ P, bool openFlg);
146 static bool IsOnLine(fk_LineType type, fk_Vector^ A, fk_Vector^ B, fk_Vector^ P);
147
149
186 fk_LineType t_M, fk_Vector^ C, fk_Vector^ D);
187
189
232 fk_LineType t_M, fk_Vector^ C, fk_Vector^ D, bool openFlg);
233
234
236
260 static double CalcNearest(fk_Vector^ P, fk_LineType type, fk_Vector^ A, fk_Vector^ B);
261
263
306 static Tuple<double, double>^ CalcNearest(fk_LineType t_L, fk_Vector^ A, fk_Vector^ B,
307 fk_LineType t_M, fk_Vector^ C, fk_Vector^ D);
308
310
344 static Tuple<bool, double, double, double>^
346 fk_Vector^ A, fk_Vector^ B, fk_Vector^ C);
347
349
369 static Tuple<int, double, double>^
371
373
405 static Tuple<int, double, double, double, double>^
407 fk_LineType type, fk_Vector^ A, fk_Vector^ B);
409
412
414
444 fk_Quaternion^ Q2,
445 double t);
446
448
480 fk_Quaternion^ Q2,
481 double t);
485
487
492 static unsigned int Rand(void);
493
495
503 static int Rand(int m, int M);
504
506
511 static double DRand(void);
512
514
522 static double DRand(double m, double M);
523
525
532 static void Seed(unsigned int s);
534 private:
535 static fk_LineType Conv(::FK::fk_LineType);
536 static ::FK::fk_LineType Conv(fk_LineType);
537 };
538}
539
540/****************************************************************************
541 *
542 * Copyright (c) 1999-2024, Fine Kernel Project, All rights reserved.
543 *
544 * Redistribution and use in source and binary forms,
545 * with or without modification, are permitted provided that the
546 * following conditions are met:
547 *
548 * - Redistributions of source code must retain the above
549 * copyright notice, this list of conditions and the
550 * following disclaimer.
551 *
552 * - Redistributions in binary form must reproduce the above
553 * copyright notice, this list of conditions and the
554 * following disclaimer in the documentation and/or
555 * other materials provided with the distribution.
556 *
557 * - Neither the name of the copyright holders nor the names
558 * of its contributors may be used to endorse or promote
559 * products derived from this software without specific
560 * prior written permission.
561 *
562 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
563 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
564 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
565 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
566 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
567 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
568 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
569 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
570 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
571 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
572 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
573 * POSSIBILITY OF SUCH DAMAGE.
574 *
575 ****************************************************************************/
576/****************************************************************************
577 *
578 * Copyright (c) 1999-2024, Fine Kernel Project, All rights reserved.
579 *
580 * 本ソフトウェアおよびソースコードのライセンスは、基本的に
581 * 「修正 BSD ライセンス」に従います。以下にその詳細を記します。
582 *
583 * ソースコード形式かバイナリ形式か、変更するかしないかを問わず、
584 * 以下の条件を満たす場合に限り、再頒布および使用が許可されます。
585 *
586 * - ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、
587 * および下記免責条項を含めること。
588 *
589 * - バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の
590 * 資料に、上記の著作権表示、本条件一覧、および下記免責条項を
591 * 含めること。
592 *
593 * - 書面による特別の許可なしに、本ソフトウェアから派生した製品の
594 * 宣伝または販売促進に、本ソフトウェアの著作権者の名前または
595 * コントリビューターの名前を使用してはならない。
596 *
597 * 本ソフトウェアは、著作権者およびコントリビューターによって「現
598 * 状のまま」提供されており、明示黙示を問わず、商業的な使用可能性、
599 * および特定の目的に対する適合性に関す暗黙の保証も含め、またそれ
600 * に限定されない、いかなる保証もないものとします。著作権者もコン
601 * トリビューターも、事由のいかんを問わず、損害発生の原因いかんを
602 * 問わず、かつ責任の根拠が契約であるか厳格責任であるか(過失その
603 * 他の)不法行為であるかを問わず、仮にそのような損害が発生する可
604 * 能性を知らされていたとしても、本ソフトウェアの使用によって発生
605 * した(代替品または代用サービスの調達、使用の喪失、データの喪失、
606 * 利益の喪失、業務の中断も含め、またそれに限定されない)直接損害、
607 * 間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害に
608 * ついて、一切責任を負わないものとします。
609 *
610 ****************************************************************************/
数学処理メソッド集合クラス
Definition Math_CLI.h:35
static bool IsCrossLine(fk_LineType t_L, fk_Vector^ A, fk_Vector^ B, fk_LineType t_M, fk_Vector^ C, fk_Vector^ D)
直線群交差判定メソッド1
static double Clamp(double a, double min, double max)
数値範囲制限メソッド
static Tuple< double, double, double > ^ DivideVec(fk_Vector^ V, fk_Vector^ A, fk_Vector^ B, fk_Vector^ C)
ベクトル分離係数算出メソッド
static bool IsOnLine(fk_LineType type, fk_Vector^ A, fk_Vector^ B, fk_Vector^ P, bool openFlg)
直線群上判定関数
static int Rand(int m, int M)
範囲付一様整数乱数取得メソッド
static double CalcCosine(fk_Vector^ A, fk_Vector^ B)
余弦値算出メソッド
static bool IsOnLine(fk_LineType type, fk_Vector^ A, fk_Vector^ B, fk_Vector^ P)
static double CalcNearest(fk_Vector^ P, fk_LineType type, fk_Vector^ A, fk_Vector^ B)
点・直線群間最近接点算出メソッド
static void Seed(unsigned int s)
乱数シード値設定メソッド
static fk_Quaternion ^ QuatInterLinear(fk_Quaternion^ Q1, fk_Quaternion^ Q2, double t)
四元数単純線形補間メソッド
static double Sgn(double a)
static double DRand(double m, double M)
範囲付一様実数乱数取得メソッド
static double DRand(void)
一様実数乱数取得メソッド
static fk_Quaternion ^ QuatInterSphere(fk_Quaternion^ Q1, fk_Quaternion^ Q2, double t)
四元数球面線形補間メソッド
static Tuple< bool, double, double, double > ^ CalcCrossTriangle(fk_LineType type, fk_Vector^ P, fk_Vector^ Q, fk_Vector^ A, fk_Vector^ B, fk_Vector^ C)
三角形対線分交差判定関数
static unsigned int Rand(void)
一様整数乱数取得メソッド
static bool IsCrossLine(fk_LineType t_L, fk_Vector^ A, fk_Vector^ B, fk_LineType t_M, fk_Vector^ C, fk_Vector^ D, bool openFlg)
直線群交差判定メソッド2
static Tuple< double, double > ^ CalcNearest(fk_LineType t_L, fk_Vector^ A, fk_Vector^ B, fk_LineType t_M, fk_Vector^ C, fk_Vector^ D)
直線群間最近接点算出メソッド
static Tuple< int, double, double, double, double > ^ CalcCrossCylinder(fk_Vector^ P, fk_Vector^ Q, double r, fk_LineType type, fk_Vector^ A, fk_Vector^ B)
直線群円柱面交差点算出メソッド
static Tuple< int, double, double > ^ CalcCrossSphere(fk_Vector^ P, double r, fk_LineType type, fk_Vector^ A, fk_Vector^ B)
直線群球面交差点算出メソッド
四元数(クォータニオン)を管理するクラス
Definition Quaternion_CLI.h:39
3次元ベクトルを管理するクラス
Definition Vector_CLI.h:35
Definition AppWindow_CLI.h:11
fk_LineType
fk_Math クラス内での直線群タイプを表す列挙型
Definition Math_CLI.h:11
@ CLOSE
有向線分