Thread: [Bprocessor-commit] model/src/net/sourceforge/bprocessor/model Command.java, 1.46, 1.47
Status: Pre-Alpha
Brought to you by:
henryml
From: Michael L. <he...@us...> - 2007-12-03 22:02:21
|
Update of /cvsroot/bprocessor/model/src/net/sourceforge/bprocessor/model In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv19419/src/net/sourceforge/bprocessor/model Modified Files: Command.java Log Message: frame creates space Index: Command.java =================================================================== RCS file: /cvsroot/bprocessor/model/src/net/sourceforge/bprocessor/model/Command.java,v retrieving revision 1.46 retrieving revision 1.47 diff -C2 -d -r1.46 -r1.47 *** Command.java 3 Dec 2007 15:01:37 -0000 1.46 --- Command.java 3 Dec 2007 22:02:24 -0000 1.47 *************** *** 1287,1296 **** public Frame(Space net) { this.net = net; ! parameters.put("outside-frame", 0.2); ! parameters.put("inside-frame", 0.1); ! parameters.put("interior", 0.1); ! parameters.put("depth", 1.0); } /** {@inheritDoc} */ @Override --- 1287,1334 ---- public Frame(Space net) { this.net = net; ! parameters.put("outside-frame", 0.0); ! parameters.put("inside-frame", 0.035); ! parameters.put("interior", 0.035); ! parameters.put("depth", 0.07); ! ! parameters.put("frame name", "Frame"); ! parameters.put("exterior name", "Exterior"); ! parameters.put("hole name", "Hole"); ! } ! ! private List<Edge> simplify(List<Edge> edges) { ! if (edges.size() > 3) { ! List<Edge> result = new LinkedList(); ! List<Vertex> vertices = Offset.vertices(edges); ! LinkedList<Vertex> live = new LinkedList(); ! { ! int n = vertices.size(); ! Vertex previous = vertices.get(n - 1); ! Vertex current = vertices.get(0); ! Vertex next = null; ! for (int i = 0; i < n; i++) { ! next = vertices.get((i + 1) % n); ! Vertex u = current.minus(previous); ! Vertex v = next.minus(current); ! Vertex cross = u.cross(v); ! if (!cross.isZero()) { ! live.add(current); ! } ! previous = current; ! current = next; ! } ! } ! Vertex previous = live.getLast(); ! for (Vertex current : live) { ! result.add(new Edge(previous, current)); ! previous = current; ! } ! return result; ! } else { ! return edges; ! } } + /** {@inheritDoc} */ @Override *************** *** 1300,1304 **** double delta = parameters.getDouble("interior"); double depth = parameters.getDouble("depth"); ! List<Surface> surfaces = new LinkedList(); --- 1338,1344 ---- double delta = parameters.getDouble("interior"); double depth = parameters.getDouble("depth"); ! String frameName = (String) parameters.get("frame name"); ! String exteriorName = (String) parameters.get("exterior name"); ! String holeName = (String) parameters.get("hole name"); List<Surface> surfaces = new LinkedList(); *************** *** 1331,1335 **** List<Edge> offset = Offset.offset(boundary, inside + outside - (delta / 2)); ! Surface exterior = new Surface(offset); inserted.add(exterior); --- 1371,1375 ---- List<Edge> offset = Offset.offset(boundary, inside + outside - (delta / 2)); ! Surface exterior = new Surface(simplify(offset)); inserted.add(exterior); *************** *** 1337,1341 **** List<Surface> interior = new LinkedList(); for (Surface current : surfaces) { ! interior.add(new Surface(Offset.offset(current.getEdges(), -delta / 2))); } inserted.addAll(interior); --- 1377,1382 ---- List<Surface> interior = new LinkedList(); for (Surface current : surfaces) { ! List<Edge> curve = Offset.offset(current.getEdges(), -delta / 2); ! interior.add(new Surface(simplify(curve))); } inserted.addAll(interior); *************** *** 1345,1351 **** } if (depth != 0) { Collection<Surface> sides = new LinkedList(); - Set<Surface> tops = new HashSet(); Surface top = exterior.extrusionall(depth, sides, tops); inserted.addAll(sides); --- 1386,1394 ---- } + + Set<Surface> tops = new HashSet(); + if (depth != 0) { Collection<Surface> sides = new LinkedList(); Surface top = exterior.extrusionall(depth, sides, tops); inserted.addAll(sides); *************** *** 1354,1360 **** } ! for (Surface current : inserted) { ! union.insert(current); } net.getOwner().add(union); } --- 1397,1455 ---- } ! Shape.addTo(union, inserted); ! ! { ! Space ext = new Space(exteriorName, Space.FUNCTIONAL, true); ! Space frame = new Space(frameName, Space.CONSTRUCTION, true); ! if (depth > 0) { ! exterior.assignBack(ext, true); ! exterior.assignFront(frame, true); ! } else { ! exterior.assignFront(ext, true); ! exterior.assignBack(frame, true); ! } ! union.add(ext); ! union.add(frame); ! Vertex n1 = exterior.normal(); ! int i = 0; ! for (Surface current : interior) { ! i++; ! Vertex n2 = current.normal(); ! double sign; ! if (n1.dot(n2) < 0) { ! sign = -depth; ! } else { ! sign = depth; ! } ! Space hole = new Space(holeName + " " + i, Space.FUNCTIONAL, true); ! if (sign > 0) { ! current.assignFront(hole, true); ! current.setBackDomain(ext); ! } else { ! current.assignBack(hole, true); ! current.setFrontDomain(ext); ! } ! for (Surface s : tops) { ! if (s.getBackDomain().isVoid()) { ! s.setBackDomain(ext); ! } ! if (s.getFrontDomain().isVoid()) { ! s.setFrontDomain(ext); ! } ! } ! for (Surface s : hole.getEnvelope()) { ! if (s.getBackDomain().isVoid()) { ! s.setBackDomain(frame); ! } ! if (s.getFrontDomain().isVoid()) { ! s.setFrontDomain(frame); ! } ! } ! ! union.add(hole); ! } } + + net.getOwner().add(union); } |