1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.geometry.euclidean.twod;
18
19 import java.text.MessageFormat;
20
21 import org.apache.commons.geometry.core.RegionLocation;
22 import org.apache.commons.geometry.core.Transform;
23 import org.apache.commons.geometry.core.partitioning.Split;
24
25
26
27
28
29
30 final class LineSpanningSubset extends LineConvexSubset {
31
32
33
34
35 LineSpanningSubset(final Line line) {
36 super(line);
37 }
38
39
40
41
42
43 @Override
44 public boolean isFull() {
45 return true;
46 }
47
48
49
50
51
52 @Override
53 public boolean isInfinite() {
54 return true;
55 }
56
57
58
59
60
61 @Override
62 public boolean isFinite() {
63 return false;
64 }
65
66
67
68
69
70 @Override
71 public double getSize() {
72 return Double.POSITIVE_INFINITY;
73 }
74
75
76
77
78
79 @Override
80 public Vector2D getCentroid() {
81 return null;
82 }
83
84
85
86
87
88 @Override
89 public Vector2D getStartPoint() {
90 return null;
91 }
92
93
94
95
96
97 @Override
98 public double getSubspaceStart() {
99 return Double.NEGATIVE_INFINITY;
100 }
101
102
103
104
105
106 @Override
107 public Vector2D getEndPoint() {
108 return null;
109 }
110
111
112
113
114
115 @Override
116 public double getSubspaceEnd() {
117 return Double.POSITIVE_INFINITY;
118 }
119
120
121
122
123
124 @Override
125 public Bounds2D getBounds() {
126 return null;
127 }
128
129
130 @Override
131 public LineSpanningSubset transform(final Transform<Vector2D> transform) {
132 return new LineSpanningSubset(getLine().transform(transform));
133 }
134
135
136 @Override
137 public LineSpanningSubset reverse() {
138 return new LineSpanningSubset(getLine().reverse());
139 }
140
141
142 @Override
143 public String toString() {
144 final Line line = getLine();
145
146 return MessageFormat.format(Line.TO_STRING_FORMAT,
147 getClass().getSimpleName(),
148 line.getOrigin(),
149 line.getDirection());
150 }
151
152
153 @Override
154 RegionLocation classifyAbscissa(final double abscissa) {
155 return RegionLocation.INSIDE;
156 }
157
158
159 @Override
160 double closestAbscissa(final double abscissa) {
161 return abscissa;
162 }
163
164
165 @Override
166 Split<LineConvexSubset> splitOnIntersection(final Line splitter, final Vector2D intersection) {
167 final Line line = getLine();
168
169 final ReverseRay low = new ReverseRay(line, intersection);
170 final Ray high = new Ray(line, intersection);
171
172 return createSplitResult(splitter, low, high);
173 }
174 }