幾何学幾何学
空間上の三角形; 3D Triangle

概要
空間上の三角形は3つのベクトル\(\boldsymbol{v_0},\boldsymbol{v_1},\boldsymbol{v_2}\)で表現される。

面積
三角形の面積\(S\)は以下で与えられる。
\(\quad \displaystyle S = \frac{1}{2} \sqrt{|\boldsymbol{a}|^2 |\boldsymbol{b}|^2 - (\boldsymbol{a} \cdot \boldsymbol{b})^2 } \\ \quad \boldsymbol{a} = \boldsymbol{v_1} - \boldsymbol{v_0}, \quad \boldsymbol{b} = \boldsymbol{v_2} - \boldsymbol{v_0} \quad \)

ソースコード

namespace Geometry.Geometry3D {

    /// <summary>三角形</summary>
    public class Triangle3D {

        /// <summary>コンストラクタ</summary>
        public Triangle3D(Vector3D v0, Vector3D v1, Vector3D v2) {
            this.V0 = v0;
            this.V1 = v1;
            this.V2 = v2;
        }

        /// <summary>構成点0</summary>
        public Vector3D V0 { get; set; }
        
        /// <summary>構成点1</summary>
        public Vector3D V1 { get; set; }

        /// <summary>構成点2</summary>
        public Vector3D V2 { get; set; }

        /// <summary>面積</summary>
        public double Area => Math.Sqrt(((V1 - V0) * (V2 - V0)).SquareNorm) / 2;

        /// <summary>行列積</summary>
        public static Triangle3D operator *(Matrix3D matrix, Triangle3D triangle) {
            return new Triangle3D(matrix * triangle.V0, matrix * triangle.V1, matrix * triangle.V2);
        }

        /// <summary>不正な三角形</summary>
        public static Triangle3D Invalid => new Triangle3D(Vector3D.Invalid, Vector3D.Invalid, Vector3D.Invalid);

        /// <summary>有効な三角形であるか判定</summary>
        public static bool IsValid(Triangle3D triangle) {
            return Vector3D.IsValid(triangle.V0) && Vector3D.IsValid(triangle.V1) && Vector3D.IsValid(triangle.V2);
        }
    }
}

関連項目
空間ベクトル
空間上の同次変換行列
空間上の線分
空間上の直線
空間上の円
空間上の平面
空間上の球体
空間上の四面体
空間上の交差
四元数
空間上の三角形 単体テスト

ライブラリライブラリ
確率統計確率統計
線形代数線形代数
幾何学幾何学
最適化最適化
微分方程式微分方程式
画像処理画像処理
補間補間
機械学習機械学習
クラスタリングクラスタリング
パズルゲーム・パズル
未分類未分類