public void Shift_TranslateUsingToCoordinateSystem() { CoordinateSystem system = new CoordinateSystem(Point.MakePointWithInches(1, -2, -4)); List<LineSegment> bounds = new List<LineSegment>(); bounds.Add(new LineSegment(Point.MakePointWithInches(0, 1, 0), Point.MakePointWithInches(0, 3, 0))); bounds.Add(new LineSegment(Point.MakePointWithInches(0, 1, 0), Point.MakePointWithInches(4, 1, 0))); bounds.Add(new LineSegment(Point.MakePointWithInches(0, 3, 0), Point.MakePointWithInches(4, 3, 0))); bounds.Add(new LineSegment(Point.MakePointWithInches(4, 1, 0), Point.MakePointWithInches(4, 3, 0))); Polygon testPolygon = new Polygon(bounds); Polygon shifted = testPolygon.Shift(system.ShiftToThisFrom()); List<LineSegment> expectedBounds = new List<LineSegment>(); expectedBounds.Add(new LineSegment(Point.MakePointWithInches(-1, 3, 4), Point.MakePointWithInches(-1, 5, 4))); expectedBounds.Add(new LineSegment(Point.MakePointWithInches(-1, 3, 4), Point.MakePointWithInches(3, 3, 4))); expectedBounds.Add(new LineSegment(Point.MakePointWithInches(-1, 5, 4), Point.MakePointWithInches(3, 5, 4))); expectedBounds.Add(new LineSegment(Point.MakePointWithInches(3, 3, 4), Point.MakePointWithInches(3, 5, 4))); Polygon expectedPolygon = new Polygon(expectedBounds); shifted.Should().Be(expectedPolygon); }
public void CoordinateSystem_Shift_UndoShift() { CoordinateSystem system = new CoordinateSystem(Point.MakePointWithInches(-1, 2, 4), new Angle(new Degree(), 123), new Angle(new Degree(), -22), new Angle(new Degree(), 78)); List<LineSegment> bounds = new List<LineSegment>(); bounds.Add(new LineSegment(Point.MakePointWithInches(0, 1, 0), Point.MakePointWithInches(0, 3, 0))); bounds.Add(new LineSegment(Point.MakePointWithInches(0, 1, 0), Point.MakePointWithInches(4, 1, 0))); bounds.Add(new LineSegment(Point.MakePointWithInches(0, 3, 0), Point.MakePointWithInches(4, 3, 0))); bounds.Add(new LineSegment(Point.MakePointWithInches(4, 1, 0), Point.MakePointWithInches(4, 3, 0))); Polygon testPolygon = new Polygon(bounds); Polygon shifted = testPolygon.Shift(system.ShiftToThisFrom()); Polygon shifted2 = shifted.Shift(system.ShiftFromThisTo()); testPolygon.Should().Be(shifted2); }
public void Polygon_Copy() { List<LineSegment> bounds = new List<LineSegment>(); bounds.Add(new LineSegment(Point.Origin, Point.MakePointWithInches(-1, 5, 0))); bounds.Add(new LineSegment(Point.Origin, Point.MakePointWithInches(-4, 2, 0))); bounds.Add(new LineSegment(Point.MakePointWithInches(-4, 2, 0), Point.MakePointWithInches(-5, 5, 0))); bounds.Add(new LineSegment(Point.MakePointWithInches(-1, 5, 0), Point.MakePointWithInches(-5, 5, 0))); Polygon testPolygon = new Polygon(bounds); Polygon planeCopy = new Polygon(testPolygon); //make sure it copied correctly foreach (LineSegment line in testPolygon.LineSegments) { planeCopy.LineSegments.Contains(line).Should().BeTrue(); } (planeCopy.BasePoint == testPolygon.BasePoint).Should().BeTrue(); (planeCopy.NormalVector == testPolygon.NormalVector).Should().BeTrue(); //now make sure the copy is independent by shifting it and then testing again planeCopy = planeCopy.Shift(new Shift(new Rotation(Line.XAxis, Angle.RightAngle / 2), Point.MakePointWithInches(1, 4, -2))); foreach (LineSegment line in testPolygon.LineSegments) { planeCopy.LineSegments.Contains(line).Should().BeFalse(); } (planeCopy.BasePoint == testPolygon.BasePoint).Should().BeFalse(); (planeCopy.NormalVector == testPolygon.NormalVector).Should().BeFalse(); }
public void Shift_ShiftPolygonFromCoordinateSystem() { CoordinateSystem system = new CoordinateSystem(Point.MakePointWithInches(0, 1, 0), Angle.RightAngle / 2, new Angle(new Degree(), -45), Angle.ZeroAngle); List<LineSegment> bounds = new List<LineSegment>(); bounds.Add(new LineSegment(Point.Origin, Point.MakePointWithInches(0, 2, 0))); bounds.Add(new LineSegment(Point.Origin, Point.MakePointWithInches(4, 0, 0))); bounds.Add(new LineSegment(Point.MakePointWithInches(0, 2, 0), Point.MakePointWithInches(4, 2, 0))); bounds.Add(new LineSegment(Point.MakePointWithInches(4, 0, 0), Point.MakePointWithInches(4, 2, 0))); Polygon testPolygon = new Polygon(bounds); Polygon shifted = testPolygon.Shift(system.ShiftFromThisTo()); List<LineSegment> expectedBounds = new List<LineSegment>(); expectedBounds.Add(new LineSegment(Point.MakePointWithInches(0, 1, 0), Point.MakePointWithInches(-1, 2.41421356237, 1))); expectedBounds.Add(new LineSegment(Point.MakePointWithInches(0, 1, 0), Point.MakePointWithInches(2.82842712475, 1, 2.82842712475))); expectedBounds.Add(new LineSegment(Point.MakePointWithInches(-1, 2.41421356237, 1), Point.MakePointWithInches(1.82842712475, 2.41421356237, 3.82842712475))); expectedBounds.Add(new LineSegment(Point.MakePointWithInches(2.82842712475, 1, 2.82842712475), Point.MakePointWithInches(1.82842712475, 2.41421356237, 3.82842712475))); Polygon expectedPolygon = new Polygon(expectedBounds); shifted.Should().Be(expectedPolygon); }