Search in sources :

Example 11 with MegaFeatures

use of org.twak.tweed.gen.FeatureCache.MegaFeatures in project chordatlas by twak.

the class SkelFootprint method fractureOnFeatures.

private void fractureOnFeatures(MultiMap<MegaFeatures, MFPoint> minis, List<Line> footprint, HalfMesh2 mesh) {
    for (MegaFeatures mf : minis.keySet()) pt: for (MFPoint pt : minis.get(mf)) {
        if (!Mathz.inRange(mf.megafacade.findPPram(pt), 0, 1))
            continue;
        Vector2d dir = pt.mega.megafacade.dir();
        dir.set(dir.y, -dir.x);
        Point2d probe = new Point2d(dir);
        probe.scale(2 / dir.length());
        probe.add(pt);
        for (// don't fracture near minifacade boundaries...we can't distinguish nice block bondaries
        Point2d avoid : // don't fracture near minifacade boundaries...we can't distinguish nice block bondaries
        pt.mega.megafacade.points()) if (avoid.distanceSquared(pt) < 4)
            continue pt;
        double bestDist = Double.MAX_VALUE;
        for (HalfFace f : mesh.faces) for (HalfEdge e : f) if (e.line().dir().angle(dir) < 0.4) {
            double dist = e.line().distance(probe);
            if (dist < bestDist)
                bestDist = dist;
        }
        if (bestDist > 0.3) {
            Vector2d end = new Vector2d(dir);
            end.scale(3 / end.length());
            end.add(probe);
            Vector2d start = new Vector2d(dir);
            start.scale(0.5 / start.length());
            start.add(pt);
            Line extra = new Line(new Point2d(start), new Point2d(end));
            SkelFootprint.insert(mesh, extra, 2, false, false);
        }
    }
}
Also used : Line(org.twak.utils.Line) SuperLine(org.twak.viewTrace.SuperLine) MegaFeatures(org.twak.tweed.gen.FeatureCache.MegaFeatures) Vector2d(javax.vecmath.Vector2d) Point2d(javax.vecmath.Point2d) MFPoint(org.twak.tweed.gen.FeatureCache.MFPoint) HalfEdge(org.twak.utils.geom.HalfMesh2.HalfEdge) HalfFace(org.twak.utils.geom.HalfMesh2.HalfFace)

Aggregations

MegaFeatures (org.twak.tweed.gen.FeatureCache.MegaFeatures)11 Point2d (javax.vecmath.Point2d)7 ImageFeatures (org.twak.tweed.gen.FeatureCache.ImageFeatures)7 File (java.io.File)6 ArrayList (java.util.ArrayList)6 Line (org.twak.utils.Line)6 HalfFace (org.twak.utils.geom.HalfMesh2.HalfFace)6 HashMap (java.util.HashMap)5 List (java.util.List)5 Vector2d (javax.vecmath.Vector2d)5 MFPoint (org.twak.tweed.gen.FeatureCache.MFPoint)5 HalfEdge (org.twak.utils.geom.HalfMesh2.HalfEdge)5 Map (java.util.Map)4 Collectors (java.util.stream.Collectors)4 MultiMap (org.twak.utils.collections.MultiMap)4 Collections (java.util.Collections)3 HashSet (java.util.HashSet)3 Iterator (java.util.Iterator)3 OptionalDouble (java.util.OptionalDouble)3 Set (java.util.Set)3