create changelog entry
[debian/openrocket] / core / src / net / sf / openrocket / gui / rocketfigure / MassObjectShapes.java
1 package net.sf.openrocket.gui.rocketfigure;
2
3 import java.awt.Shape;
4 import java.awt.geom.Ellipse2D;
5 import java.awt.geom.RoundRectangle2D;
6
7 import net.sf.openrocket.util.Coordinate;
8 import net.sf.openrocket.util.Transformation;
9
10
11 public class MassObjectShapes extends RocketComponentShapes {
12         
13         public static Shape[] getShapesSide(net.sf.openrocket.rocketcomponent.RocketComponent component, 
14                         Transformation transformation) {
15                 net.sf.openrocket.rocketcomponent.MassObject tube = (net.sf.openrocket.rocketcomponent.MassObject)component;
16
17                 double length = tube.getLength();
18                 double radius = tube.getRadius();
19                 double arc = Math.min(length, 2*radius) * 0.7;
20                 Coordinate[] start = transformation.transform(tube.toAbsolute(new Coordinate(0,0,0)));
21
22                 Shape[] s = new Shape[start.length];
23                 for (int i=0; i < start.length; i++) {
24                         s[i] = new RoundRectangle2D.Double(start[i].x*S,(start[i].y-radius)*S,
25                                         length*S,2*radius*S,arc*S,arc*S);
26                 }
27                 return s;
28         }
29         
30
31         public static Shape[] getShapesBack(net.sf.openrocket.rocketcomponent.RocketComponent component, 
32                         Transformation transformation) {
33                 net.sf.openrocket.rocketcomponent.MassObject tube = (net.sf.openrocket.rocketcomponent.MassObject)component;
34                 
35                 double or = tube.getRadius();
36                 
37                 Coordinate[] start = transformation.transform(tube.toAbsolute(new Coordinate(0,0,0)));
38
39                 Shape[] s = new Shape[start.length];
40                 for (int i=0; i < start.length; i++) {
41                         s[i] = new Ellipse2D.Double((start[i].z-or)*S,(start[i].y-or)*S,2*or*S,2*or*S);
42                 }
43                 return s;
44         }
45         
46         
47 }