[Bprocessor-commit] model/src/net/sourceforge/bprocessor/model/modellor TileModellor.java, 1.9, 1.
Status: Pre-Alpha
Brought to you by:
henryml
|
From: rimestad <rim...@us...> - 2007-04-23 15:55:42
|
Update of /cvsroot/bprocessor/model/src/net/sourceforge/bprocessor/model/modellor In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv24462/src/net/sourceforge/bprocessor/model/modellor Modified Files: TileModellor.java Log Message: made the tilemodellor just a notch better and added a addAll method that just takes a surface to space Index: TileModellor.java =================================================================== RCS file: /cvsroot/bprocessor/model/src/net/sourceforge/bprocessor/model/modellor/TileModellor.java,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** TileModellor.java 23 Apr 2007 11:16:53 -0000 1.9 --- TileModellor.java 23 Apr 2007 15:55:41 -0000 1.10 *************** *** 19,23 **** import net.sourceforge.bprocessor.model.Attribute; - import net.sourceforge.bprocessor.model.Constructor; import net.sourceforge.bprocessor.model.CoordinateSystem; import net.sourceforge.bprocessor.model.Edge; --- 19,22 ---- *************** *** 46,49 **** --- 45,50 ---- private int height = 0; + + private Material jointMatetrial = new Material("Grey", new float[]{0.6f, 0.6f, 0.6f});; private Material tileColor = new Material("White", new float[]{1.0f, 1.0f, 1.0f}); *************** *** 103,109 **** log.info("Modellor update on " + entity); space.clear(); space.add(net); - //find outer borders } --- 104,134 ---- log.info("Modellor update on " + entity); space.clear(); + updateNet(startPoint); space.add(net); + //generate the tiles from the net + /*Surface outer = surface.copyall(space); + Collection<Surface> surs = net.getSurfaces(); + int lvl = space.getLevel() + 1; + double offset = -(double)jointSize / 2000; + for (Surface s : surs) { + List<Edge> offsetEdges = Edge.offset(s.getEdges(), s, offset); + Surface newS = new Surface(offsetEdges); + outer.addHole(newS); + space.addAll(newS); + Space sp = new Space("Tile", Space.CONSTRUCTION, lvl, true); + newS.setBackDomain(sp); + newS.setFrontMaterial(tileColor); + space.add(sp); + } + + Space joint = new Space("Tile", Space.CONSTRUCTION, lvl, true); + outer.setBackDomain(joint); + outer.setFrontMaterial(jointMatetrial); + Collection<Surface> tmp = new LinkedList<Surface>(); + Set<Surface> tmp2 = new HashSet<Surface>(); + tmp.add(outer.extrusionall(-((double)tileThickness / 1000), tmp, tmp2)); + space.addAll(tmp); + space.addAll(tmp2);*/ } *************** *** 137,160 **** Collection<Edge> horEdges = new LinkedList<Edge>(); Collection<Edge> vertEdges = new LinkedList<Edge>(); ! Collection<Vertex> createdVerts = new LinkedList<Vertex>(); // insert horizontal edges - CoordinateSystem insertPoint = cs.copy(); - insertPoint.setOrigin(cs.unTranslate(new Vertex(minX + jointSize / 2000.0, - minY + jointSize / 2000.0, - 0))); - Vertex orig = cs.center(); if (height > 0) { maxY = height / 1000.0; } ! Vertex localHori = new Vertex(0, tileSize.getHeight() / 1000.0 + jointSize / 2000.0, 0); ! Vertex horizontalAdd = cs.unTranslate(localHori).minus(orig); ! Edge slider = new Edge(cs.center().copy(), cs.unTranslate(new Vertex(maxX, 0, 0))); ! findIntersectingEdges(cs, slider, maxX, maxY, edges, horEdges, createdVerts, horizontalAdd); //insert vertical edges ! Vertex localVertical = new Vertex(tileSize.getWidth() / 1000.0 + jointSize / 2000.0, 0, 0); ! Vertex verticalAdd = cs.unTranslate(localVertical).minus(orig); ! slider = new Edge(cs.center().copy(), cs.unTranslate(new Vertex(0, maxY, 0))); ! findIntersectingEdges(cs, slider, maxX, maxY, edges, vertEdges, createdVerts, verticalAdd); Collection<Vertex> extras = new LinkedList<Vertex>(); --- 162,185 ---- Collection<Edge> horEdges = new LinkedList<Edge>(); Collection<Edge> vertEdges = new LinkedList<Edge>(); ! Collection<Vertex> horVerts = new LinkedList<Vertex>(); ! Collection<Vertex> otherVerts = new LinkedList<Vertex>(); // insert horizontal edges if (height > 0) { maxY = height / 1000.0; } ! Vertex localHori = new Vertex(0, tileSize.getHeight() / 1000.0 + jointSize / 1000.0, 0); ! Vertex horizontalAdd = cs.unTranslate(localHori).minus(cs.center()); ! Edge slider = new Edge(cs.center().copy().minus(horizontalAdd), ! cs.unTranslate(new Vertex(maxX, 0, 0)).minus(horizontalAdd)); ! findIntersectingEdges(cs, slider, maxX, maxY, minX, minY, ! edges, horEdges, horVerts, horizontalAdd); //insert vertical edges ! Vertex localVertical = new Vertex(tileSize.getWidth() / 1000.0 + jointSize / 1000.0, 0, 0); ! Vertex verticalAdd = cs.unTranslate(localVertical).minus(cs.center()); ! slider = new Edge(cs.center().copy().minus(verticalAdd), ! cs.unTranslate(new Vertex(0, maxY, 0)).minus(verticalAdd)); ! findIntersectingEdges(cs, slider, maxX, maxY, minX, minY, ! edges, vertEdges, otherVerts, verticalAdd); Collection<Vertex> extras = new LinkedList<Vertex>(); *************** *** 169,183 **** } } ! for (Vertex v : createdVerts) { ! net.insert(v); } for (Edge e : horEdges) { ! net.insert(e); } for (Edge e : vertEdges) { ! net.insert(e); } for (Vertex v : extras) { ! net.insert(v); } SurfaceAnalysis sa = new SurfaceAnalysis(); --- 194,211 ---- } } ! for (Vertex v : horVerts) { ! v = net.insert(v); } for (Edge e : horEdges) { ! e = net.insert(e); ! } ! for (Vertex v : otherVerts) { ! v = net.insert(v); } for (Edge e : vertEdges) { ! e = net.insert(e); } for (Vertex v : extras) { ! v = net.insert(v); } SurfaceAnalysis sa = new SurfaceAnalysis(); *************** *** 202,217 **** Edge slider, double maxX, ! double maxY, Collection<Edge> edges, Collection<Edge> createdEdges, Collection<Vertex> createdVerts, Vertex increment) { do { List<Vertex> intersections = new LinkedList<Vertex>(); for (Edge inside : edges) { Edge found = slider.intersection(inside); if (found != null) { ! if (found.getLength() < 0.0001 && inside.coincides(found.getTo())) { ! intersections.add(found.getTo()); } } --- 230,263 ---- Edge slider, double maxX, ! double maxY, ! double minX, ! double minY, Collection<Edge> edges, Collection<Edge> createdEdges, Collection<Vertex> createdVerts, Vertex increment) { + increment.scale(-1); + do { + slider.move(increment); + } while (cs.translate(slider.getFrom()).getY() > minY && + cs.translate(slider.getFrom()).getX() > minX); + increment.scale(-1); do { List<Vertex> intersections = new LinkedList<Vertex>(); for (Edge inside : edges) { + if (inside.parrallel(slider)) { + continue; + } Edge found = slider.intersection(inside); if (found != null) { ! if (found.getLength() < 0.0001 && ! (inside.coincides(found.getTo()) || ! inside.getFrom().coincides(found.getTo()) || ! inside.getTo().coincides(found.getTo()))) { ! Vertex v = found.getTo(); ! Vertex tmp = cs.translate(v); ! if (tmp.getX() >= minX && tmp.getX() <= maxX && tmp.getY() >= minY && tmp.getY() <= maxY){ ! intersections.add(v); ! } } } *************** *** 240,267 **** } - private Surface drawTile(CoordinateSystem cs, Material color) { - Space tile = new Space("Tile", Space.CONSTRUCTION, Space.PART_LEVEL, true); - space.add(tile); - Vertex v1 = cs.unTranslate(new Vertex(0.0, 0.0, 0.0)); - Vertex v2 = cs.unTranslate(new Vertex(tileSize.getWidth() / 1000.0, 0, 0)); - Vertex v3 = cs.unTranslate(new Vertex(tileSize.getWidth() / 1000.0, - tileSize.getHeight() / 1000.0, - 0)); - Vertex v4 = cs.unTranslate(new Vertex(0.0, tileSize.getHeight() / 1000.0, 0)); - Edge e1 = new Edge(v1, v2); - Edge e2 = new Edge(v2, v3); - Edge e3 = new Edge(v3, v4); - Edge e4 = new Edge(v4, v1); - List<Edge> edges = new ArrayList<Edge>(4); - edges.add(e1); - edges.add(e2); - edges.add(e3); - edges.add(e4); - Surface front = new Surface(edges); - front.setFrontMaterial(color); - front.setBackDomain(tile); - return front; - } - /** {@inheritDoc} */ @Override --- 286,289 ---- |