Mercurial > projects > doodle
annotate doodle/tk/test/test1.d @ 134:89e8b0d92f36
Ported to bob2 !!!
author | David Bryant <bagnose@gmail.com> |
---|---|
date | Thu, 02 Aug 2012 17:20:52 +0930 |
parents | a274d16ab6ce |
children |
rev | line source |
---|---|
134 | 1 // XXX bob problem, needs it to be like this... |
2 import doodle.tk.geometry; | |
3 | |
33
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
4 private { |
134 | 5 //import doodle.tk.geometry; |
33
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
6 import std.stdio; |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
7 } |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
8 |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
9 void test1() { |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
10 writefln("*** Test1 ***"); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
11 |
100 | 12 Point p1; |
33
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
13 Point p2 = p1; // copy construction |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
14 assert(p1 == p2); // equality |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
15 assert(!(p1 != p2)); // inequality |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
16 p2 = p1; // assignment |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
17 assert(p1 == p2); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
18 |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
19 Point p3 = Point(3.0, 5.0); // standard constructor |
100 | 20 assert(p3 - p3 == Vector()); // subtraction (point minus point) |
33
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
21 |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
22 Vector v3 = Vector(3.0, 5.0); |
100 | 23 assert(p3 - v3 == Point()); // subtraction (point minus vector) |
33
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
24 |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
25 Point p4 = Point(1.0, 10.0); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
26 Point p5 = Point(10.0, 1.0); |
48 | 27 assert(minExtents(p4, p5) == Point(1.0, 1.0)); // min extents |
28 assert(maxExtents(p4, p5) == Point(10.0, 10.0)); // max extents | |
33
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
29 |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
30 writefln("p1: %s", p1); // toString |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
31 } |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
32 |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
33 void test2() { |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
34 writefln("*** Test2 ***"); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
35 |
100 | 36 Vector v1; |
33
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
37 Vector v2 = v1; // copy construction |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
38 assert(v1 == v2); // equality |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
39 assert(!(v1 != v2)); // inequality |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
40 v2 = v1; // assignment |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
41 |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
42 Vector v3 = Vector(3.0, 4.0); // standard construction |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
43 assert(v3 + v3 == Vector(6.0, 8.0)); // addition |
100 | 44 assert(v3 - v3 == Vector()); // subtraction |
33
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
45 assert(-v3 == Vector(-3.0, -4.0)); // negation |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
46 assert(v3.length == 5.0); // length |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
47 assert(2.0 * v3 == Vector(6.0, 8.0)); // scalar multiplication |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
48 assert(v3 / 2.0 == Vector(1.5, 2.0)); // scalar division |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
49 |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
50 writefln("v1: %s", v1); // toString |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
51 } |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
52 |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
53 void test3() { |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
54 writefln("*** Test3 ***"); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
55 |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
56 // Horizontal axis |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
57 Line l1 = Line(Point(0.0, 0.0), Vector(1.0, 0.0)); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
58 // Vertical axis |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
59 Line l2 = Line(Point(0.0, 0.0), Vector(0.0, 1.0)); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
60 |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
61 Point p; |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
62 bool b = intersection(l1, l2, p); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
63 assert(b); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
64 assert(p == Point(0.0, 0.0)); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
65 } |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
66 |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
67 void test4() { |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
68 writefln("*** Test4 ***"); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
69 |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
70 Line l1 = Line(Point(-1.0, -1.0), Vector( 1.0, 1.0)); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
71 Line l2 = Line(Point( 1.0, -1.0), Vector(-1.0, 1.0)); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
72 |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
73 Point p; |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
74 bool b = intersection(l1, l2, p); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
75 assert(b); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
76 assert(p == Point(0.0, 0.0)); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
77 } |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
78 |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
79 void test5() { |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
80 writefln("*** Test5 ***"); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
81 |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
82 // Here the segments intersect |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
83 |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
84 Segment s1 = Segment(Point(2.0, 2.0), Point(4.0, 4.0)); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
85 Segment s2 = Segment(Point(2.0, 4.0), Point(4.0, 2.0)); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
86 |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
87 Point p; |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
88 bool b = intersection(s1, s2, p); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
89 assert(b); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
90 writefln("p: %s", p); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
91 assert(p == Point(3.0, 3.0)); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
92 } |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
93 |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
94 void test6() { |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
95 writefln("*** Test6 ***"); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
96 |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
97 // Here the lines of the segments intersect but the segments don't |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
98 |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
99 Segment s1 = Segment(Point(2.0, 2.0), Point(4.0, 4.0)); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
100 Segment s2 = Segment(Point(4.0, 2.0), Point(6.0, 0.0)); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
101 |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
102 Point p; |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
103 bool b = intersection(s1, s2, p); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
104 assert(!b); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
105 } |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
106 |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
107 void main(string[] args) { |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
108 test1(); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
109 test2(); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
110 test3(); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
111 test4(); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
112 test5(); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
113 test6(); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
114 } |