From 2b4f1cf95500f1140b51100626dd2f3fdbc41b1c Mon Sep 17 00:00:00 2001 From: Bill Kuker Date: Wed, 22 Apr 2009 14:33:49 +0000 Subject: [PATCH] Found RoundRectangle2d class, like 5x faster than making one out of rects and circles. --- .../rocketry/motorsim/grain/BurningShape.java | 30 +++++++------------ 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/src/com/billkuker/rocketry/motorsim/grain/BurningShape.java b/src/com/billkuker/rocketry/motorsim/grain/BurningShape.java index 34eb98b..c31a9ee 100644 --- a/src/com/billkuker/rocketry/motorsim/grain/BurningShape.java +++ b/src/com/billkuker/rocketry/motorsim/grain/BurningShape.java @@ -4,6 +4,7 @@ import java.awt.Shape; import java.awt.geom.Area; import java.awt.geom.Ellipse2D; import java.awt.geom.Rectangle2D; +import java.awt.geom.RoundRectangle2D; import java.util.HashSet; import java.util.Set; @@ -82,26 +83,15 @@ public class BurningShape { java.awt.geom.Area a = new java.awt.geom.Area(); double d = 2 * mm; - //Make it wider - double w = r.getWidth() + d; - double h = r.getHeight(); - double x = r.getX() - d / 2; - double y = r.getY(); - a.add( new java.awt.geom.Area(new Rectangle2D.Double(x, y, w, h))); - - //Make it taller - w = r.getWidth(); - h = r.getHeight() + d; - x = r.getX(); - y = r.getY() - d / 2; - a.add( new java.awt.geom.Area(new Rectangle2D.Double(x, y, w, h))); - - //Add rounded corners - a.add( new java.awt.geom.Area(new Ellipse2D.Double(r.getX()-mm, r.getY()-mm, mm*2, mm*2))); - a.add( new java.awt.geom.Area(new Ellipse2D.Double(r.getX()+r.getWidth()-mm, r.getY()-mm, mm*2, mm*2))); - a.add( new java.awt.geom.Area(new Ellipse2D.Double(r.getX()+r.getWidth()-mm, r.getY()+r.getHeight()-mm, mm*2, mm*2))); - a.add( new java.awt.geom.Area(new Ellipse2D.Double(r.getX()-mm, r.getY()+r.getHeight()-mm, mm*2, mm*2))); - + a.add(new Area(new RoundRectangle2D.Double( + r.getX() - d / 2, + r.getY() - d / 2, + r.getWidth() + d, + r.getHeight() + d, + d, + d + ))); + return a; } -- 2.47.2