Search in sources :

Example 1 with Closer

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);
}
Also used : Closer(org.twak.viewTrace.Closer) Loop(org.twak.utils.collections.Loop) SuperLoop(org.twak.utils.collections.SuperLoop) NoSuchAuthorityCodeException(org.opengis.referencing.NoSuchAuthorityCodeException) FactoryException(org.opengis.referencing.FactoryException) SuperLoop(org.twak.utils.collections.SuperLoop) ArrayList(java.util.ArrayList) Line3d(org.twak.utils.geom.Line3d) Point3d(javax.vecmath.Point3d) File(java.io.File)

Example 2 with Closer

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);
}
Also used : Closer(org.twak.viewTrace.Closer) Point3d(javax.vecmath.Point3d) ArrayList(java.util.ArrayList) LoopL(org.twak.utils.collections.LoopL) ObjRead(org.twak.utils.geom.ObjRead) Line3d(org.twak.utils.geom.Line3d)

Aggregations

ArrayList (java.util.ArrayList)2 Point3d (javax.vecmath.Point3d)2 Line3d (org.twak.utils.geom.Line3d)2 Closer (org.twak.viewTrace.Closer)2 File (java.io.File)1 FactoryException (org.opengis.referencing.FactoryException)1 NoSuchAuthorityCodeException (org.opengis.referencing.NoSuchAuthorityCodeException)1 Loop (org.twak.utils.collections.Loop)1 LoopL (org.twak.utils.collections.LoopL)1 SuperLoop (org.twak.utils.collections.SuperLoop)1 ObjRead (org.twak.utils.geom.ObjRead)1