public List <RangeAxis2d> GetExtentsAxes() { if (m_extents == null) { return(null); } if (m_extentsAxes == null) { RangeAxis2d yLines = new RangeAxis2d(m_basis, 0); int minX = m_basis.ToGrid(0, m_extents.Min.X); int maxX = m_basis.ToGrid(0, m_extents.Max.X); for (int x = minX; x <= maxX; ++x) { yLines.Add(x, new Range1d(m_extents.Min.Y, m_extents.Max.Y)); } RangeAxis2d xLines = new RangeAxis2d(m_basis, 1); int minY = m_basis.ToGrid(0, m_extents.Min.Y); int maxY = m_basis.ToGrid(0, m_extents.Max.Y); for (int y = minY; y <= maxY; ++y) { xLines.Add(y, new Range1d(m_extents.Min.X, m_extents.Max.X)); } m_extentsAxes = new List <RangeAxis2d>(); m_extentsAxes.Add(yLines); // Ordinal 0 m_extentsAxes.Add(xLines); // Ordinal 1 } return(m_extentsAxes); }
public static Value FromPoint2d(GridBasis basis, int ordinal, Point2d point, bool snap) { if (ordinal == 0) { int abscissa = basis.ToGrid(ordinal, point.X); if (!snap && !point.X.Compare(basis.FromGrid(ordinal, abscissa))) { return(null); } return(new Value(abscissa, point.Y)); } if (ordinal == 1) { int abscissa = basis.ToGrid(ordinal, point.Y); if (!snap && !point.Y.Compare(basis.FromGrid(ordinal, abscissa))) { return(null); } return(new Value(abscissa, point.X)); } return(null); }
internal void OutputAxis(ref string text, GridBasis basis, int ordinal, RangeAxis2d axis) { string tag = "axis"; OutputHeader(ref text, tag); IndentIn(); foreach (KeyValuePair <int, List <Range1d> > lineData in axis.Lines) { foreach (Range1d range in lineData.Value) { int v0 = basis.ToGrid(ordinal, range.Min); int v1 = basis.ToGrid(ordinal, range.Max); OutputTextLine(ref text, "seg " + EncodeInt(lineData.Key) + " " + EncodeInt(v0) + " " + EncodeInt(v1)); } } IndentOut(); OutputFooter(ref text, tag); }