コード例 #1
0
        private List <RegionQuadtree <T> > getAllWhoShareEdge(QuadDirection direction, QuadType type)
        {
            QuadDirection[] dir;
            var             op = QDO.OpSide(direction);

            if ((int)direction % 2 == 0)
            {
                dir = new QuadDirection[] { QDO.Quad(op, QDO.CSide(op)), QDO.Quad(op, QDO.CCSide(op)) };
            }
            else
            {
                dir = new QuadDirection[] { QDO.OpSide(op) };
            }

            if (type == QuadType.Grey)
            {
                throw new ArgumentException("Grey isn't allowed!");
            }

            var share = new List <RegionQuadtree <T> >();

            getAllWhoShareEdgeInternal(type, this, share, dir);

            return(share);
        }
        public QuadTransformation(IImageProvider source, Size size, QuadDirection direction, EdgePoints edgePoints)
            : base(source)
        {
            Direction = direction;
            Size = size;

            EdgePoints = edgePoints;
        }
コード例 #3
0
        private static RegionQuadtree <T> soni(RegionQuadtree <T> p, QuadDirection q)
        {
            if (p != null && p.Type == QuadType.Grey)
            {
                return(p[q]);
            }

            return(p);
        }
コード例 #4
0
ファイル: QuadTree.cs プロジェクト: CoderGirl42/Azmyth
            public QuadNode this[QuadDirection direction]
            {
                get
                {
                    switch (direction)
                    {
                    case QuadDirection.NW:
                        return(_nodes[0]);

                    case QuadDirection.NE:
                        return(_nodes[1]);

                    case QuadDirection.SW:
                        return(_nodes[2]);

                    case QuadDirection.SE:
                        return(_nodes[3]);

                    default:
                        return(null);
                    }
                }
                set
                {
                    switch (direction)
                    {
                    case QuadDirection.NW:
                        _nodes[0] = value;
                        break;

                    case QuadDirection.NE:
                        _nodes[1] = value;
                        break;

                    case QuadDirection.SW:
                        _nodes[2] = value;
                        break;

                    case QuadDirection.SE:
                        _nodes[3] = value;
                        break;
                    }
                    if (value != null)
                    {
                        value.Parent = this;
                    }
                }
            }
コード例 #5
0
        private RegionQuadtree <T> this[QuadDirection d]
        {
            get
            {
                switch (d)
                {
                case QuadDirection.NorthWest:
                    return(quads[0]);

                case QuadDirection.NorthEast:
                    return(quads[1]);

                case QuadDirection.SouthEast:
                    return(quads[2]);

                case QuadDirection.SouthWest:
                    return(quads[3]);

                default:
                    throw new ArgumentException("Not valid quad direction");
                }
            }
            set
            {
                switch (d)
                {
                case QuadDirection.NorthWest:
                    quads[0] = value;
                    break;

                case QuadDirection.NorthEast:
                    quads[1] = value;
                    break;

                case QuadDirection.SouthEast:
                    quads[2] = value;
                    break;

                case QuadDirection.SouthWest:
                    quads[3] = value;
                    break;

                default:
                    throw new ArgumentException("Not valid quad direction");
                }
            }
        }
コード例 #6
0
ファイル: QuadDirection.cs プロジェクト: isurakka/quadtree
        public static QuadDirection Quad(QuadDirection a, QuadDirection b)
        {
            QuadDirection max;
            QuadDirection min;

            if (a > b)
            {
                max = a;
                min = b;
            }
            else
            {
                max = b;
                min = a;
            }

            switch (min)
            {
            case QuadDirection.West:
                if (max == QuadDirection.North)
                {
                    return(QuadDirection.NorthWest);
                }
                else
                {
                    return(QuadDirection.SouthWest);
                }

            case QuadDirection.North:
                return(QuadDirection.NorthEast);

            case QuadDirection.East:
                return(QuadDirection.SouthEast);

            default:
                throw new ArgumentException();
            }
        }
コード例 #7
0
ファイル: QuadDirection.cs プロジェクト: isurakka/quadtree
 public static QuadDirection CCSide(QuadDirection a)
 {
     return(ccside[(int)a]);
 }
コード例 #8
0
ファイル: QuadDirection.cs プロジェクト: isurakka/quadtree
 public static QuadDirection OpSide(QuadDirection a)
 {
     return(opside[(int)a]);
 }