回答編集履歴

1

コードを追加

2016/10/06 09:49

投稿

Nariyoshi
Nariyoshi

スコア10

test CHANGED
@@ -1,3 +1,71 @@
1
1
  線分ABの距離 = 線分ACの距離+線分BCの距離
2
2
 
3
3
  この条件をみたすときは線分上に点Cが存在すると思われますが、いかがでしょうか?
4
+
5
+
6
+
7
+ 実装例を以下に示します。
8
+
9
+
10
+
11
+ ```C
12
+
13
+ #include<stdio.h>
14
+
15
+ #include<stdbool.h>
16
+
17
+ #include<math.h>
18
+
19
+
20
+
21
+ double pow2(double x) {
22
+
23
+ return x * x;
24
+
25
+ }
26
+
27
+
28
+
29
+ // 線分ABの距離
30
+
31
+ double dist(double Ax,double Ay, double Bx, double By) {
32
+
33
+ return sqrt( pow2(Ax-Bx) + pow2(Ay-By) );
34
+
35
+ }
36
+
37
+
38
+
39
+ // 点Cが線分AB上であれば true (端点を含む), それ以外は false
40
+
41
+ bool onSegment(double Ax,double Ay, double Bx, double By, double Cx, double Cy) {
42
+
43
+ return dist(Ax,Ay,Bx,By) == ( dist(Ax,Ay,Cx,Cy) + dist(Bx,By,Cx,Cy) );
44
+
45
+ }
46
+
47
+
48
+
49
+ int main(){
50
+
51
+ double Ax = 0, Ay = 0;
52
+
53
+ double Bx = 5, By = 0;
54
+
55
+ double Cx = 2, Cy = 0;
56
+
57
+ if( onSegment(Ax,Ay,Bx,By,Cx,Cy) ) {
58
+
59
+ puts("on");
60
+
61
+ } else {
62
+
63
+ puts("off");
64
+
65
+ }
66
+
67
+ return 0;
68
+
69
+ }
70
+
71
+ ```