幾何学幾何学
空間上の直線; 3D Line

概要
空間上の直線は通過点ベクトル\(\boldsymbol{v}\)と方向ベクトル\(\boldsymbol{v_d}\)で表現される。



ソースコード

namespace Geometry.Geometry3D {

    /// <summary>直線</summary>
    public class Line3D {
        
        /// <summary>コンストラクタ</summary>
        public Line3D(Vector3D v, Vector3D direction) {
            this.V = v;
            this.Direction = direction;
        }

        /// <summary>通過点</summary>
        public Vector3D V { get; set; }
        
        /// <summary>方向</summary>
        public Vector3D Direction { get; set; }
        
        /// <summary>行列積</summary>
        public static Line3D operator *(Matrix3D matrix, Line3D line) {
            Vector3D v0 = matrix * line.V, v1 = matrix * (line.V + line.Direction);

            return new Line3D(v0, v1 - v0);
        }

        /// <summary>不正な直線</summary>
        public static Line3D Invalid => new Line3D(Vector3D.Invalid, Vector3D.Invalid);

        /// <summary>有効な直線であるか判定</summary>
        public static bool IsValid(Line3D line) {
            return Vector3D.IsValid(line.V) && Vector3D.IsValid(line.Direction) && !Vector3D.IsZero(line.Direction);
        }
    }
}

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

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