From 4ba395ac77268aca66184dfabc871f6170d387e7 Mon Sep 17 00:00:00 2001 From: Daniel_M_Williams Date: Fri, 8 May 2020 17:35:32 -0400 Subject: [PATCH 1/2] [fix] Rail Buttons now properly display in 2d side views (when the rocket is rotated --- .../gui/rocketfigure/RailButtonShapes.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/swing/src/net/sf/openrocket/gui/rocketfigure/RailButtonShapes.java b/swing/src/net/sf/openrocket/gui/rocketfigure/RailButtonShapes.java index 2b15b9a79..c9b2b8212 100644 --- a/swing/src/net/sf/openrocket/gui/rocketfigure/RailButtonShapes.java +++ b/swing/src/net/sf/openrocket/gui/rocketfigure/RailButtonShapes.java @@ -18,7 +18,11 @@ public class RailButtonShapes extends RocketComponentShape { RailButton btn = (RailButton)component; - final double rotation_rad = btn.getAngleOffset(); + final Coordinate instanceAbsoluteLocation = transformation.transform(Coordinate.ZERO); + final Coordinate unitOrientation = transformation.transform(new Coordinate(0,1,0)); + + final double view_rotation_rad = -Math.atan2(unitOrientation.y, unitOrientation.z) + Math.PI/2; + final double angle_offset_rad = btn.getAngleOffset(); final double baseHeight = btn.getStandoff(); final double innerHeight = btn.getInnerHeight(); final double flangeHeight = btn.getFlangeHeight(); @@ -27,18 +31,16 @@ public class RailButtonShapes extends RocketComponentShape { final double innerDiameter = btn.getInnerDiameter(); final double innerRadius = innerDiameter/2; - final double sinr = Math.abs(Math.sin(rotation_rad)); - final double cosr = Math.cos(rotation_rad); + final double sinr = Math.abs(Math.sin(angle_offset_rad + view_rotation_rad)); + final double cosr = Math.cos(angle_offset_rad + view_rotation_rad); final double baseHeightcos = baseHeight*cosr; final double innerHeightcos = innerHeight*cosr; final double flangeHeightcos = flangeHeight*cosr; - final Coordinate instanceAbsoluteLocation = transformation.transform(Coordinate.ZERO); +// System.err.println(String.format("Generating Shapes for RailButtons...")); +// System.err.println(String.format(" @ %s", instanceAbsoluteLocation)); +// System.err.println(String.format(" angle: %f", view_rotation_rad)); - System.err.println(String.format("Generating Shapes for RailButtons...")); - System.err.println(String.format(" @ %s", instanceAbsoluteLocation)); - - Path2D.Double path = new Path2D.Double(); {// central pillar final double drawWidth = outerDiameter; From 5c3ce2ec5e98b13ce3f225ad488bac115e0f9a57 Mon Sep 17 00:00:00 2001 From: Daniel_M_Williams Date: Sat, 9 May 2020 15:20:10 -0400 Subject: [PATCH 2/2] [cleanup] removed unnecessary debug lines --- .../sf/openrocket/gui/rocketfigure/RailButtonShapes.java | 6 ------ 1 file changed, 6 deletions(-) diff --git a/swing/src/net/sf/openrocket/gui/rocketfigure/RailButtonShapes.java b/swing/src/net/sf/openrocket/gui/rocketfigure/RailButtonShapes.java index c9b2b8212..67537aece 100644 --- a/swing/src/net/sf/openrocket/gui/rocketfigure/RailButtonShapes.java +++ b/swing/src/net/sf/openrocket/gui/rocketfigure/RailButtonShapes.java @@ -37,10 +37,6 @@ public class RailButtonShapes extends RocketComponentShape { final double innerHeightcos = innerHeight*cosr; final double flangeHeightcos = flangeHeight*cosr; -// System.err.println(String.format("Generating Shapes for RailButtons...")); -// System.err.println(String.format(" @ %s", instanceAbsoluteLocation)); -// System.err.println(String.format(" angle: %f", view_rotation_rad)); - Path2D.Double path = new Path2D.Double(); {// central pillar final double drawWidth = outerDiameter; @@ -138,8 +134,6 @@ public class RailButtonShapes extends RocketComponentShape { rect.lineTo( (x+radius*cosr+height*sinr), (y-radius*sinr+height*cosr)); rect.lineTo( (x+radius*cosr), (y-radius*sinr)); rect.closePath(); - // add points - return rect; }