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);
! }
}
};
|