Exemple #1
0
 public RightTriangle()
 {
     BeginCoord = new NormPoint();
     EndCoord   = new NormPoint();
     Node3      = new NormPoint();
     Node4      = new NormPoint();
 }
Exemple #2
0
        public void Init(NormPoint p1, NormPoint p2)
        {
            BeginCoord = p1;
            EndCoord   = p2;
            bool tmp;
            int  flag;

            if (Math.Abs(p1.X - p2.X) < Math.Abs(p1.Y - p2.Y))
            {
                R = Math.Abs(p1.X - p2.X) / 2;
                if (p1.Y > p2.Y)
                {
                    flag = 1;
                }
                else
                {
                    flag = -1;
                }
                EndCoord.UpdateCoord(p2.X, p1.Y - flag * Math.Abs(p2.X - p1.X));
            }
            else
            {
                R = Math.Abs(p1.Y - p2.Y) / 2;
                if (p1.X > p2.X)
                {
                    flag = 1;
                }
                else
                {
                    flag = -1;
                }
                EndCoord.UpdateCoord(p1.X - flag * Math.Abs(p1.Y - p2.Y), p2.Y);
            }
            C.UpdateCoord((p1.X + p2.X) / 2, (p1.Y + p2.Y) / 2);
        }
Exemple #3
0
 public void Init(NormPoint p1, NormPoint p2)
 {
     BeginCoord = p1;
     EndCoord   = p2;
     Node3.UpdateCoord(BeginCoord.X, EndCoord.Y);
     Node4.UpdateCoord(EndCoord.X, BeginCoord.Y);
 }
Exemple #4
0
 public void Init(NormPoint p1, NormPoint p2, System.Drawing.Color Color, float Thick = 1)
 {
     BeginCoord = p1;
     EndCoord   = p2;
     SelectBorderColor(Color.R, Color.G, Color.B, Color.A);
     SelectLineThick(Thick);
 }
Exemple #5
0
 public Line()
 {
     BeginCoord  = new NormPoint();
     EndCoord    = new NormPoint();
     BorderColor = System.Drawing.Color.FromArgb(0, 0, 0, 1);
     LineThick   = 1;
 }
Exemple #6
0
 public IsoscelesTriangle()
 {
     BeginCoord = new NormPoint();
     EndCoord   = new NormPoint();
     Node3      = new NormPoint();
     Node4      = new NormPoint();
     Node5      = new NormPoint();
 }
Exemple #7
0
 public Circle()
 {
     BeginCoord  = new NormPoint();
     EndCoord    = new NormPoint();
     BorderColor = System.Drawing.Color.Black;
     C           = new NormPoint();
     LineThick   = 1;
 }
Exemple #8
0
 public bool IsIn(NormPoint p)
 {
     if ((p.X - C.X) * (p.X - C.X) + (p.Y - C.Y) * (p.Y - C.Y) < R * R)
     {
         return(true);
     }
     return(false);
 }
Exemple #9
0
 public void Init(NormPoint p1, NormPoint p2, System.Drawing.Color Color, float Thick = 1)
 {
     BeginCoord = p1;
     EndCoord   = p2;
     Node3.UpdateCoord(BeginCoord.X, EndCoord.Y);
     Node4.UpdateCoord(EndCoord.X, BeginCoord.Y);
     SelectBorderColor(Color.R, Color.G, Color.B, Color.A);
     SelectLineThick(Thick);
 }
Exemple #10
0
        public void Highlight(IPaint screen)
        {
            NormPoint a = new NormPoint();
            NormPoint b = new NormPoint();

            a.UpdateCoord(EndCoord.X, BeginCoord.Y);
            b.UpdateCoord(BeginCoord.X, EndCoord.Y);
            screen.drawhighlight(new List <NormPoint> {
                BeginCoord, a, BeginCoord, b, b, EndCoord, EndCoord, a
            });
        }
Exemple #11
0
 public static System.Drawing.Color GetColor(NormPoint point)
 {
     foreach (IFigure elem in ListOfFigures)
     {
         if (elem.IsIn(point))
         {
             return(elem.BorderColor);
         }
     }
     return(System.Drawing.Color.White);
 }
Exemple #12
0
        public IFigure Rotate(double Phi)
        {
            Line tmp = new Line();

            tmp = this;
            Single    PI = (Single)(Math.PI);
            NormPoint C  = new NormPoint();

            C.UpdateCoord((BeginCoord.X + EndCoord.X) / 2, (BeginCoord.Y + EndCoord.Y) / 2);
            tmp.BeginCoord.UpdateCoord(C.X + (BeginCoord.X - C.X) * Math.Cos(Phi * PI / 180) - (BeginCoord.Y - C.Y) * Math.Sin(Phi * PI / 180), C.Y + (BeginCoord.X - C.X) * Math.Sin(Phi * PI / 180) + (BeginCoord.Y - C.Y) * Math.Cos(Phi * PI / 180));
            tmp.EndCoord.UpdateCoord(C.X + (EndCoord.X - C.X) * Math.Cos(Phi * PI / 180) - (EndCoord.Y - C.Y) * Math.Sin(Phi * PI / 180), C.Y + (EndCoord.X - C.X) * Math.Sin(Phi * PI / 180) + (EndCoord.Y - C.Y) * Math.Cos(Phi * PI / 180));
            return(tmp);
        }
Exemple #13
0
        public static void SelectFigure(NormPoint point)
        {
            int i = 1;

            for (; i <= ListOfFigures.Count(); i++)
            {
                if (ListOfFigures[ListOfFigures.Count() - i].IsIn(point))
                {
                    SelectedItem = ListOfFigures.Count() - i;
                    break;
                }
                ;
            }
        }
Exemple #14
0
        public void Highlight(IPaint screen)
        {
            NormPoint a = new NormPoint();
            NormPoint b = new NormPoint();
            NormPoint c = new NormPoint();
            NormPoint d = new NormPoint();

            a.UpdateCoord(BeginCoord.X + 0.001, BeginCoord.Y + 0.01 + LineThick / 200);
            b.UpdateCoord(EndCoord.X + 0.001, EndCoord.Y + 0.01 + LineThick / 200);
            c.UpdateCoord(BeginCoord.X - 0.01, BeginCoord.Y - 0.001 + LineThick / 200);
            d.UpdateCoord(EndCoord.X - 0.01, EndCoord.Y - 0.001 + LineThick / 200);
            screen.drawhighlight(new List <NormPoint> {
                a, b, c, d
            });
        }
Exemple #15
0
        public bool IsIn(NormPoint p)
        {
            double abp = Scal(BeginCoord, Node3, p);
            double bcp = Scal(Node3, EndCoord, p);
            double acp = Scal(EndCoord, BeginCoord, p);

            if (abp > 0 && bcp > 0 && acp > 0 || abp < 0 && bcp < 0 && acp < 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Exemple #16
0
        public void Highlight(IPaint screen)
        {
            NormPoint a = new NormPoint();
            NormPoint b = new NormPoint();
            NormPoint c = new NormPoint();
            NormPoint d = new NormPoint();

            a.UpdateCoord(BeginCoord.X, BeginCoord.Y);
            b.UpdateCoord(Node3.X, Node3.Y);
            c.UpdateCoord(EndCoord.X, EndCoord.Y);
            d.UpdateCoord(Node4.X, Node4.Y);
            screen.drawhighlight(new List <NormPoint> {
                a, b, b, c, c, d, d, a
            });
        }
Exemple #17
0
        public bool IsIn(NormPoint p)
        {
            double dX = EndCoord.X - BeginCoord.X;
            double dY = EndCoord.Y - BeginCoord.Y;

            dX = (p.X - BeginCoord.X) / dX;
            dY = dX * dY + BeginCoord.Y;
            if (p.Y < dY + LineThick / 100 && p.Y > dY - LineThick / 10)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Exemple #18
0
        public void Highlight(IPaint screen)
        {
            NormPoint a = new NormPoint();
            NormPoint b = new NormPoint();
            NormPoint c = new NormPoint();
            NormPoint d = new NormPoint();

            double CX = (BeginCoord.X + EndCoord.X) / 2;
            double CY = (BeginCoord.Y + EndCoord.Y) / 2;

            a.UpdateCoord(CX + (BeginCoord.X - CX) * 1.1, CY + (BeginCoord.Y - CY) * 1.1);
            d.UpdateCoord(CX + (Node4.X - CX) * 1.1, CY + (Node4.Y - CY) * 1.1);
            c.UpdateCoord(CX + (EndCoord.X - CX) * 1.1, CY + (EndCoord.Y - CY) * 1.1);
            b.UpdateCoord(CX + (Node3.X - CX) * 1.1, CY + (Node3.Y - CY) * 1.1);
            screen.drawhighlight(new List <NormPoint> {
                a, b, b, c, c, d, d, a
            });
        }
Exemple #19
0
        public IFigure Rotate(double Phi)
        {
            RightTriangle tmp;

            tmp = this;
            Single    PI = (Single)(Math.PI);
            NormPoint C  = new NormPoint();

            C.UpdateCoord((BeginCoord.X + EndCoord.X) / 2, (BeginCoord.Y + EndCoord.Y) / 2);
            tmp.BeginCoord.UpdateCoord(C.X + (BeginCoord.X - C.X) * Math.Cos(Phi * PI / 180) - (BeginCoord.Y - C.Y) * Math.Sin(Phi * PI / 180), C.Y + (BeginCoord.X - C.X) * Math.Sin(Phi * PI / 180) + (BeginCoord.Y - C.Y) * Math.Cos(Phi * PI / 180));
            tmp.EndCoord.UpdateCoord(C.X + (EndCoord.X - C.X) * Math.Cos(Phi * PI / 180) - (EndCoord.Y - C.Y) * Math.Sin(Phi * PI / 180), C.Y + (EndCoord.X - C.X) * Math.Sin(Phi * PI / 180) + (EndCoord.Y - C.Y) * Math.Cos(Phi * PI / 180));
            tmp.Node3.UpdateCoord(C.X + (Node3.X - C.X) * Math.Cos(Phi * PI / 180) - (Node3.Y - C.Y) * Math.Sin(Phi * PI / 180), C.Y + (Node3.X - C.X) * Math.Sin(Phi * PI / 180) + (Node3.Y - C.Y) * Math.Cos(Phi * PI / 180));
            tmp.Node4.UpdateCoord(C.X + (Node4.X - C.X) * Math.Cos(Phi * PI / 180) - (Node4.Y - C.Y) * Math.Sin(Phi * PI / 180), C.Y + (Node4.X - C.X) * Math.Sin(Phi * PI / 180) + (Node4.Y - C.Y) * Math.Cos(Phi * PI / 180));
            tmp.SelectBorderColor(BorderColor.R, BorderColor.G, BorderColor.B, BorderColor.A);
            tmp.SelectLineThick(LineThick);
            //tmp.Init(tmp.BeginCoord, tmp.EndCoord, BorderColor, LineThick);
            return(tmp);
        }
Exemple #20
0
        public void Init(NormPoint p1, NormPoint p2, System.Drawing.Color Color, float Thick = 1)
        {
            BeginCoord = p1;
            EndCoord   = p2;
            bool tmp;
            int  flag;

            if (Math.Abs(p1.X - p2.X) < Math.Abs(p1.Y - p2.Y))
            {
                R = Math.Abs(p1.X - p2.X) / 2;
                if (p1.Y > p2.Y)
                {
                    flag = 1;
                }
                else
                {
                    flag = -1;
                }
                EndCoord.UpdateCoord(p2.X, p1.Y - flag * Math.Abs(p2.X - p1.X));
            }
            else
            {
                R = Math.Abs(p1.Y - p2.Y) / 2;
                if (p1.X > p2.X)
                {
                    flag = 1;
                }
                else
                {
                    flag = -1;
                }
                EndCoord.UpdateCoord(p1.X - flag * Math.Abs(p1.Y - p2.Y), p2.Y);
            }
            C.UpdateCoord((p1.X + p2.X) / 2, (p1.Y + p2.Y) / 2);
            SelectBorderColor(Color.R, Color.G, Color.B, Color.A);
            SelectLineThick(Thick);
        }
Exemple #21
0
 private double Scal(NormPoint a, NormPoint b, NormPoint c)
 {
     return(a.X * b.Y - b.X * a.Y - a.X * c.Y + c.X * a.Y + b.X * c.Y - c.X * b.Y);
 }
Exemple #22
0
 public static void SetEnd(NormPoint p) => currentFigure.EndCoord     = p;
Exemple #23
0
 public void Init(NormPoint p1, NormPoint p2)
 {
     BeginCoord = p1;
     EndCoord   = p2;
 }
Exemple #24
0
 public static void SetBegin(NormPoint p) => currentFigure.BeginCoord = p;