1 package net.sf.openrocket.gui.rocketfigure;
\r
4 import java.awt.Shape;
\r
5 import java.awt.geom.Ellipse2D;
\r
6 import java.awt.geom.Rectangle2D;
\r
8 import net.sf.openrocket.util.Coordinate;
\r
9 import net.sf.openrocket.util.Transformation;
\r
12 public class RingComponentShapes extends RocketComponentShapes {
\r
14 public static Shape[] getShapesSide(net.sf.openrocket.rocketcomponent.RocketComponent component,
\r
15 Transformation transformation) {
\r
16 net.sf.openrocket.rocketcomponent.RingComponent tube = (net.sf.openrocket.rocketcomponent.RingComponent)component;
\r
19 double length = tube.getLength();
\r
20 double or = tube.getOuterRadius();
\r
21 double ir = tube.getInnerRadius();
\r
24 Coordinate[] start = transformation.transform(tube.toAbsolute(new Coordinate(0,0,0)));
\r
26 if ((or-ir >= 0.0012) && (ir > 0)) {
\r
27 // Draw outer and inner
\r
28 s = new Shape[start.length*2];
\r
29 for (int i=0; i < start.length; i++) {
\r
30 s[2*i] = new Rectangle2D.Double(start[i].x*S,(start[i].y-or)*S,
\r
32 s[2*i+1] = new Rectangle2D.Double(start[i].x*S,(start[i].y-ir)*S,
\r
37 s = new Shape[start.length];
\r
38 for (int i=0; i < start.length; i++) {
\r
39 s[i] = new Rectangle2D.Double(start[i].x*S,(start[i].y-or)*S,
\r
47 public static Shape[] getShapesBack(net.sf.openrocket.rocketcomponent.RocketComponent component,
\r
48 Transformation transformation) {
\r
49 net.sf.openrocket.rocketcomponent.RingComponent tube = (net.sf.openrocket.rocketcomponent.RingComponent)component;
\r
52 double or = tube.getOuterRadius();
\r
53 double ir = tube.getInnerRadius();
\r
56 Coordinate[] start = transformation.transform(tube.toAbsolute(new Coordinate(0,0,0)));
\r
58 if ((ir < or) && (ir > 0)) {
\r
59 // Draw inner and outer
\r
60 s = new Shape[start.length*2];
\r
61 for (int i=0; i < start.length; i++) {
\r
62 s[2*i] = new Ellipse2D.Double((start[i].z-or)*S, (start[i].y-or)*S,
\r
64 s[2*i+1] = new Ellipse2D.Double((start[i].z-ir)*S, (start[i].y-ir)*S,
\r
69 s = new Shape[start.length];
\r
70 for (int i=0; i < start.length; i++) {
\r
71 s[i] = new Ellipse2D.Double((start[i].z-or)*S,(start[i].y-or)*S,2*or*S,2*or*S);
\r