use of org.hwyl.sexytopo.model.graph.Coord2D in project sexytopo by richsmith.
the class XviImporter method parseSketchEntry.
public static PathDetail parseSketchEntry(double scale, String entry) throws IllegalArgumentException {
List<String> tokens = Arrays.asList(entry.split(" "));
if (tokens.size() <= 1) {
throw new IllegalArgumentException("Incomplete token? {" + entry + "}");
}
String first = tokens.get(0);
if (first.equals("connect")) {
throw new IllegalArgumentException("Not sure what to do with token {" + entry + "}");
}
if (tokens.size() % 2 != 1) {
throw new IllegalArgumentException("There was an odd number of data points in the token (excluding first item): " + tokens.size());
}
Colour colour = Colour.valueOf(first.toUpperCase());
List<Coord2D> points = new ArrayList<>(tokens.size() - 1);
for (int i = 1; i < tokens.size(); ) {
double x = Double.parseDouble(tokens.get(i++));
double y = Double.parseDouble(tokens.get(i++));
x /= scale;
y /= scale;
Coord2D coord2D = new Coord2D(x, -y);
points.add(coord2D);
}
PathDetail pathDetail = new PathDetail(points.get(0), colour);
for (Coord2D point : points.subList(1, points.size())) {
pathDetail.lineTo(point);
}
return pathDetail;
}
use of org.hwyl.sexytopo.model.graph.Coord2D in project sexytopo by richsmith.
the class Space2DUtils method transformLine.
public static Line<Coord2D> transformLine(Line<Coord2D> line, Coord2D point) {
Coord2D start = line.getStart();
Coord2D end = line.getEnd();
return new Line<Coord2D>(start.plus(point), end.plus(point));
}
use of org.hwyl.sexytopo.model.graph.Coord2D in project sexytopo by richsmith.
the class SpaceFlipper method flipVertically.
public static Space<Coord2D> flipVertically(Space<Coord2D> space) {
Space<Coord2D> flippedSpace = new Space<>();
Map<Station, Coord2D> stationMap = space.getStationMap();
for (Station station : stationMap.keySet()) {
Coord2D point = stationMap.get(station);
flippedSpace.addStation(station, point.flipVertically());
}
Map<Leg, Line<Coord2D>> legMap = space.getLegMap();
for (Leg leg : legMap.keySet()) {
Line<Coord2D> line = legMap.get(leg);
Coord2D start = line.getStart();
Coord2D end = line.getEnd();
Line flippedLine = new Line(start.flipVertically(), end.flipVertically());
flippedSpace.addLeg(leg, flippedLine);
}
return flippedSpace;
}
use of org.hwyl.sexytopo.model.graph.Coord2D in project sexytopo by richsmith.
the class SpaceMover method move.
public static Space<Coord2D> move(Space<Coord2D> space, Coord2D delta) {
Space moved = new Space<Coord2D>();
Map<Station, Coord2D> stationMap = space.getStationMap();
for (Station station : stationMap.keySet()) {
Coord2D point = stationMap.get(station);
moved.addStation(station, point.plus(delta));
}
Map<Leg, Line<Coord2D>> legMap = space.getLegMap();
for (Leg leg : legMap.keySet()) {
Line<Coord2D> line = space.getLegMap().get(leg);
Line<Coord2D> shiftedLine = new Line<>(line.getStart().plus(delta), line.getEnd().plus(delta));
moved.addLeg(leg, shiftedLine);
}
return moved;
}
use of org.hwyl.sexytopo.model.graph.Coord2D in project sexytopo by richsmith.
the class CrossSection method getProjection.
public Space<Coord2D> getProjection() {
Space<Coord2D> projection = new Space<>();
projection.addStation(station, Coord2D.ORIGIN);
for (Leg leg : station.getUnconnectedOnwardLegs()) {
// first of all normalise to match the angle of the cross section
Leg rotated = leg.rotate(-angle);
Coord3D coord3D = transformer.transform(Coord3D.ORIGIN, rotated);
Coord2D coord2D = new Coord2D(coord3D.getX(), coord3D.getZ());
Line<Coord2D> line = new Line<>(Coord2D.ORIGIN, coord2D);
projection.addLeg(rotated, line);
}
return projection;
}
Aggregations