public void removeVanishingLine(vLine vline) { vanishingLine.Remove(vline); if (vline.orientation == vLine.Xaxis) vanishingLineX.Remove(vline); else if (vline.orientation == vLine.Yaxis) vanishingLineY.Remove(vline); else if (vline.orientation == vLine.Zaxis) vanishingLineZ.Remove(vline); }
// bufferedImageLine을 vanishingLine에 추가 public void addVanishingLine(Line line, int orientation) { vLine newLine = new vLine(line, orientation); vanishingLine.Add(newLine); if (orientation == vLine.Xaxis) vanishingLineX.Add(newLine); else if (orientation == vLine.Yaxis) vanishingLineY.Add(newLine); else if (orientation == vLine.Zaxis) vanishingLineZ.Add(newLine); }
public PointF intersection(vLine vline) { PointF point = new PointF(); float det = this.a * vline.b - vline.a * this.b; if (det == 0) { point.X = -1; point.Y = -1; } else { point.X = 1 / det * (this.b * vline.c - vline.b * this.c); point.Y = 1 / det * (this.c * vline.a - vline.c * this.a); } return(point); }
public static PointF midPoint(this RectangleF rectangle, vLine vline) { PointF[] point = new PointF[2]; int count = 0; if (rectangle.Y <= vline.Y(rectangle.X) && vline.Y(rectangle.X) <= rectangle.Y + rectangle.Height) { point[count++] = new PointF(rectangle.X, vline.Y(rectangle.X)); } if (rectangle.Y <= vline.Y(rectangle.X + rectangle.Width) && vline.Y(rectangle.X + rectangle.Width) <= rectangle.Y + rectangle.Height) { point[count++] = new PointF(rectangle.X + rectangle.Width, vline.Y(rectangle.X + rectangle.Width)); } if (rectangle.X <= vline.X(rectangle.Y) && vline.X(rectangle.Y) <= rectangle.X + rectangle.Width) { point[count++] = new PointF(vline.X(rectangle.Y), rectangle.Y); } if (rectangle.X <= vline.X(rectangle.Y + rectangle.Height) && vline.X(rectangle.Y + rectangle.Height) <= rectangle.X + rectangle.Width) { point[count++] = new PointF(vline.X(rectangle.Y + rectangle.Height), rectangle.Y + rectangle.Height); } return(new PointF((point[0].X + point[1].X) / 2, (point[0].Y + point[1].Y) / 2)); }