64 |
|
|
65 |
let add_point p name fig = fig.point_list := (name,p)::!(fig.point_list) |
let add_point p name fig = fig.point_list := (name,p)::!(fig.point_list) |
66 |
|
|
67 |
|
let rec point_depend_of abr name = |
68 |
|
match abr with |
69 |
|
Point s -> s = name |
70 |
|
| Inter_line_line (s,(l1,l2)) -> (s = name) || (line_depend_of l1 name) || (line_depend_of l2 name) |
71 |
|
| Point_on_line (s,l) -> (s = name) || (line_depend_of l name) |
72 |
|
| Point_on_circle (s,c) -> (s = name) || (circle_depend_of c name) |
73 |
|
| Middle (s,(p1,p2)) -> (s = name) || (point_depend_of p1 name) || (point_depend_of p2 name) |
74 |
|
| Inter_circle_line (s1,s2,(c,l)) -> (s1 = name) || (s2 = name) || (circle_depend_of c name) || (line_depend_of l name) |
75 |
|
| Inter_circle_circle (s1,s2,(c1,c2)) -> (s1 = name) || (s2 = name) || (circle_depend_of c1 name) || (circle_depend_of c2 name) |
76 |
|
| Construct_point p -> point_depend_of p name |
77 |
|
|
78 |
|
and line_depend_of abr name = |
79 |
|
match abr with |
80 |
|
Line (s,(p1,p2)) -> (s = name) || (point_depend_of p1 name) || (point_depend_of p2 name) |
81 |
|
| Ruler l -> (line_depend_of l name) |
82 |
|
| Segment (s,(p1,p2)) -> (s = name) || (point_depend_of p1 name) || (point_depend_of p2 name) |
83 |
|
| Perpendicular (s,(l,p)) -> (s = name) || (line_depend_of l name) || (point_depend_of p name) |
84 |
|
| Perpendicular_segment (s,(l,p1,(p2,p3))) -> (s = name) || (line_depend_of l name) || (point_depend_of p1 name) || (point_depend_of p2 name) || (point_depend_of p3 name) |
85 |
|
| Perpendicular_bissector (s,l) -> (s = name) || (line_depend_of l name) |
86 |
|
| Parallel (s,(l,p)) -> (s = name) || (line_depend_of l name) || (point_depend_of p name) |
87 |
|
| Parallel_segment (s,(l,p1,(p2,p3))) -> (s = name) || (line_depend_of l name) || (point_depend_of p1 name) || (point_depend_of p2 name) || (point_depend_of p3 name) |
88 |
|
| Bissecting (s,(p1,p2,p3)) -> (s = name) || (point_depend_of p1 name) || (point_depend_of p2 name) || (point_depend_of p3 name) |
89 |
|
|
90 |
|
and circle_depend_of abr name = |
91 |
|
match abr with |
92 |
|
| Circle (s,(p1,p2)) -> (s = name) || (point_depend_of p1 name) || (point_depend_of p2 name) |
93 |
|
| Compass c -> circle_depend_of c name |
94 |
|
|
95 |
|
let suppr_obj name fig = |
96 |
|
begin |
97 |
|
fig.point_list := List.filter (fun (_,a) -> not(point_depend_of a name)) !(fig.point_list); |
98 |
|
fig.line_list := List.filter (fun (_,a) -> not(line_depend_of a name)) !(fig.line_list); |
99 |
|
fig.circle_list := List.filter (fun (_,a) -> not(circle_depend_of a name)) !(fig.circle_list) |
100 |
|
end |
101 |
|
|
102 |
let add_line l name fig = fig.line_list := (name,l)::!(fig.line_list) |
let add_line l name fig = fig.line_list := (name,l)::!(fig.line_list) |
103 |
|
|
104 |
let add_circle c name fig = fig.circle_list := (name,c)::!(fig.circle_list) |
let add_circle c name fig = fig.circle_list := (name,c)::!(fig.circle_list) |
376 |
List.iter (fun (_,l) -> (write_line2 l "black" 0) channel;()) (List.rev !(abstract_figure.line_list)); |
List.iter (fun (_,l) -> (write_line2 l "black" 0) channel;()) (List.rev !(abstract_figure.line_list)); |
377 |
List.iter (fun (_,c) -> (write_circle2 c "black" 0) channel;()) (List.rev !(abstract_figure.circle_list)) |
List.iter (fun (_,c) -> (write_circle2 c "black" 0) channel;()) (List.rev !(abstract_figure.circle_list)) |
378 |
;; |
;; |
379 |
|
|
380 |
|
|
381 |
|
|
382 |
|
|
383 |
|
|
384 |
|
|
385 |
|
|
386 |
|
|
387 |
|
|