質問編集履歴

4

ミスがあった

2021/02/14 09:49

投稿

YutoHayashi
YutoHayashi

スコア8

test CHANGED
File without changes
test CHANGED
@@ -16,13 +16,15 @@
16
16
 
17
17
  //最終的なメソッドの形
18
18
 
19
+ //ある法線ベクトルに対して垂直な原点を通る平面上のベクトルを一つ取り出す
20
+
19
21
  Vector3 GetPerpendicularVec(Vector3 vec){
20
22
 
21
- var randomNum1 = Random.Range(-1f, 1f);
23
+ var randomNum1 = 0f;
22
24
 
23
- var randomNum2 = Random.Range(-1f, 1f);
25
+ var randomNum2 = 0f;
24
26
 
25
- while(randomNum1 == 0 & randomNum2 == 0){//ベクトルの長さが0である可能性について
27
+ while(randomNum1 == 0f || randomNum2 == 0f){//ベクトルの長さが0である可能性について
26
28
 
27
29
  randomNum1 = Random.Range(-1f, 1f);
28
30
 
@@ -30,11 +32,13 @@
30
32
 
31
33
  }
32
34
 
35
+
36
+
33
37
  float number;
34
38
 
35
39
  Vector3 targetVec = Vector3.zero;
36
40
 
37
- //平面からランダムなベクトルを一つ取り出す
41
+
38
42
 
39
43
  if(vec.x != 0){
40
44
 

3

解決法について加筆

2021/02/14 09:49

投稿

YutoHayashi
YutoHayashi

スコア8

test CHANGED
File without changes
test CHANGED
@@ -7,6 +7,10 @@
7
7
  平面の位置は原点を通る形で想定してもらえればと思います。
8
8
 
9
9
  何卒よろしくお願いします。
10
+
11
+
12
+
13
+ >>>解決したので下にメソッドを軽く貼っておきます。
10
14
 
11
15
  ```C#
12
16
 
@@ -29,6 +33,8 @@
29
33
  float number;
30
34
 
31
35
  Vector3 targetVec = Vector3.zero;
36
+
37
+ //平面からランダムなベクトルを一つ取り出す
32
38
 
33
39
  if(vec.x != 0){
34
40
 

2

解決法の追記

2020/11/20 14:11

投稿

YutoHayashi
YutoHayashi

スコア8

test CHANGED
File without changes
test CHANGED
@@ -10,22 +10,52 @@
10
10
 
11
11
  ```C#
12
12
 
13
- {
13
+ //最終的なメソッドの形
14
14
 
15
- Vector3 vec;
15
+ Vector3 GetPerpendicularVec(Vector3 vec){
16
16
 
17
- Vector3 target;
17
+ var randomNum1 = Random.Range(-1f, 1f);
18
18
 
19
+ var randomNum2 = Random.Range(-1f, 1f);
19
20
 
21
+ while(randomNum1 == 0 & randomNum2 == 0){//ベクトルの長さが0である可能性について
20
22
 
21
- //処理
23
+ randomNum1 = Random.Range(-1f, 1f);
22
24
 
23
- //このような形でお願いします。
25
+ randomNum2 = Random.Range(-1f, 1f);
24
26
 
27
+ }
25
28
 
29
+ float number;
26
30
 
27
- return target;
31
+ Vector3 targetVec = Vector3.zero;
28
32
 
33
+ if(vec.x != 0){
34
+
35
+ number = (-randomNum1 * vec.y - randomNum2*vec.z) / vec.x;
36
+
37
+ targetVec = new Vector3(number,randomNum1,randomNum2);
38
+
39
+ }else if(vec.y != 0){
40
+
41
+ number = (-randomNum1 * vec.x - randomNum2*vec.z) / vec.y;
42
+
43
+ targetVec = new Vector3(randomNum1,number,randomNum2);
44
+
45
+ }else if(vec.z != 0){
46
+
47
+ number = (-randomNum1 * vec.x - randomNum2*vec.y) / vec.z;
48
+
49
+ targetVec = new Vector3(randomNum1,randomNum2,number);
50
+
51
+ }else{
52
+
53
+ Debug.LogAssertion("与えられたベクトルの長さが0です");
54
+
29
- }
55
+ }
56
+
57
+ return targetVec.normalized;
58
+
59
+ }
30
60
 
31
61
  ```

1

平面の位置についての指定

2020/11/20 09:48

投稿

YutoHayashi
YutoHayashi

スコア8

test CHANGED
File without changes
test CHANGED
@@ -3,6 +3,8 @@
3
3
 
4
4
 
5
5
  2つのベクトルから法線ベクトルを取得する方法などは調べるとメソッドが出てきましたが、その逆がわかりません。
6
+
7
+ 平面の位置は原点を通る形で想定してもらえればと思います。
6
8
 
7
9
  何卒よろしくお願いします。
8
10