public override Point Fun(Point p) { var precalcAtanYX = VariationHelper.PreAtanYx(p); var precalcSqrt = VariationHelper.PreSqrt(p); if (Math.Abs(precalcSqrt) <= VariationHelper.SmallDouble) { return(p); } var n2 = W * (VariationHelper.Psi - _holes) * Math.Cos(_petals * precalcAtanYX) / precalcSqrt; var x = n2 * p.X; var y = n2 * p.Y; return(new Point(x, y)); }
public override Point Fun(Point p) { // var x = p.X; // var y = p.Y; // var q = 1.0 / VariationHelper.R(p); // return new Point( // q * (x - y) * (x + y), // q * (2.0 * x * y)); var preSqrt = VariationHelper.PreSqrt(p); var preSinA = VariationHelper.PreSinA(p, preSqrt); var preCosA = VariationHelper.PreCosA(p, preSqrt); return(new Point(W * (preSinA * p.X - preCosA * p.Y), W * (preCosA * p.X + preSinA * p.Y))); }
public override Point Fun(Point p) { // var p1 = P1 * P1; // var r = VariationHelper.R(p); // var t = r - 2.0 * p1 * VariationHelper.Trunc((r + p1) / (2.0 * p1)) + r * (1.0 - p1); // var theta = VariationHelper.Theta(p); // return new Point(t * Math.Sin(theta), t * Math.Cos(theta)); // var y = p.Y; // var dx = P1 * P1 + 1.0E-8; var preSqrt = VariationHelper.PreSqrt(p); if (Math.Abs(_dx) <= VariationHelper.SmallDouble || Math.Abs(preSqrt) <= VariationHelper.SmallDouble) { return(p); } var n2 = W * (2.0 - _dx * ((int)((preSqrt / _dx + 1.0) / 2.0) * 2.0 / preSqrt + 1.0)); return(new Point(n2 * p.X, n2 * p.Y)); }
public override Point Fun(Point p) { // var r = VariationHelper.R(p); // var theta = VariationHelper.Theta(p); // var c2 = C * C; // var q = (r + c2) % (2.0 * c2) - c2 + r * (1.0 - c2); // var dx = q * Math.Cos(theta); // var dy = q * Math.Sin(theta); // return new Point(dx, dy); // var coeff20 = E; // var n2 = coeff20 * coeff20 + 1.0E-300; var preSqrt = VariationHelper.PreSqrt(p); var n3 = preSqrt + _n2 - (int)((preSqrt + _n2) / (2.0 * _n2)) * 2 * _n2 - _n2 + preSqrt * (1.0 - _n2); return(new Point( n3 * VariationHelper.PreCosA(p, preSqrt), n3 * VariationHelper.PreSinA(p, preSqrt) )); }
public override Point Fun(Point p) { // var r = VariationHelper.R(p); // var theta = VariationHelper.Theta(p); // var q = 1.0 / r; // return new Point( // q * (Math.Cos(theta) + Math.Sin(r)), // q * (Math.Sin(theta) - Math.Cos(r)) // ); var preSqrt = VariationHelper.PreSqrt(p); var preSinA = VariationHelper.PreSinA(p, preSqrt); var preCosA = VariationHelper.PreCosA(p, preSqrt); var sin = Math.Sin(preSqrt); var cos = Math.Cos(preSqrt); var n2 = W / preSqrt; return(new Point( (preCosA + sin) * n2, (preSinA - cos) * n2 )); }