From 4527a3cd33ca653b332580e51eaa3ab1a9cef114 Mon Sep 17 00:00:00 2001 From: Michael L Smith Date: Mon, 22 Feb 2016 18:43:26 -0800 Subject: [PATCH] + Position() on resized objects is now supported via the averaging of Bounds() positions. --- OSCADSharp/OSCADSharp.ConsoleTests/Program.cs | 4 +++- OSCADSharp/OSCADSharp.UnitTests/Transforms/ResizeTests.cs | 5 +++-- OSCADSharp/OSCADSharp/Transforms/ResizedObject.cs | 3 ++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/OSCADSharp/OSCADSharp.ConsoleTests/Program.cs b/OSCADSharp/OSCADSharp.ConsoleTests/Program.cs index cf8ed49..19291b8 100644 --- a/OSCADSharp/OSCADSharp.ConsoleTests/Program.cs +++ b/OSCADSharp/OSCADSharp.ConsoleTests/Program.cs @@ -13,7 +13,9 @@ namespace OSCADSharp.ConsoleTests { static void Main(string[] args) { - var obj = new Cube(5, 10, 20) + new Sphere(10).Translate(-10, 5, 0); + + var obj = new Cube(5, 5, 20) + .Translate(30, 0, 0).Rotate(0, 90, 0).Resize(2, 2, 2); var pos = obj.Position(); var cyl1 = new Cylinder(1, 100, true).Translate(pos); diff --git a/OSCADSharp/OSCADSharp.UnitTests/Transforms/ResizeTests.cs b/OSCADSharp/OSCADSharp.UnitTests/Transforms/ResizeTests.cs index 631bf68..f6edd06 100644 --- a/OSCADSharp/OSCADSharp.UnitTests/Transforms/ResizeTests.cs +++ b/OSCADSharp/OSCADSharp.UnitTests/Transforms/ResizeTests.cs @@ -12,11 +12,12 @@ namespace OSCADSharp.UnitTests.Transforms public class ResizeTests { [TestMethod] - [ExpectedException(typeof(NotSupportedException))] - public void Resize_PositionNotSupportedAfterResize() + public void Resize_BoundaryBasedPositionAfterResizeIsInExpectedLocation() { var pos = new Cube(5, 5, 20) .Translate(30, 0, 0).Rotate(0, 90, 0).Resize(2, 2, 2).Position(); + + Assert.AreEqual(new Vector3(1, 1, -13), pos); } [TestMethod] diff --git a/OSCADSharp/OSCADSharp/Transforms/ResizedObject.cs b/OSCADSharp/OSCADSharp/Transforms/ResizedObject.cs index b185896..6cb5b03 100644 --- a/OSCADSharp/OSCADSharp/Transforms/ResizedObject.cs +++ b/OSCADSharp/OSCADSharp/Transforms/ResizedObject.cs @@ -50,7 +50,8 @@ namespace OSCADSharp.Transforms public override Vector3 Position() { - throw new NotSupportedException("Position is not supported on Resized objects."); + var bounds = this.Bounds(); + return Vector3.Average(bounds.BottomLeft, bounds.TopRight); } public override Bounds Bounds()