public RightTriangle() { BeginCoord = new NormPoint(); EndCoord = new NormPoint(); Node3 = new NormPoint(); Node4 = new NormPoint(); }
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); }
public void Init(NormPoint p1, NormPoint p2) { BeginCoord = p1; EndCoord = p2; Node3.UpdateCoord(BeginCoord.X, EndCoord.Y); Node4.UpdateCoord(EndCoord.X, BeginCoord.Y); }
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); }
public Line() { BeginCoord = new NormPoint(); EndCoord = new NormPoint(); BorderColor = System.Drawing.Color.FromArgb(0, 0, 0, 1); LineThick = 1; }
public IsoscelesTriangle() { BeginCoord = new NormPoint(); EndCoord = new NormPoint(); Node3 = new NormPoint(); Node4 = new NormPoint(); Node5 = new NormPoint(); }
public Circle() { BeginCoord = new NormPoint(); EndCoord = new NormPoint(); BorderColor = System.Drawing.Color.Black; C = new NormPoint(); LineThick = 1; }
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); }
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); }
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 }); }
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); }
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); }
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; } ; } }
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 }); }
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); } }
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 }); }
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); } }
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 }); }
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); }
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); }
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); }
public static void SetEnd(NormPoint p) => currentFigure.EndCoord = p;
public void Init(NormPoint p1, NormPoint p2) { BeginCoord = p1; EndCoord = p2; }
public static void SetBegin(NormPoint p) => currentFigure.BeginCoord = p;