]> git.gag.com Git - sw/motorsim/commitdiff
Found RoundRectangle2d class, like 5x faster than making one out of rects and circles.
authorBill Kuker <bkuker@billkuker.com>
Wed, 22 Apr 2009 14:33:49 +0000 (14:33 +0000)
committerBill Kuker <bkuker@billkuker.com>
Wed, 22 Apr 2009 14:33:49 +0000 (14:33 +0000)
src/com/billkuker/rocketry/motorsim/grain/BurningShape.java

index 34eb98bcab4b3be4722ca0f3c645fa27a3bd9187..c31a9eea98bafa346b0333e4b1c50d3959aca183 100644 (file)
@@ -4,6 +4,7 @@ import java.awt.Shape;
 import java.awt.geom.Area;\r
 import java.awt.geom.Ellipse2D;\r
 import java.awt.geom.Rectangle2D;\r
+import java.awt.geom.RoundRectangle2D;\r
 import java.util.HashSet;\r
 import java.util.Set;\r
 \r
@@ -82,26 +83,15 @@ public class BurningShape {
                                java.awt.geom.Area a = new java.awt.geom.Area();\r
                                double d = 2 * mm;\r
                                \r
-                               //Make it wider\r
-                               double w = r.getWidth() + d;\r
-                               double h = r.getHeight();\r
-                               double x = r.getX() - d / 2;\r
-                               double y = r.getY();\r
-                               a.add( new java.awt.geom.Area(new Rectangle2D.Double(x, y, w, h)));\r
-                               \r
-                               //Make it taller\r
-                               w = r.getWidth();\r
-                               h = r.getHeight() + d;\r
-                               x = r.getX();\r
-                               y = r.getY() - d / 2;\r
-                               a.add( new java.awt.geom.Area(new Rectangle2D.Double(x, y, w, h)));\r
-                               \r
-                               //Add rounded corners\r
-                               a.add( new java.awt.geom.Area(new Ellipse2D.Double(r.getX()-mm, r.getY()-mm, mm*2, mm*2)));\r
-                               a.add( new java.awt.geom.Area(new Ellipse2D.Double(r.getX()+r.getWidth()-mm, r.getY()-mm, mm*2, mm*2)));\r
-                               a.add( new java.awt.geom.Area(new Ellipse2D.Double(r.getX()+r.getWidth()-mm, r.getY()+r.getHeight()-mm, mm*2, mm*2)));\r
-                               a.add( new java.awt.geom.Area(new Ellipse2D.Double(r.getX()-mm, r.getY()+r.getHeight()-mm, mm*2, mm*2)));\r
-                               \r
+                               a.add(new Area(new RoundRectangle2D.Double(\r
+                                               r.getX() - d / 2,\r
+                                               r.getY() - d / 2,\r
+                                               r.getWidth() + d,\r
+                                               r.getHeight() + d,\r
+                                               d,\r
+                                               d\r
+                                               )));\r
+\r
                                return a;\r
                        }\r
 \r