Mercurial > projects > doodle
annotate doodle/tk/test/test1.d @ 48:1b4c9ba58673
Stylistic overhaul.
author | daveb |
---|---|
date | Tue, 03 Aug 2010 17:37:21 +0930 |
parents | 157b4ad5615d |
children | a274d16ab6ce |
rev | line source |
---|---|
33
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
1 private { |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
2 import doodle.tk.geometry; |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
3 import std.stdio; |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
4 } |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
5 |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
6 void test1() { |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
7 writefln("*** Test1 ***"); |
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 Point p1 = Point.DEFAULT; |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
10 Point p2 = p1; // copy construction |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
11 assert(p1 == p2); // equality |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
12 assert(!(p1 != p2)); // inequality |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
13 p2 = p1; // assignment |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
14 assert(p1 == p2); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
15 |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
16 Point p3 = Point(3.0, 5.0); // standard constructor |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
17 assert(p3 - p3 == Vector.DEFAULT); // subtraction (point minus point) |
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 Vector v3 = Vector(3.0, 5.0); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
20 assert(p3 - v3 == Point.DEFAULT); // subtraction (point minus vector) |
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 Point p4 = Point(1.0, 10.0); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
23 Point p5 = Point(10.0, 1.0); |
48 | 24 assert(minExtents(p4, p5) == Point(1.0, 1.0)); // min extents |
25 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
|
26 |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
27 writefln("p1: %s", p1); // toString |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
28 } |
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 void test2() { |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
31 writefln("*** Test2 ***"); |
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 Vector v1 = Vector.DEFAULT; |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
34 Vector v2 = v1; // copy construction |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
35 assert(v1 == v2); // equality |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
36 assert(!(v1 != v2)); // inequality |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
37 v2 = v1; // assignment |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
38 |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
39 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
|
40 assert(v3 + v3 == Vector(6.0, 8.0)); // addition |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
41 assert(v3 - v3 == Vector.DEFAULT); // subtraction |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
42 assert(-v3 == Vector(-3.0, -4.0)); // negation |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
43 assert(v3.length == 5.0); // length |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
44 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
|
45 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
|
46 |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
47 writefln("v1: %s", v1); // toString |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
48 } |
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 void test3() { |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
51 writefln("*** Test3 ***"); |
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 // Horizontal axis |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
54 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
|
55 // Vertical axis |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
56 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
|
57 |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
58 Point p; |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
59 bool b = intersection(l1, l2, p); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
60 assert(b); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
61 assert(p == Point(0.0, 0.0)); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
62 } |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
63 |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
64 void test4() { |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
65 writefln("*** Test4 ***"); |
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 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
|
68 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
|
69 |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
70 Point p; |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
71 bool b = intersection(l1, l2, p); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
72 assert(b); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
73 assert(p == Point(0.0, 0.0)); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
74 } |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
75 |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
76 void test5() { |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
77 writefln("*** Test5 ***"); |
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 // Here the segments intersect |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
80 |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
81 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
|
82 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
|
83 |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
84 Point p; |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
85 bool b = intersection(s1, s2, p); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
86 assert(b); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
87 writefln("p: %s", p); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
88 assert(p == Point(3.0, 3.0)); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
89 } |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
90 |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
91 void test6() { |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
92 writefln("*** Test6 ***"); |
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 // 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
|
95 |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
96 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
|
97 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
|
98 |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
99 Point p; |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
100 bool b = intersection(s1, s2, p); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
101 assert(!b); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
102 } |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
103 |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
104 void main(string[] args) { |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
105 test1(); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
106 test2(); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
107 test3(); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
108 test4(); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
109 test5(); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
110 test6(); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
diff
changeset
|
111 } |