FineKernelToolKit: CLI/FK_CLI/include/Math_CLI.h ソースファイル

FineKernelToolKit 4.3.0

読み取り中…
検索中…
一致する文字列を見つけられません
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
34
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
185 static bool IsCrossLine(fk_LineType t_L, fk_Vector^ A, fk_Vector^ B,
186 fk_LineType t_M, fk_Vector^ C, fk_Vector^ D);
187
189
231 static bool IsCrossLine(fk_LineType t_L, fk_Vector^ A, fk_Vector^ B,
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
305
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>^
345 CalcCrossTriangle(fk_LineType type, fk_Vector^ P, fk_Vector^ Q,
346 fk_Vector^ A, fk_Vector^ B, fk_Vector^ C);
347
349
369 static Tuple<int, double, double>^
370 CalcCrossSphere(fk_Vector^ P, double r, fk_LineType type, fk_Vector^ A, fk_Vector^ B);
371
373
405 static Tuple<int, double, double, double, double>^
406 CalcCrossCylinder(fk_Vector^ P, fk_Vector^ Q, double r,
407 fk_LineType type, fk_Vector^ A, fk_Vector^ B);
409
412
414
443 static fk_Quaternion^ QuatInterLinear(fk_Quaternion^ Q1,
444 fk_Quaternion^ Q2,
445 double t);
446
448
479 static fk_Quaternion^ QuatInterSphere(fk_Quaternion^ Q1,
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 ****************************************************************************/
Quaternion_CLI.h
FK_CLI::fk_Math
数学処理メソッド集合クラス
Definition Math_CLI.h:35
FK_CLI::fk_Math::IsCrossLine
static bool IsCrossLine(fk_LineType t_L, fk_Vector^ A, fk_Vector^ B, fk_LineType t_M, fk_Vector^ C, fk_Vector^ D)
直線群交差判定メソッド1
FK_CLI::fk_Math::Clamp
static double Clamp(double a, double min, double max)
数値範囲制限メソッド
FK_CLI::fk_Math::DivideVec
static Tuple< double, double, double > ^ DivideVec(fk_Vector^ V, fk_Vector^ A, fk_Vector^ B, fk_Vector^ C)
ベクトル分離係数算出メソッド
FK_CLI::fk_Math::IsOnLine
static bool IsOnLine(fk_LineType type, fk_Vector^ A, fk_Vector^ B, fk_Vector^ P, bool openFlg)
直線群上判定関数
FK_CLI::fk_Math::Rand
static int Rand(int m, int M)
範囲付一様整数乱数取得メソッド
FK_CLI::fk_Math::CalcCosine
static double CalcCosine(fk_Vector^ A, fk_Vector^ B)
余弦値算出メソッド
FK_CLI::fk_Math::IsOnLine
static bool IsOnLine(fk_LineType type, fk_Vector^ A, fk_Vector^ B, fk_Vector^ P)
FK_CLI::fk_Math::CalcNearest
static double CalcNearest(fk_Vector^ P, fk_LineType type, fk_Vector^ A, fk_Vector^ B)
点・直線群間最近接点算出メソッド
FK_CLI::fk_Math::Seed
static void Seed(unsigned int s)
乱数シード値設定メソッド
FK_CLI::fk_Math::QuatInterLinear
static fk_Quaternion ^ QuatInterLinear(fk_Quaternion^ Q1, fk_Quaternion^ Q2, double t)
四元数単純線形補間メソッド
FK_CLI::fk_Math::Sgn
static double Sgn(double a)
FK_CLI::fk_Math::DRand
static double DRand(double m, double M)
範囲付一様実数乱数取得メソッド
FK_CLI::fk_Math::DRand
static double DRand(void)
一様実数乱数取得メソッド
FK_CLI::fk_Math::QuatInterSphere
static fk_Quaternion ^ QuatInterSphere(fk_Quaternion^ Q1, fk_Quaternion^ Q2, double t)
四元数球面線形補間メソッド
FK_CLI::fk_Math::CalcCrossTriangle
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)
三角形対線分交差判定関数
FK_CLI::fk_Math::Rand
static unsigned int Rand(void)
一様整数乱数取得メソッド
FK_CLI::fk_Math::IsCrossLine
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
FK_CLI::fk_Math::CalcNearest
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)
直線群間最近接点算出メソッド
FK_CLI::fk_Math::CalcCrossCylinder
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)
直線群円柱面交差点算出メソッド
FK_CLI::fk_Math::CalcCrossSphere
static Tuple< int, double, double > ^ CalcCrossSphere(fk_Vector^ P, double r, fk_LineType type, fk_Vector^ A, fk_Vector^ B)
直線群球面交差点算出メソッド
FK_CLI::fk_Quaternion
四元数(クォータニオン)を管理するクラス
Definition Quaternion_CLI.h:39
FK_CLI::fk_Vector
3次元ベクトルを管理するクラス
Definition Vector_CLI.h:35
FK_CLI
Definition AppWindow_CLI.h:11
FK_CLI::fk_LineType
fk_LineType
fk_Math クラス内での直線群タイプを表す列挙型
Definition Math_CLI.h:11
FK_CLI::fk_LineType::CLOSE
@ CLOSE
有向線分
Definition Math_CLI.h:13
FK_CLI::fk_LineType::OPEN
@ OPEN
直線
Definition Math_CLI.h:12
FK_CLI::fk_EdgeStatus::HALF
@ HALF
半定義稜線
Definition Edge_CLI.h:14