public void GetAngleByHeight_Tests(double x1, double x2, double length, double angle) { DcLineSegment lineSegment = new DcLineSegment(new Point(x1, x2), length, angle); var actual = DcMath.GetAngleByHeight(lineSegment.Height, lineSegment.Length, lineSegment.X1, lineSegment.Y1, lineSegment.X2, lineSegment.Y2); Assert.AreEqual(lineSegment.Angle, actual, 0.0001); }
public void SetConstraint_Depended_Reference_Added_To_Active() { // Init IDictionary <int, DcPoint> pointCollection = new Dictionary <int, DcPoint>(); DcLineSegment lineSegment = new DcLineSegment(100, 100, 100, 200); PointManager.AddPrimitivePoints(pointCollection, lineSegment); DcPoint point = new DcPoint(100, 200, PointHash.CreateHash(1, 1)); // Action point = PointManager.SetConstraint(point, pointCollection); var ActiveHash = 0; foreach (var item in lineSegment.Points) { if (item.Value.X == 100 && item.Value.Y == 200) { ActiveHash = item.Key; } } DcPoint activePoint = pointCollection[ActiveHash]; var expected = point.GetHashCode(); var actual = activePoint.DependedHash; Assert.AreEqual(expected, actual); }
public void Add_Sub_Line_Height_When_Has_Length_And_Width_Constraints_No_Points_Constraint_NO_CHANGES(double delta) { // Init _canvas.Clear(); DcLineSegment lineSegment = new DcLineSegment(100, 100, 200, 200); double expectedLength = lineSegment.Length; double expectedAngle = lineSegment.Angle; double expectedX1 = lineSegment.X1; double expectedY1 = lineSegment.Y1; double expectedX2 = lineSegment.X2; double expectedY2 = lineSegment.Y2; lineSegment.AddLocalConstraint(Constraints.Length); lineSegment.AddLocalConstraint(Constraints.Width); _canvas.AddToVisualCollection(lineSegment); // Act lineSegment.Height += delta; Assert.AreEqual(expectedLength, lineSegment.Length); Assert.AreEqual(expectedX1, lineSegment.X1); Assert.AreEqual(expectedY1, lineSegment.Y1); Assert.AreEqual(expectedX2, lineSegment.X2); Assert.AreEqual(expectedY2, lineSegment.Y2); Assert.AreEqual(expectedAngle, lineSegment.Angle); }
private void Add_lines(object sender, RoutedEventArgs e) { Canva.DcLineSegments.Add(new DcLineSegment(100, 100, 100, 200)); DcLineSegment lineSegment = new DcLineSegment(100, 200, 200, 200); lineSegment.AddLocalConstraint(Constraints.Angle); Canva.DcLineSegments.Add(lineSegment); DcLineSegment lineSegment1 = new DcLineSegment(new Point(200, 100), 100, 180); lineSegment1.AddLocalConstraint(Constraints.Angle); Canva.DcLineSegments.Add(lineSegment1); DcLineSegment lineSegment2 = new DcLineSegment(200, 200, 200, 100); //lineSegment2.AddLocalConstraint(Constraints.Angle); Canva.DcLineSegments.Add(lineSegment2); Mess1.Text = $"ID: {lineSegment.ID}"; Mess2.Text = $"Length: {lineSegment.Length}"; Mess3.Text = $"Angle: {lineSegment.Angle}"; Mess4.Text = $"dX: {lineSegment.Width}"; Mess5.Text = $"dY: {lineSegment.Height}"; Mess6.Text = $"X1: {lineSegment.X1}"; Mess7.Text = $"Y1: {lineSegment.Y1}"; Mess8.Text = $"X2: {lineSegment.X2}"; Mess9.Text = $"Y2: {lineSegment.Y2}"; //Canva.DcLineSegments.Add(new DcLineSegment(new Point(100, 200), 100, 0)); //Canva.DcLineSegments.Add(new DcLineSegment(new Point(200, 200), 100, 270)); //Canva.DcLineSegments.Add(new DcLineSegment(200, 100, 100, 100)); }
public void XoffsetByTan_Tests(double x1, double x2, double length, double angle, double dx) { DcLineSegment lineSegment = new DcLineSegment(new Point(x1, x2), length, angle); var actual = DcMath.XoffsetByTan(lineSegment.Height, lineSegment.Angle); Assert.AreEqual(dx, actual, 0.000001); }
/// <summary> /// /// </summary> /// <param name="lineSegment"></param> /// <returns></returns> static public double GetLineSegmentAngle(DcLineSegment lineSegment) { double dX = lineSegment.X2 - lineSegment.X1; double dY = lineSegment.Y2 - lineSegment.Y1; double angle = RadianToDegree(Math.Atan(dY / dX)); if (dX < 0) { angle += 180; } return(angle < 0 ? angle + 360 : angle); }
public void Add_Line_Width_No_Local_Constraint_No_Points_Constraint(double x1, double y1, double x2, double y2, double newX1, double newX2, double newAngle) { // Init _canvas.Clear(); DcLineSegment lineSegment = new DcLineSegment(x1, y1, x2, y2); _canvas.AddToVisualCollection(lineSegment); // Act lineSegment.Width += 10; Assert.AreEqual(148.660687, lineSegment.Length, 0.000001); Assert.AreEqual(newX1, lineSegment.X1, 0.000001); Assert.AreEqual(y1, lineSegment.Y1); Assert.AreEqual(newX2, lineSegment.X2, 0.000001); Assert.AreEqual(y2, lineSegment.Y2); Assert.AreEqual(newAngle, lineSegment.Angle, 0.000001); }
public void Subtract_Line_Height_No_Local_Constraint_No_Points_Constraint(double x1, double y1, double x2, double y2, double newY1, double newY2, double newAngle) { // Init _canvas.Clear(); DcLineSegment lineSegment = new DcLineSegment(x1, y1, x2, y2); _canvas.AddToVisualCollection(lineSegment); // Act lineSegment.Height -= 10; Assert.AreEqual(134.53624, lineSegment.Length, 0.000001); Assert.AreEqual(x1, lineSegment.X1); Assert.AreEqual(newY1, lineSegment.Y1, 0.000001); Assert.AreEqual(x2, lineSegment.X2); Assert.AreEqual(newY2, lineSegment.Y2, 0.000001); Assert.AreEqual(newAngle, lineSegment.Angle, 0.000001); }
public void SetConstraint_No_Active_References() { // Init IDictionary <int, DcPoint> pointCollection = new Dictionary <int, DcPoint>(); DcLineSegment lineSegment = new DcLineSegment(100, 100, 100, 200); PointManager.AddPrimitivePoints(pointCollection, lineSegment); DcPoint point = new DcPoint(110, 200, PointHash.CreateHash(1, 1)); // Action point = PointManager.SetConstraint(point, pointCollection); var expected = 0; var actual = point.ActiveHash; Assert.AreEqual(expected, actual); }
public void Add_Line_Width_When_No_Local_Constraint_And_Has_First_Point_Constraint(double x1, double y1, double x2, double y2, double newX2, double newLength, double newAngle) { // Init _canvas.Clear(); DcLineSegment lineSegment = new DcLineSegment(x1, y1, x2, y2); _canvas.AddToVisualCollection(new DcLineSegment(50, 100, 100, 100)); _canvas.AddToVisualCollection(lineSegment); // Act lineSegment.Width += 10; Assert.AreEqual(newLength, lineSegment.Length, 0.000001); Assert.AreEqual(x1, lineSegment.X1); Assert.AreEqual(y1, lineSegment.Y1); Assert.AreEqual(newX2, lineSegment.X2, 0.000001); Assert.AreEqual(y2, lineSegment.Y2); Assert.AreEqual(newAngle, lineSegment.Angle, 0.000001); }
public void Subtract_Line_Length_No_Local_Constraint_No_Points_Constraint(double x1, double y1, double x2, double y2, double newX1, double newY1, double newX2, double newY2) { // Init _canvas.Clear(); DcLineSegment lineSegment = new DcLineSegment(x1, y1, x2, y2); double expectedAngle = lineSegment.Angle; _canvas.AddToVisualCollection(lineSegment); // Act lineSegment.Length -= 10; Assert.AreEqual(131.421356, lineSegment.Length, 0.000001); Assert.AreEqual(newX1, lineSegment.X1, 0.000001); Assert.AreEqual(newY1, lineSegment.Y1, 0.000001); Assert.AreEqual(newX2, lineSegment.X2, 0.000001); Assert.AreEqual(newY2, lineSegment.Y2, 0.000001); Assert.AreEqual(expectedAngle, lineSegment.Angle); }
public void Add_Line_Length_When_Has_Height_Constraint_No_Points_Constraint(double x1, double y1, double x2, double y2, double newX1, double newX2, double newAngle) { // Init _canvas.Clear(); DcLineSegment lineSegment = new DcLineSegment(x1, y1, x2, y2); lineSegment.AddLocalConstraint(Constraints.Heigth); _canvas.AddToVisualCollection(lineSegment); // Act lineSegment.Length += 10; Assert.AreEqual(151.421356, lineSegment.Length, 0.000001); Assert.AreEqual(newX1, lineSegment.X1, 0.000001); Assert.AreEqual(y1, lineSegment.Y1); Assert.AreEqual(newX2, lineSegment.X2, 0.000001); Assert.AreEqual(y2, lineSegment.Y2); Assert.AreEqual(newAngle, lineSegment.Angle, 0.000001); }
public void Subtract_Line_Height_When_No_Local_Constraint_And_Has_Second_Point_Constraint(double x1, double y1, double x2, double y2, double newY1, double newLength, double newAngle) { // Init _canvas.Clear(); DcLineSegment lineSegment = new DcLineSegment(x1, y1, x2, y2); _canvas.AddToVisualCollection(new DcLineSegment(100, 150, 200, 200)); _canvas.AddToVisualCollection(lineSegment); // Act lineSegment.Height -= 10; Assert.AreEqual(newLength, lineSegment.Length, 0.000001); Assert.AreEqual(x1, lineSegment.X1); Assert.AreEqual(newY1, lineSegment.Y1, 0.000001); Assert.AreEqual(x2, lineSegment.X2); Assert.AreEqual(y2, lineSegment.Y2); Assert.AreEqual(newAngle, lineSegment.Angle, 0.000001); }
/// <summary> /// /// </summary> /// <param name="currentPoint"></param> /// <param name="canvas"></param> /// <returns></returns> public void DrawFantom(Point currentPoint, DrCanvas canvas) { if (_pointCounter == 2) { Point _secondPoint = new Point(currentPoint.X, canvas.Height - currentPoint.Y); if (_fantom != null) { _fantom.X2 = _secondPoint.X; _fantom.Y2 = _secondPoint.Y; canvas.Update(); } else { _fantom = new DcLineSegment(_firstPoint.X, _firstPoint.Y, _secondPoint.X, _secondPoint.Y); canvas.AddToVisualCollection(_fantom); } } }
public void Subtract_Line_Length_When_Has_Width_Constraint_No_Points_Constraint(double x1, double y1, double x2, double y2, double newY1, double newY2, double newAngle) { // Init _canvas.Clear(); DcLineSegment lineSegment = new DcLineSegment(x1, y1, x2, y2); lineSegment.AddLocalConstraint(Constraints.Width); _canvas.AddToVisualCollection(lineSegment); // Act lineSegment.Length -= 10; Assert.AreEqual(131.421356, lineSegment.Length, 0.000001); Assert.AreEqual(x1, lineSegment.X1); Assert.AreEqual(newY1, lineSegment.Y1, 0.000001); Assert.AreEqual(x2, lineSegment.X2); Assert.AreEqual(newY2, lineSegment.Y2, 0.000001); Assert.AreEqual(newAngle, lineSegment.Angle, 0.000001); }
public void Subtract_Line_Width_When_Has_Angle_LocalConstraint_And_Has_First_Point_Constraint(double x1, double y1, double x2, double y2, double newX2, double newY2, double newLength, double newHeight) { // Init _canvas.Clear(); DcLineSegment lineSegment = new DcLineSegment(x1, y1, x2, y2); lineSegment.AddLocalConstraint(Constraints.Angle); _canvas.AddToVisualCollection(new DcLineSegment(50, 100, 100, 100)); _canvas.AddToVisualCollection(lineSegment); // Act lineSegment.Width -= 10; Assert.AreEqual(newLength, lineSegment.Length, 0.000001); Assert.AreEqual(x1, lineSegment.X1); Assert.AreEqual(y1, lineSegment.Y1); Assert.AreEqual(newX2, lineSegment.X2, 0.000001); Assert.AreEqual(newY2, lineSegment.Y2, 0.000001); Assert.AreEqual(newHeight, lineSegment.Height, 0.000001); }
public void Subtract_Line_Height_When_Has_Length_Constraint_No_Points_Constraint(double x1, double y1, double x2, double y2, double newX1, double newY1, double newX2, double newY2, double newAngle) { // Init _canvas.Clear(); DcLineSegment lineSegment = new DcLineSegment(x1, y1, x2, y2); double expectedLength = lineSegment.Length; lineSegment.AddLocalConstraint(Constraints.Length); _canvas.AddToVisualCollection(lineSegment); // Act lineSegment.Height -= 10; Assert.AreEqual(expectedLength, lineSegment.Length); Assert.AreEqual(newX1, lineSegment.X1, 0.000001); Assert.AreEqual(newY1, lineSegment.Y1, 0.000001); Assert.AreEqual(newX2, lineSegment.X2, 0.000001); Assert.AreEqual(newY2, lineSegment.Y2, 0.000001); Assert.AreEqual(newAngle, lineSegment.Angle, 0.000001); }
public void Add_Line_Width_When_Has_Angle_Constraint_No_Points_Constraint(double x1, double y1, double x2, double y2, double newX1, double newY1, double newX2, double newY2, double newLength) { // Init _canvas.Clear(); DcLineSegment lineSegment = new DcLineSegment(x1, y1, x2, y2); double expectedAngle = lineSegment.Angle; lineSegment.AddLocalConstraint(Constraints.Angle); _canvas.AddToVisualCollection(lineSegment); // Act lineSegment.Width += 10; Assert.AreEqual(newLength, lineSegment.Length, 0.000001); Assert.AreEqual(newX1, lineSegment.X1, 0.000001); Assert.AreEqual(newY1, lineSegment.Y1, 0.000001); Assert.AreEqual(newX2, lineSegment.X2, 0.000001); Assert.AreEqual(newY2, lineSegment.Y2, 0.000001); Assert.AreEqual(expectedAngle, lineSegment.Angle); }
public void Add_Line_Length_No_Local_Constraint_And_Has_First_Point_Constraint(double x1, double y1, double x2, double y2, double newX2, double newY2) { // Init _canvas.Clear(); DcLineSegment lineSegment = new DcLineSegment(x1, y1, x2, y2); double expectedAngle = lineSegment.Angle; _canvas.AddToVisualCollection(new DcLineSegment(50, 100, 100, 100)); _canvas.AddToVisualCollection(lineSegment); // Act lineSegment.Length += 10; Assert.AreEqual(151.421356, lineSegment.Length, 0.000001); Assert.AreEqual(x1, lineSegment.X1); Assert.AreEqual(y1, lineSegment.Y1); Assert.AreEqual(newX2, lineSegment.X2, 0.000001); Assert.AreEqual(newY2, lineSegment.Y2, 0.000001); Assert.AreEqual(expectedAngle, lineSegment.Angle); }
public void Add_Line_Length_When_Has_Width_Constraint_And_Has_Second_Point_Constraint(double x1, double y1, double x2, double y2, double newY1, double newAngle) { // Init _canvas.Clear(); DcLineSegment lineSegment = new DcLineSegment(x1, y1, x2, y2); lineSegment.AddLocalConstraint(Constraints.Width); _canvas.AddToVisualCollection(new DcLineSegment(100, 150, 200, 200)); _canvas.AddToVisualCollection(lineSegment); // Act lineSegment.Length += 10; Assert.AreEqual(151.421356, lineSegment.Length, 0.000001); Assert.AreEqual(x1, lineSegment.X1); Assert.AreEqual(newY1, lineSegment.Y1, 0.000001); Assert.AreEqual(x2, lineSegment.X2); Assert.AreEqual(y2, lineSegment.Y2); Assert.AreEqual(newAngle, lineSegment.Angle, 0.000001); }
/// <summary> /// /// </summary> /// <param name="currentPoint"></param> /// <param name="canvas"></param> /// <returns></returns> public IPrimitiveCreator Create(Point currentPoint, DrCanvas canvas) { if (_pointCounter == 1) { _firstPoint = new Point(currentPoint.X, canvas.Height - currentPoint.Y); _pointCounter++; return(this); } else if (_pointCounter == 2) { _fantom.X2 = currentPoint.X; _fantom.Y2 = canvas.Height - currentPoint.Y; canvas.Update(); _pointCounter = 1; _fantom = null; return(this); } return(null); }
public void Change_Line_Angle_No_Local_Constraint_No_Points_Constraint_Or_First_Point_Has_Constraint_2(double newAngle, double expectedAngle, double newX2, double newY2) { // Init _canvas.Clear(); DcLineSegment lineSegment = new DcLineSegment(new Point(100, 100), 100, 10); double expectedLength = lineSegment.Length; double expectedX1 = lineSegment.X1; double expectedY1 = lineSegment.Y1; _canvas.AddToVisualCollection(lineSegment); // Act lineSegment.Angle = newAngle; Assert.AreEqual(expectedLength, lineSegment.Length); Assert.AreEqual(expectedX1, lineSegment.X1); Assert.AreEqual(expectedY1, lineSegment.Y1); Assert.AreEqual(newX2, lineSegment.X2, 0.000001); Assert.AreEqual(newY2, lineSegment.Y2, 0.000001); Assert.AreEqual(expectedAngle, lineSegment.Angle, 0.000001); }
public void Add_Line_Height_When_Has_Angle_LocalConstraint_And_Has_Second_Point_Constraint(double x1, double y1, double x2, double y2, double newX1, double newY1, double newLength, double newWidth) { // Init _canvas.Clear(); DcLineSegment lineSegment = new DcLineSegment(x1, y1, x2, y2); double expectedAngle = lineSegment.Angle; lineSegment.AddLocalConstraint(Constraints.Angle); _canvas.AddToVisualCollection(new DcLineSegment(100, 150, 200, 200)); _canvas.AddToVisualCollection(lineSegment); // Act lineSegment.Height += 10; Assert.AreEqual(newLength, lineSegment.Length, 0.000001); Assert.AreEqual(newX1, lineSegment.X1, 0.000001); Assert.AreEqual(newY1, lineSegment.Y1, 0.000001); Assert.AreEqual(x2, lineSegment.X2); Assert.AreEqual(y2, lineSegment.Y2); Assert.AreEqual(expectedAngle, lineSegment.Angle); Assert.AreEqual(newWidth, lineSegment.Width, 0.000001); }
public void Add_Line_Height_When_Has_Length_LocalConstraint_And_Has_First_Point_Constraint(double x1, double y1, double x2, double y2, double newX2, double newY2, double newAngle, double newWidth) { // Init _canvas.Clear(); DcLineSegment lineSegment = new DcLineSegment(x1, y1, x2, y2); double expectedLength = lineSegment.Length; lineSegment.AddLocalConstraint(Constraints.Length); _canvas.AddToVisualCollection(new DcLineSegment(50, 100, 100, 100)); _canvas.AddToVisualCollection(lineSegment); // Act lineSegment.Height += 10; Assert.AreEqual(expectedLength, lineSegment.Length); Assert.AreEqual(x1, lineSegment.X1); Assert.AreEqual(y1, lineSegment.Y1); Assert.AreEqual(newX2, lineSegment.X2, 0.000001); Assert.AreEqual(newY2, lineSegment.Y2, 0.000001); Assert.AreEqual(newAngle, lineSegment.Angle, 0.000001); Assert.AreEqual(newWidth, lineSegment.Width, 0.000001); }