Search in sources :

Example 1 with QuadF

use of org.twak.viewTrace.facades.GreebleSkel.QuadF in project chordatlas by twak.

the class GreebleGrid method createDormerWindow.

protected void createDormerWindow(QuadF l, MeshBuilder window, MeshBuilder glass, float sillDepth, float sillHeight, float corniceHeight, double panelWidth, double panelHeight) {
    Vector3d along = new Vector3d(l.corners[3]);
    along.sub(l.corners[0]);
    along.normalize();
    Vector3d up = new Vector3d(0, 1, 0);
    Vector3d out = new Vector3d();
    out.cross(along, up);
    out.scale(1 / out.length());
    Line3d lout;
    {
        Point3d away = new Point3d(l.corners[0]);
        away.add(out);
        lout = new Line3d(new Point3d(l.corners[0]), away);
    }
    Vector3d loc = new Vector3d(l.found[0]);
    if (lout.findPPram(l.found[0]) < lout.findPPram(l.found[1])) {
        // outwards going wall...
        loc = new Vector3d(up);
        loc.scale(-l.original.height);
        loc.add(l.found[1]);
    }
    {
        Vector3d avoidRoof = new Vector3d(out);
        avoidRoof.scale(0.09);
        ;
        loc.add(avoidRoof);
    }
    Point3d deepest = Arrays.stream(l.found).map(p -> new Pair<Point3d, Double>(p, lout.findPPram(p))).max((a, b) -> b.second().compareTo(a.second())).get().first();
    double depth = lout.closestPointOn(deepest, false).distance(lout.closestPointOn(new Point3d(loc), false));
    // MUtils.max(
    // Math.abs (l.corners[0].distance( l.found[0] )),
    // Math.abs (l.corners[1].distance( l.found[1] )),
    // Math.abs (l.corners[2].distance( l.found[2] )),
    // Math.abs (l.corners[3].distance( l.found[3] ))
    // ) ;
    WindowGen.createWindow(window, glass, new Window(Jme3z.to(loc), Jme3z.to(along), Jme3z.to(up), l.original.width, l.original.height, depth, panelWidth, panelHeight));
// Vector3f u = Jme3z.to(up), o = Jme3z.to( out );
// if (sillDepth > 0)
// window.addCube( Jme3z.to ( ptt[0] ).add( u.mult( -sillHeight + 0.01f ) ).add( o.mult( -sillDepth) ),
// Jme3z.to(out), Jme3z.to(along), Jme3z.to(up),
// (float)depth + sillDepth, (float)winPanel.width,(float) sillHeight  );
// 
// if (corniceHeight > 0)
// moulding( to3d, new DRectangle(winPanel.x, winPanel.getMaxY(), winPanel.width, corniceHeight), wall );
}
Also used : Arrays(java.util.Arrays) Cach2(org.twak.utils.Cach2) Cache2(org.twak.utils.Cache2) Griddable(org.twak.viewTrace.facades.Grid.Griddable) WindowGen(org.twak.tweed.gen.WindowGen) LinearForm3D(org.twak.utils.geom.LinearForm3D) Matrix4d(javax.vecmath.Matrix4d) ClickMe(org.twak.tweed.ClickMe) Pair(org.twak.utils.Pair) Vector3d(javax.vecmath.Vector3d) QuadF(org.twak.viewTrace.facades.GreebleSkel.QuadF) Tweed(org.twak.tweed.Tweed) ArrayList(java.util.ArrayList) Node(com.jme3.scene.Node) Pointz(org.twak.tweed.gen.Pointz) Material(com.jme3.material.Material) Point3d(javax.vecmath.Point3d) Output(org.twak.camp.Output) Vector3f(com.jme3.math.Vector3f) MeshBuilder(org.twak.siteplan.jme.MeshBuilder) Vector2d(javax.vecmath.Vector2d) File(java.io.File) CrossGen(org.twak.viewTrace.facades.Tube.CrossGen) Point2d(javax.vecmath.Point2d) List(java.util.List) Jme3z(org.twak.siteplan.jme.Jme3z) DRectangle(org.twak.utils.geom.DRectangle) ColorRGBA(com.jme3.math.ColorRGBA) Face(org.twak.camp.Output.Face) Window(org.twak.tweed.gen.WindowGen.Window) Line3d(org.twak.utils.geom.Line3d) Collections(java.util.Collections) Feature(org.twak.viewTrace.facades.MiniFacade.Feature) Geometry(com.jme3.scene.Geometry) Window(org.twak.tweed.gen.WindowGen.Window) Vector3d(javax.vecmath.Vector3d) Point3d(javax.vecmath.Point3d) Line3d(org.twak.utils.geom.Line3d) Pair(org.twak.utils.Pair)

Aggregations

Material (com.jme3.material.Material)1 ColorRGBA (com.jme3.math.ColorRGBA)1 Vector3f (com.jme3.math.Vector3f)1 Geometry (com.jme3.scene.Geometry)1 Node (com.jme3.scene.Node)1 File (java.io.File)1 ArrayList (java.util.ArrayList)1 Arrays (java.util.Arrays)1 Collections (java.util.Collections)1 List (java.util.List)1 Matrix4d (javax.vecmath.Matrix4d)1 Point2d (javax.vecmath.Point2d)1 Point3d (javax.vecmath.Point3d)1 Vector2d (javax.vecmath.Vector2d)1 Vector3d (javax.vecmath.Vector3d)1 Output (org.twak.camp.Output)1 Face (org.twak.camp.Output.Face)1 Jme3z (org.twak.siteplan.jme.Jme3z)1 MeshBuilder (org.twak.siteplan.jme.MeshBuilder)1 ClickMe (org.twak.tweed.ClickMe)1