[Bprocessor-commit] gl/src/net/sourceforge/bprocessor/gl/view PopupMenu.java, 1.7, 1.8
Status: Pre-Alpha
Brought to you by:
henryml
From: Michael L. <he...@us...> - 2008-01-08 10:49:15
|
Update of /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/view In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv13179/src/net/sourceforge/bprocessor/gl/view Modified Files: PopupMenu.java Log Message: Improvement to bounding-sphere Index: PopupMenu.java =================================================================== RCS file: /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/view/PopupMenu.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** PopupMenu.java 7 Jan 2008 14:52:02 -0000 1.7 --- PopupMenu.java 8 Jan 2008 10:49:16 -0000 1.8 *************** *** 52,55 **** --- 52,56 ---- import net.sourceforge.bprocessor.model.SurfaceAnalysis; import net.sourceforge.bprocessor.model.Vertex; + import net.sourceforge.bprocessor.model.Command.BoundingSphere; import net.sourceforge.bprocessor.model.modellor.Modellor; *************** *** 707,712 **** { AbstractAction action = new AbstractAction("Bounding Sphere") { public void actionPerformed(ActionEvent event) { ! } }; --- 708,755 ---- { AbstractAction action = new AbstractAction("Bounding Sphere") { + private Container circle(Vertex i, Vertex j, Vertex origin, double radius) { + Container union = new Container("Circle", Container.CONSTRUCTION, true); + union.setUnion(true); + LinkedList<Vertex> vertices = new LinkedList(); + int n = 64; + for (int s = 0; s < n; s++) { + double angle = 2 * s * Math.PI / n; + double x = radius * Math.cos(angle); + double y = radius * Math.sin(angle); + Vertex vertex = origin.add(i.scale(x)).add(j.scale(y)); + vertices.add(vertex); + union.add(vertex); + } + List<Edge> edges = new LinkedList(); + Vertex previous = vertices.getLast(); + for (Vertex current : vertices) { + Edge edge = new Edge(previous, current); + previous = current; + edges.add(edge); + union.add(edge); + } + return union; + } public void actionPerformed(ActionEvent event) { ! Set<Vertex> all = Project.getInstance().world().collect(); ! BoundingSphere sphere = new BoundingSphere(all); ! CoordinateSystem system = Project.getInstance().getActiveCoordinateSystem(); ! Vertex i = system.getI(); ! Vertex j = system.getJ(); ! Vertex k = system.getN(); ! Vertex origin = sphere.center(); ! double radius = sphere.radius(); ! { ! Space circle = circle(i, j, origin, radius); ! Project.getInstance().world().add(circle); ! } ! { ! Space circle = circle(j, k, origin, radius); ! Project.getInstance().world().add(circle); ! } ! { ! Space circle = circle(k, i, origin, radius); ! Project.getInstance().world().add(circle); ! } } }; |