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);
        }
Esempio n. 2
0
            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);
            }
Esempio n. 3
0
        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);
        }