private List <PerimeterLineSegment> AdjustSegments(Point2D cen) { List <PerimeterLineSegment> movedSegments = new List <PerimeterLineSegment>(); foreach (var s in Segments) { PerimeterLineSegment adjustedSeg = new PerimeterLineSegment( new Point2D(s.PointI.X + cen.X, s.PointI.Y + cen.Y), new Point2D(s.PointJ.X + cen.X, s.PointJ.Y + cen.Y) ); movedSegments.Add(adjustedSeg); } if (this.ColumnType == PunchingPerimeterConfiguration.CornerLeftBottom || this.ColumnType == PunchingPerimeterConfiguration.CornerLeftTop || this.ColumnType == PunchingPerimeterConfiguration.CornerRightBottom || this.ColumnType == PunchingPerimeterConfiguration.CornerRightTop ) { double J_x_bar = GetJx(movedSegments); double J_y_bar = GetJy(movedSegments); double J_xy_bar = GetJxy(movedSegments); //421.1R-13 Equation (B-10) double theta = Math.Atan(-2.0 * J_xy_bar / (J_x_bar - J_y_bar)); //Calculate rotated coordinates per B-12 and B-13 List <PerimeterLineSegment> rotatedSegments = new List <PerimeterLineSegment>(); foreach (var s in movedSegments) { PerimeterLineSegment rotatedSeg = new PerimeterLineSegment( new Point2D(s.PointI.X * Math.Cos(theta) + s.PointI.Y * Math.Sin(theta), -s.PointI.X * Math.Sin(theta) + s.PointI.Y * Math.Cos(theta)), new Point2D(s.PointJ.X * Math.Cos(theta) + s.PointJ.Y * Math.Sin(theta), -s.PointJ.X * Math.Sin(theta) + s.PointJ.Y * Math.Cos(theta)) ); rotatedSegments.Add(rotatedSeg); } return(rotatedSegments); } else { return(movedSegments); } }
private List<PerimeterLineSegment> AdjustSegments(Point2D cen) { List<PerimeterLineSegment> movedSegments = new List<PerimeterLineSegment>(); foreach (var s in Segments) { PerimeterLineSegment adjustedSeg = new PerimeterLineSegment( new Point2D(s.PointI.X+cen.X, s.PointI.Y+cen.Y), new Point2D(s.PointJ.X + cen.X, s.PointJ.Y + cen.Y) ); movedSegments.Add(adjustedSeg); } if (this.ColumnType== PunchingPerimeterConfiguration.CornerLeftBottom || this.ColumnType== PunchingPerimeterConfiguration.CornerLeftTop || this.ColumnType== PunchingPerimeterConfiguration.CornerRightBottom || this.ColumnType== PunchingPerimeterConfiguration.CornerRightTop ) { double J_x_bar = GetJx (movedSegments); double J_y_bar = GetJy (movedSegments); double J_xy_bar = GetJxy(movedSegments); //421.1R-13 Equation (B-10) double theta = Math.Atan(-2.0 * J_xy_bar / (J_x_bar - J_y_bar)); //Calculate rotated coordinates per B-12 and B-13 List<PerimeterLineSegment> rotatedSegments = new List<PerimeterLineSegment>(); foreach (var s in movedSegments) { PerimeterLineSegment rotatedSeg = new PerimeterLineSegment( new Point2D(s.PointI.X * Math.Cos(theta) + s.PointI.Y * Math.Sin(theta), -s.PointI.X * Math.Sin(theta) + s.PointI.Y * Math.Cos(theta)), new Point2D(s.PointJ.X * Math.Cos(theta) + s.PointJ.Y * Math.Sin(theta), -s.PointJ.X * Math.Sin(theta) + s.PointJ.Y * Math.Cos(theta)) ); rotatedSegments.Add(rotatedSeg); } return rotatedSegments; } else { return movedSegments; } }