9 import fields2cover
as f2c
11 def near(a, b, error = 1e-7):
12 assert abs(a - b) < error
16 swath1 = f2c.Swath(f2c.LineString(f2c.VectorPoint(
17 [f2c.Point(0, 0), f2c.Point(1, 1)])), 1.0);
18 swath2 = swath1.clone();
20 assert (swath1.hasSameDir(swath1));
21 assert not (swath1.hasSameDir(swath2));
22 assert not (swath2.hasSameDir(swath1));
25 swath1 = f2c.Swath(f2c.LineString(f2c.VectorPoint([
26 f2c.Point(0, 0), f2c.Point(1, 1)])), 1.0, 1);
27 swath2 = f2c.Swath(f2c.LineString(f2c.VectorPoint(
28 [f2c.Point(0, 0), f2c.Point(2, 2)])), 1.0, 2);
29 swath3 = f2c.Swath(f2c.LineString(f2c.VectorPoint(
30 [f2c.Point(1, 1), f2c.Point(0, 0)])), 1.0, 3);
31 swath4 = f2c.Swath(f2c.LineString(f2c.VectorPoint(
32 [f2c.Point(0, 0), f2c.Point(1, 1)])), 2.0, 4);
33 swath5 = f2c.Swath(f2c.LineString(f2c.VectorPoint(
34 [f2c.Point(1, 0), f2c.Point(2, 2)])), 1.0, 5);
35 swath6 = f2c.Swath(f2c.LineString(f2c.VectorPoint(
36 [f2c.Point(0, 1), f2c.Point(2, 2)])), 1.0, 6);
38 assert not (swath1 != swath1);
39 assert (swath1 == swath1);
40 assert (swath1 >= swath1);
41 assert (swath1 <= swath1);
42 assert not (swath1 < swath1);
43 assert not (swath1 > swath1);
44 assert (swath1 != swath3);
45 assert not (swath1 == swath3);
46 assert (swath1 != swath4);
47 assert not (swath1 == swath4);
48 assert not (swath1 > swath4);
49 assert (swath1 < swath4);
50 assert not (swath1 >= swath4);
51 assert (swath1 <= swath4);
52 assert (swath1 < swath5);
53 assert not (swath1 > swath5);
54 assert (swath1 <= swath5);
55 assert not (swath1 >= swath5);
56 assert (swath5 > swath1);
57 assert not (swath5 < swath1);
58 assert (swath5 >= swath1);
59 assert not (swath5 <= swath1);
60 assert (swath1 < swath6);
61 assert not (swath1 > swath6);
62 assert (swath1 <= swath6);
63 assert not (swath1 >= swath6);
64 assert (swath6 > swath1);
65 assert not (swath6 < swath1);
66 assert (swath6 >= swath1);
67 assert not (swath6 <= swath1);
72 path1 = f2c.LineString();
73 path2 = f2c.LineString();
74 path3 = f2c.LineString();
75 path1.addPoint( 0.0, 1.0);
76 path1.addPoint( 4.0, 1.0);
77 path2.addPoint( 0.0, 3.0);
78 path2.addPoint( 4.0, 3.0);
79 path3.addPoint( 0.0, 0.0);
80 path3.addPoint( 1.0, 1.0);
81 swath1 = f2c.Swath(path1);
82 swath2 = f2c.Swath(path2);
83 swath3 = f2c.Swath(path3);
85 near(swath1.length(), 4);
86 near(swath2.length(), 4);
87 near(pow(swath3.length(),2), 2, 1e-7);
90 swath = f2c.Swath(5.0);
91 near(swath.getWidth(), 5.0);
93 swath2 = f2c.Swath(0.2);
94 near(swath2.getWidth(), 0.2);
96 path = f2c.LineString();
97 path.addPoint(0.0, 1.0);
98 path.addPoint(4.0, 1.0);
100 EXPECT_THROW(f2c.Swath(path, -10), std::invalid_argument);
101 EXPECT_THROW(f2c.Swath(0), std::invalid_argument);
102 EXPECT_THROW(f2c.Swath(-10), std::invalid_argument);
107 swath_empty = f2c.Swath(f2c.LineString(), 1.0);
108 assert (swath_empty.areaCovered().isEmpty());
110 line = f2c.LineString(f2c.VectorPoint(
111 [f2c.Point(0, 1), f2c.Point(4, 1)]));
112 swath = f2c.Swath(line, 2.0);
113 cell = swath.areaCovered();
114 assert (swath.getWidth() * swath.length() == cell.getGeometry(0).area());
115 assert (swath.getWidth() * swath.length() >= 0.5 * swath.area());
116 assert (swath.getWidth() * swath.length() <= swath.area());
121 path1 = f2c.LineString();
122 path2 = f2c.LineString();
123 path3 = f2c.LineString();
124 path1.addPoint( 0.0, 1.0);
125 path1.addPoint( 4.0, 1.0);
126 path2.addPoint( 3.0, 1.0);
127 path2.addPoint( 3.0, 4.0);
128 path3.addPoint( 0.0, 0.0);
129 path3.addPoint( 1.0, 1.0);
130 swath_empty = f2c.Swath();
131 swath1 = f2c.Swath(path1);
132 swath2 = f2c.Swath(path2);
133 swath3 = f2c.Swath(path3);
135 near(swath_empty.getInAngle(), -1.0);
136 near(swath_empty.getOutAngle(), -1.0);
137 near(math.fmod(swath1.getInAngle(), 2*math.pi), 0.0, 1e-5);
138 near(math.fmod(swath2.getInAngle(),2*math.pi), math.pi/2, 1e-5);
139 near(math.fmod(swath3.getInAngle(),2*math.pi), math.pi / 4.0, 1e-5);
140 near(math.fmod(swath1.getInAngle(),2*math.pi), math.fmod(swath1.getOutAngle(),2*math.pi), 1e-5);
141 near(math.fmod(swath2.getInAngle(),2*math.pi), math.fmod(swath2.getOutAngle(),2*math.pi), 1e-5);
142 near(math.fmod(swath3.getInAngle(),2*math.pi), math.fmod(swath3.getOutAngle(),2*math.pi), 1e-5);
145 path1 = f2c.LineString();
146 path1.addPoint( -100.0, 30.0);
147 path1.addPoint( 4.0, 24.2);
148 path1.addPoint( 50.0, -34.2);
149 swath1 = f2c.Swath(path1);
151 near(swath1.startPoint().getX(), -100.0, 1e-5);
152 near(swath1.startPoint().getY(), 30.0, 1e-5);
153 near(swath1.endPoint().getX(), 50.0, 1e-5);
154 near(swath1.endPoint().getY(), -34.2, 1e-5);