public void DrawPeriodic(LocalCS cs, Geometry.Box box, Geometry.Interval interval, Geometry.Unit unit, IPeriodicDrawable drawer, bool fill, bool drawDirs, bool drawDots) { double twoPi = Geometry.FullAngle(unit); float periodf = cs.ConvertDimensionX(twoPi); float box_minf = cs.ConvertX(box.Min[0]); float box_maxf = cs.ConvertX(box.Max[0]); float minf = cs.ConvertX(interval.Min); float maxf = cs.ConvertX(interval.Max); if (maxf >= box_minf && minf <= box_maxf) { drawer.DrawOne(this, 0, fill, drawDirs, drawDots); } // west float minf_i = minf; float maxf_i = maxf; float translationf = 0; while (maxf_i >= box_minf && Util.Assign(ref maxf_i, maxf_i - periodf)) { translationf -= periodf; minf_i -= periodf; //maxf_i -= periodf; // subtracted above if (maxf_i >= box_minf && minf_i <= box_maxf) { drawer.DrawOne(this, translationf, fill, drawDirs, drawDots); } } // east minf_i = minf; maxf_i = maxf; translationf = 0; while (minf_i <= box_maxf && Util.Assign(ref minf_i, minf_i + periodf)) { translationf += periodf; //minf_i += periodf; // added above maxf_i += periodf; if (maxf_i >= box_minf && minf_i <= box_maxf) { drawer.DrawOne(this, translationf, fill, drawDirs, drawDots); } } }
public void DrawPeriodic(LocalCS cs, Geometry.Box box, Geometry.Interval interval, Geometry.Unit unit, IPeriodicDrawable drawer, bool fill, bool drawDirs, bool drawDots) { double pi = Geometry.HalfAngle(unit); float periodf = cs.ConvertDimensionX(2 * pi); float box_minf = cs.ConvertX(box.Min[0]); float box_maxf = cs.ConvertX(box.Max[0]); float minf = cs.ConvertX(interval.Min); float maxf = cs.ConvertX(interval.Max); if (maxf >= box_minf && minf <= box_maxf) { drawer.DrawOne(this, 0, fill, drawDirs, drawDots); } // west float minf_i = minf; float maxf_i = maxf; float translationf = 0; while (maxf_i >= box_minf) { translationf -= periodf; minf_i -= periodf; maxf_i -= periodf; if (maxf_i >= box_minf && minf_i <= box_maxf) { drawer.DrawOne(this, translationf, fill, drawDirs, drawDots); } } // east minf_i = minf; maxf_i = maxf; translationf = 0; while (minf_i <= box_maxf) { translationf += periodf; minf_i += periodf; maxf_i += periodf; if (maxf_i >= box_minf && minf_i <= box_maxf) { drawer.DrawOne(this, translationf, fill, drawDirs, drawDots); } } }
public void DrawPeriodic(IPeriodicDrawable pd, bool closed, bool fill, bool drawDirs, bool drawDots) { if (!pd.Good()) { return; } if (pd.maxf >= pd.box_minf && pd.minf <= pd.box_maxf) { pd.DrawOne(this, 0, closed, fill, drawDirs, drawDots); } // west float minf_i = pd.minf; float maxf_i = pd.maxf; float translationf = 0; while (maxf_i >= pd.box_minf) { translationf -= pd.periodf; minf_i -= pd.periodf; maxf_i -= pd.periodf; if (maxf_i >= pd.box_minf && minf_i <= pd.box_maxf) { pd.DrawOne(this, translationf, closed, fill, drawDirs, drawDots); } } // east minf_i = pd.minf; maxf_i = pd.maxf; translationf = 0; while (minf_i <= pd.box_maxf) { translationf += pd.periodf; minf_i += pd.periodf; maxf_i += pd.periodf; if (maxf_i >= pd.box_minf && minf_i <= pd.box_maxf) { pd.DrawOne(this, translationf, closed, fill, drawDirs, drawDots); } } }