Create() 개인적인 정적인 메소드

private static Create ( ) : Edge
리턴 Edge
예제 #1
0
        /**
         * This is the only way to create a new Edge
         * @param site0
         * @param site1
         * @return
         *
         */
        internal static Edge CreateBisectingEdge(Site site0, Site site1)
        {
            float dx, dy, absdx, absdy;
            float a, b, c;

            dx    = site1.X - site0.X;
            dy    = site1.Y - site0.Y;
            absdx = dx > 0 ? dx : -dx;
            absdy = dy > 0 ? dy : -dy;
            c     = site0.X * dx + site0.Y * dy + (dx * dx + dy * dy) * 0.5f;
            if (absdx > absdy)
            {
                a = 1.0f; b = dy / dx; c /= dx;
            }
            else
            {
                b = 1.0f; a = dx / dy; c /= dy;
            }

            Edge edge = Edge.Create();

            edge.LeftSite  = site0;
            edge.RightSite = site1;
            site0.AddEdge(edge);
            site1.AddEdge(edge);

            edge._leftVertex  = null;
            edge._rightVertex = null;

            edge.a = a; edge.b = b; edge.c = c;
            //trace("createBisectingEdge: a ", edge.a, "b", edge.b, "c", edge.c);

            return(edge);
        }
        /**
         * This is the only way to create a new Edge
         * @param site0
         * @param site1
         * @return
         *
         */
        public static Edge CreateBisectingEdge(Site site0, Site site1)
        {
            double dx, dy, absdx, absdy;
            double a, b, c;

            dx    = site1.x - site0.x;
            dy    = site1.y - site0.y;
            absdx = dx > 0 ? dx : -dx;
            absdy = dy > 0 ? dy : -dy;
            c     = site0.x * dx + site0.y * dy + (dx * dx + dy * dy) * 0.5f;
            if (absdx > absdy)
            {
                a  = 1.0f;
                b  = dy / dx;
                c /= dx;
            }
            else
            {
                b  = 1.0f;
                a  = dx / dy;
                c /= dy;
            }

            Edge edge = Edge.Create();

            edge.leftSite  = site0;
            edge.rightSite = site1;
            site0.AddEdge(edge);
            site1.AddEdge(edge);

            edge._leftVertex  = null;
            edge._rightVertex = null;

            edge.a = a;
            edge.b = b;
            edge.c = c;
            //trace("createBisectingEdge: a ", edge.a, "b", edge.b, "c", edge.c);

            return(edge);
        }
예제 #3
0
        /*
         * This is the only way to create a new Edge
         * @param site0
         * @param site1
         * @return
         */

        public static Edge CreateBisectingEdge(Site s0, Site s1)
        {
            float dx, dy;
            float absdx, absdy;
            float a, b, c;

            dx    = s1.x - s0.x;
            dy    = s1.y - s0.y;
            absdx = dx > 0 ? dx : -dx;
            absdy = dy > 0 ? dy : -dy;
            c     = s0.x * dx + s0.y * dy + (dx * dx + dy * dy) * 0.5f;

            if (absdx > absdy)
            {
                a  = 1;
                b  = dy / dx;
                c /= dx;
            }
            else
            {
                b  = 1;
                a  = dx / dy;
                c /= dy;
            }

            Edge edge = Edge.Create();

            edge.LeftSite  = s0;
            edge.RightSite = s1;
            s0.AddEdge(edge);
            s1.AddEdge(edge);

            edge.a = a;
            edge.b = b;
            edge.c = c;

            return(edge);
        }