public <E extends Vector<E>> Collection<ImmutableVector<E>> buildExtrudedPolygon(
Path<E> path, float extrude) {
if (path.size() < 2) {
throw new RuntimeException("The path is not complete, at least two elements have to exist!");
}
Deque<ImmutableVector<E>> poly = new LinkedList<>();
Iterator<LineSegment<E>> iter = path.getLineSegmentIterator();
LineSegment<E> accLine = iter.next();
ImmutableVector[] p = generateExtrudedEndPoints(accLine.getStart(),
accLine.getEnd(), extrude);
poly.addFirst(p[0]);
poly.addLast(p[1]);
while (iter.hasNext()) {
LineSegment<E> newLine = iter.next();
p = generateExtrudedPoints(accLine.getStart(),
accLine.getEnd(), newLine.getEnd(), extrude);
poly.addFirst(p[0]);
poly.addLast(p[1]);
accLine = newLine;
}
p = generateExtrudedEndPoints(accLine.getEnd(), accLine.getStart(), extrude);
poly.addFirst(p[1]);
poly.addLast(p[0]);
return poly;
}