質問編集履歴

9

追記

2016/12/20 08:16

投稿

gyro16
gyro16

スコア89

test CHANGED
File without changes
test CHANGED
@@ -239,3 +239,7 @@
239
239
 
240
240
 
241
241
  あとはその引数の与える順番が分かりません**
242
+
243
+
244
+
245
+ 現在はメソッドisIntersect()の実引数の与える順番が分かりません。

8

追記

2016/12/20 08:16

投稿

gyro16
gyro16

スコア89

test CHANGED
File without changes
test CHANGED
File without changes

7

追記

2016/12/20 08:12

投稿

gyro16
gyro16

スコア89

test CHANGED
File without changes
test CHANGED
@@ -90,6 +90,8 @@
90
90
 
91
91
 
92
92
 
93
+
94
+
93
95
  ■■
94
96
 
95
97
 
@@ -225,3 +227,15 @@
225
227
  return result;
226
228
 
227
229
  }
230
+
231
+
232
+
233
+ **たぶん、メソッドisIntersect()はこれでいいはず。
234
+
235
+
236
+
237
+ この先のメソッドisIntersect() && isIntersect() と2条件判定でやるはずなので、
238
+
239
+
240
+
241
+ あとはその引数の与える順番が分かりません**

6

追記

2016/12/20 08:08

投稿

gyro16
gyro16

スコア89

test CHANGED
File without changes
test CHANGED
@@ -100,6 +100,12 @@
100
100
 
101
101
 
102
102
 
103
+ メソッドisIntersect()に与える引数は対角線ACとBDなので、
104
+
105
+
106
+
107
+ 与える引数はisIntersect(x[
108
+
103
109
 
104
110
 
105
111
  ###発生している問題・エラーメッセージ
@@ -190,4 +196,32 @@
190
196
 
191
197
  ###補足情報(言語/FW/ツール等のバージョンなど)
192
198
 
199
+ メソッドisIntersect()はこう与えられるはず、です。
200
+
201
+
202
+
203
+ これを対角線ACとBDに与えて、2条件 && してtrue なら、交差しています。
204
+
205
+
206
+
207
+
208
+
209
+ public boolean isIntersect(double x1, double y1, double x2, double y2,
210
+
211
+ double x3, double y3, double x4, double y4){
212
+
213
+ boolean result = false;
214
+
215
+ double ta=(x1-x2)*(y3-y1)+(y1-y2)*(x1-x3);
216
+
217
+ double tb=(x1-x2)*(y4-y1)+(y1-y2)*(x1-x4);
218
+
219
+ if(ta*tb < 0){
220
+
193
- より詳細な情報
221
+ result = true;
222
+
223
+ }
224
+
225
+ return result;
226
+
227
+ }

5

追記

2016/12/20 08:03

投稿

gyro16
gyro16

スコア89

test CHANGED
File without changes
test CHANGED
@@ -57,6 +57,38 @@
57
57
  この2つの条件が成り立つとあります。
58
58
 
59
59
  ●●
60
+
61
+
62
+
63
+ ABとCDが交差するとき 2条件が成立する
64
+
65
+ > tc=(x1-x2)*(y3-y1)+(y1-y2)*(x1-x3)
66
+
67
+ > td=(x1-x2)*(y4-y1)+(y1-y2)*(x1-x4)
68
+
69
+ >
70
+
71
+ > tc*td<0 条件A
72
+
73
+ >
74
+
75
+ > ta=(x3-x4)*(y1-y3)+(y3-y4)*(x3-x1)
76
+
77
+ > tb=(x3-x4)*(y2-y3)+(y3-y4)*(x3-x2)
78
+
79
+ >
80
+
81
+ > ta*tb<0 条件B
82
+
83
+
84
+
85
+
86
+
87
+ これを
88
+
89
+ ACとBDが交差するとき に置き換える
90
+
91
+
60
92
 
61
93
  ■■
62
94
 

4

追記

2016/12/20 07:38

投稿

gyro16
gyro16

スコア89

test CHANGED
File without changes
test CHANGED
@@ -16,15 +16,17 @@
16
16
 
17
17
 
18
18
 
19
+ 上記では対角線ACとBDが交差するか、をしたいのです。
20
+
19
21
  ■■
20
22
 
21
23
  もっと簡単に-線分交差判定-
22
24
 
23
25
  http://www5d.biglobe.ne.jp/~tomoya03/shtml/algorithm/Intersection.htm
24
26
 
27
+ ●●
25
28
 
26
-
29
+ ここではABとCDが交差するには、
27
-
28
30
 
29
31
  tc=(x1-x2)*(y3-y1)+(y1-y2)*(x1-x3)
30
32
 
@@ -33,8 +35,6 @@
33
35
 
34
36
 
35
37
  tc*td<0
36
-
37
-
38
38
 
39
39
 
40
40
 
@@ -51,6 +51,12 @@
51
51
 
52
52
 
53
53
  上記のものとあわせて、2つの条件判定すれば、2つの線分の交差判定を行うことができます。
54
+
55
+
56
+
57
+ この2つの条件が成り立つとあります。
58
+
59
+ ●●
54
60
 
55
61
  ■■
56
62
 

3

訂正

2016/12/20 07:32

投稿

gyro16
gyro16

スコア89

test CHANGED
File without changes
test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
 
14
14
 
15
- 点A(x[0],y[0]),点B(x[1],y[1])点C(x[2],y[2])点D(x[3],y[3]) です。
15
+ 点A(x[0],y[0]),点B(x[1],y[1]),点C(x[2],y[2]),点D(x[3],y[3]) です。
16
16
 
17
17
 
18
18
 
@@ -28,7 +28,7 @@
28
28
 
29
29
  tc=(x1-x2)*(y3-y1)+(y1-y2)*(x1-x3)
30
30
 
31
- tc=(x1-x2)*(y3-y1)+(y1-y2)*(x1-x3)
31
+ td=(x1-x2)*(y4-y1)+(y1-y2)*(x1-x4)
32
32
 
33
33
 
34
34
 

2

追記

2016/12/20 07:21

投稿

gyro16
gyro16

スコア89

test CHANGED
File without changes
test CHANGED
@@ -16,11 +16,43 @@
16
16
 
17
17
 
18
18
 
19
+ ■■
20
+
19
21
  もっと簡単に-線分交差判定-
20
22
 
21
23
  http://www5d.biglobe.ne.jp/~tomoya03/shtml/algorithm/Intersection.htm
22
24
 
23
25
 
26
+
27
+
28
+
29
+ tc=(x1-x2)*(y3-y1)+(y1-y2)*(x1-x3)
30
+
31
+ tc=(x1-x2)*(y3-y1)+(y1-y2)*(x1-x3)
32
+
33
+
34
+
35
+ tc*td<0
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+ ta=(x3-x4)*(y1-y3)+(y3-y4)*(x3-x1)
44
+
45
+ tb=(x3-x4)*(y2-y3)+(y3-y4)*(x3-x2)
46
+
47
+
48
+
49
+ ta*tb<0
50
+
51
+
52
+
53
+ 上記のものとあわせて、2つの条件判定すれば、2つの線分の交差判定を行うことができます。
54
+
55
+ ■■
24
56
 
25
57
 
26
58
 

1

追記

2016/12/20 07:18

投稿

gyro16
gyro16

スコア89

test CHANGED
File without changes
test CHANGED
@@ -9,6 +9,10 @@
9
9
  対角線ACとBDが交差する時
10
10
 
11
11
  ”YES"を返し、交差しない時に"NO"を返すプログラムを実現したいです。
12
+
13
+
14
+
15
+ 点A(x[0],y[0]),点B(x[1],y[1])点C(x[2],y[2])点D(x[3],y[3]) です。
12
16
 
13
17
 
14
18