Unityで面積を求めたい 3Dの場合

こんにちはイマイです

最近書いてあるARKitのアプリで3次次元空間の3点で作れる面の面積を求めたいなぁと
思ったので実装方法を考えてみました。

調べてみると公式見当たりませんでしたね…
(ご存知の方がいましたらご教授ください)

以下のサイトをみると意外と簡単にベクトルを使って計算できるみたいなんで実装してみました。

エクセルを用いた3次元空間上の三角形の面積計算

null

public void CalculateArea(){
    //3点の初期化
    Vector3 A = new Vector3(1, 2, 5);
    Vector3 B = new Vector3(3, 1, 5);
    Vector3 C = new Vector3(3, 3, 5); 
    
    //BベクトルとCベクトルの外積を求める
    Vector3 D = Vector3.Cross(B-A,C-A);
    
    //平行四辺形の面積を求めて2で割る
    float S = D.magnitude / 2;
    Debug.Log(S);
}

magnitudeはベクトルの長さを返してくれます

Unity – スクリプティング API: Vector3.magnitude

あなたの作品をどこへでも!Unityはゲームやグラフィカルなアプリケーションを開発するための最高の開発環境です。Unityで作れば、Webブラウザ、Windows, Mac OS X, iOS, Android, PlayStation 4やWii U, Xbox Oneなどのゲーム機、さらに多くの幅広いプラットフォームで展開できます。

普通のゲームで使い道なさそうですね…

One reply

Comments are closed.