タイトルの通りなのですが、 数学的知識の不足とUnityのベクトル計算に不慣れで実装方法がわかりません。
2つのベクトルから法線ベクトルを取得する方法などは調べるとメソッドが出てきましたが、その逆がわかりません。
平面の位置は原点を通る形で想定してもらえればと思います。
何卒よろしくお願いします。
解決したので下にメソッドを軽く貼っておきます。
C#
1//最終的なメソッドの形 2//ある法線ベクトルに対して垂直な原点を通る平面上のベクトルを一つ取り出す 3Vector3 GetPerpendicularVec(Vector3 vec){ 4 var randomNum1 = 0f; 5 var randomNum2 = 0f; 6 while(randomNum1 == 0f || randomNum2 == 0f){//ベクトルの長さが0である可能性について 7 randomNum1 = Random.Range(-1f, 1f); 8 randomNum2 = Random.Range(-1f, 1f); 9 } 10 11 float number; 12 Vector3 targetVec = Vector3.zero; 13 14 if(vec.x != 0){ 15 number = (-randomNum1 * vec.y - randomNum2*vec.z) / vec.x; 16 targetVec = new Vector3(number,randomNum1,randomNum2); 17 }else if(vec.y != 0){ 18 number = (-randomNum1 * vec.x - randomNum2*vec.z) / vec.y; 19 targetVec = new Vector3(randomNum1,number,randomNum2); 20 }else if(vec.z != 0){ 21 number = (-randomNum1 * vec.x - randomNum2*vec.y) / vec.z; 22 targetVec = new Vector3(randomNum1,randomNum2,number); 23 }else{ 24 Debug.LogAssertion("与えられたベクトルの長さが0です"); 25 } 26 return targetVec.normalized; 27 }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/19 03:40 編集
2020/11/19 04:37
2020/11/20 09:45