using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Figury { public struct Punkt { public double x; public double y; public Punkt(double x, double y) { this.x = x; this.y = y; } public void Przesuń(double dx, double dy) { x += dx; y += dy; } public double OdległośćOdPunktu(Punkt x0) { return Math.Sqrt((x0.x - x) * (x0.x - x) + (x0.y - y) * (x0.y - y)); } public void Obróć(Punkt x0, double kąt) { double długość = OdległośćOdPunktu(x0); if (długość == 0.0) return; double dy = y- x0.y; double dx = x -x0.x; double kątWzględemOX; if (dx == 0) kątWzględemOX = Math.Sign(dy)*0.5*Math.PI; else kątWzględemOX = Math.Atan(dy / dx) ; if (dx < 0 ) kątWzględemOX += Math.Sign(dy)*Math.PI; x = x0.x + długość * Math.Cos(kąt+kątWzględemOX); y = x0.y + długość * Math.Sin(kąt+kątWzględemOX); } public override string ToString() { return "(" + x + " " + y + ")"; } } }