Example #1
0
 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);
 }
Example #2
0
        // 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);
        }
Example #3
0
        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);
        }
Example #4
0
        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));
        }