public double DistanceTo(RGPoint pt) { var x = R - pt.R; var y = G - pt.G; var dist = Math.Sqrt(x * x + y * y); return(dist); }
private void Redraw() { var bmp = Recreate(); var fr = _stack.Peek(); var r = fr.Rectangle; var w = pictureBox.Width; var h = pictureBox.Height; var onepxw = r.Width / w; var onepxh = r.Height / h; for (var x = r.X; x <= r.X + r.Width; x += onepxw) { for (var y = r.Y; y <= r.Y + r.Height; y += onepxh) { FillPixel(bmp, x, y); } } var gr = Graphics.FromImage(pictureBox.Image); DrawPoint(new CPoint(1, 0, 0), Config.White); DrawPoint(new CPoint(0, 0, 1), Config.Black); var sqrtN = Math.Sqrt(RgSettings.N); var nAlphaMinus1 = Math.Pow(RgSettings.N, RgSettings.Alpha - 1); var nAlphaMinus3Div2 = Math.Pow(RgSettings.N, RgSettings.Alpha - 1.5); var nAlphaMinus1Div2 = Math.Pow(RgSettings.N, RgSettings.Alpha - 0.5); var rPlus = (sqrtN - nAlphaMinus1) / (1 - sqrtN); var rMinus = (-sqrtN - nAlphaMinus1) / (1 + sqrtN); var gPlus = RgSettings.N * ((1 - nAlphaMinus3Div2) / (1 - nAlphaMinus1Div2)); var gMinus = RgSettings.N * ((1 + nAlphaMinus3Div2) / (1 + nAlphaMinus1Div2)); var rgPlus = new RGPoint(rPlus, gPlus); var rgMinus = new RGPoint(rMinus, gMinus); var cPlus = rgPlus.CDirect; var cMinus = rgMinus.CDirect; DrawCross(cPlus, Config.White); DrawCross(cMinus, Config.Black); var sing = new CPoint(1, RgSettings.Lambda, RgSettings.Lambda2); DrawXCross(sing, Config.White); gr.Save(); fr.Bitmap = new Bitmap(bmp); DrawPoint(); }
public static IEnumerable <RGPoint> DirectIterations(RGPoint start, int count) { yield return(start); var rg = start; for (var i = 1; i <= count; i++) { var r = rg.DirectIterated(); yield return(r); rg = r; } }
public RGPoint DirectTrackEndPoint(RGPoint crit, CProjection projection, out int cnt) { var pt = this; const double max = double.MaxValue; var d = max; var i = 0; while (d > Config.Acc && i < Config.Count) { pt.IterateDirect(); d = pt.DistanceTo(crit); i++; } cnt = i; return(pt); }
public IEnumerable <RGPoint> ReverseTrack(RGPoint crit) { var pt = this; const double max = double.MaxValue; var d = max; var i = 0; var res = new List <RGPoint>(); while (d > Config.Acc && i < Config.Count) { res.Add(pt); pt = pt.ReverseIterated(); d = pt.DistanceTo(crit); i++; } return(res); }
public static Color GetColorDirect(RGPoint pt, CProjection projection) { var rp = pt; int cnt; var end = pt.DirectTrackEndPoint(Config.ReserverInterestedPointRg, projection, out cnt); if (cnt >= Config.Count) { return(Config.Black); } var last = end; var p = Config.ReserverInterestedPointRg; var clr = rp.G < 0 ? (last.R < p.R ? Config.Yellow : Config.Green) : (last.R < p.R ? Config.Red : Config.Blue); var resClr = clr; return(resClr); }
public RGPoint(RGPoint p) : this(p.R, p.G) { }