use of org.twak.viewTrace.Closer in project chordatlas by twak.
the class GISGen method initGML.
public void initGML() {
Closer<Point3d> closer = new Closer<>();
LoopL<Point3d> polies = null;
try {
polies = GMLReader.readGML3d(Tweed.toWorkspace(new File(gmlFile)), DefaultGeocentricCRS.CARTESIAN, CRS.decode(crs));
} catch (NoSuchAuthorityCodeException e) {
e.printStackTrace();
return;
} catch (FactoryException e) {
e.printStackTrace();
return;
}
Optional<Gen> hg = tweed.frame.gens(HeightGen.class).stream().findAny();
if (hg.isPresent())
for (Loop<Point3d> poly : polies) {
if (poly instanceof SuperLoop) {
SuperLoop sl = ((SuperLoop) poly);
sl.properties.putAll(((HeightGen) hg.get()).getProperties((String) sl.properties.get("name")));
}
}
for (Loop<Point3d> poly : polies) {
List<Point3d> points = new ArrayList();
for (Pair<Point3d, Point3d> pair : poly.pairs()) {
TweedSettings.settings.toOrigin.transform(pair.first());
pair.first().y = 0;
points.add(pair.first());
lines.add(new Line3d(pair.first(), pair.second()));
}
if (TweedSettings.settings.flipFootprints)
poly.reverse();
closer.add(points.toArray(new Point3d[points.size()]));
}
createBlocks(closer, polies);
}
use of org.twak.viewTrace.Closer in project chordatlas by twak.
the class GISGen method initObj.
public void initObj() {
ObjRead gObj = new ObjRead(tweed.toWorkspace(objFile));
LoopL<Point3d> fromOBJ = new LoopL<>();
Closer<Point3d> closer = new Closer<>();
for (int[] face : gObj.faces) {
Loop<Point3d> loop = fromOBJ.newLoop();
List<Point3d> points = new ArrayList<>();
for (int i = 0; i < face.length; i++) {
Point3d p = new Point3d(gObj.pts[face[i]]), n = new Point3d(gObj.pts[face[(i + 1) % face.length]]);
// !
n.y = p.y = 0;
loop.append(p);
points.add(p);
lines.add(new Line3d(p, n));
}
closer.add(points.toArray(new Point3d[points.size()]));
}
createBlocks(closer, fromOBJ);
}
Aggregations