Beispiel #1
0
        public override void GenerateNetPo()
        {
            int   sitan;
            float PI = 3.1415926f;
            util  u1 = new util();

            sitan = 10;
            PO vec, vec2, pc;//沿井身

            vec  = new PO(0, 0, 1);
            vec2 = new PO();
            pi   = new PO();
            pj   = new PO();
            for (int i = 5; i < 20; i = i + 4)
            {
                for (int j = 0; j < sitan; j++)
                {
                    vec2.x = (float)System.Math.Cos(2 * PI * j / sitan);
                    vec2.y = (float)System.Math.Sin(2 * PI * j / sitan);
                    vec2.z = 0;
                    pc     = u1.Po_vec_f(u1.vec_f(vec, 0), vec2, i);
                    if (i == 17 && j == 1)
                    {
                        pi = pc;
                    }
                    if (i == 17 && j == 2)
                    {
                        pj = pc;
                    }
                    PAINT.GetPL(pc);
                    ge_p_l.Insert(pc);
                }
            }
            //PAINT.GetLL(new LINE(pi,pj));
        }
Beispiel #2
0
        public override void GenerateNetPo()
        {
            float L, li, d, sof, distance1, distance2;     //sof是初始偏差值
            PO    tmp, po;

            PAINT.GetLL(l0);
            util u1 = new util();

            show_edge_l();
            L   = l0.Length();
            sof = (float)((L - System.Math.Floor(L / dx) * dx) / 2);
            for (int i = 1; i <= System.Math.Floor(L / dx) - 1; i++)
            {
                li        = (float)(sof + i * dx);
                tmp       = new PO();
                tmp.x     = (l0.p1.x * (L - li) + l0.p2.x * li) / L;
                tmp.y     = (l0.p1.y * (L - li) + l0.p2.y * li) / L;
                distance1 = Cal_distance_po_edge(tmp, u1.po_vertical(tmp, l0.p1, l0.p2, dy));
                distance2 = Cal_distance_po_edge(tmp, u1.po_vertical(tmp, l0.p2, l0.p1, dy));
                if (distance1 > distance2)
                {
                    distance1 = distance2;
                }
                po = u1.po_vertical(tmp, l0.p1, l0.p2, distance1 * 1 / 2);
                ge_p_l.Insert(po);
                PAINT.GetPL(po);
                po = u1.po_vertical(tmp, l0.p2, l0.p1, distance1 * 1 / 2);
                ge_p_l.Insert(po);
                PAINT.GetPL(po);
            }
        }
Beispiel #3
0
        public override void GenerateNetPo()
        {
            PAINT.model_special_pl.Insert(center);
            show_edge_l();
            float yita, rx;
            int   ix, isita;
            PO    ptmp;

            PAINT.GetPL(center);
            ge_p_l.Insert(center);
            yita = (float)System.Math.Pow(ro / ri, 1.0 / (nr - 1));
            rx   = ri / yita;
            for (ix = 0; ix < nr; ix++)
            {
                rx = rx * yita;
                for (isita = 0; isita < nsta; isita++)
                {
                    ptmp   = new PO();
                    ptmp.x = (float)(center.x + rx * System.Math.Cos(2 * 3.1415926 * isita / nsta));
                    ptmp.y = (float)(center.y + rx * System.Math.Sin(2 * 3.1415926 * isita / nsta));
                    if (ix == 0 && initial_pl != null)
                    {
                        initial_pl.Insert(ptmp);
                    }
                    if (Is_po_inMe(ptmp))
                    {
                        PAINT.GetPL(ptmp);
                        ge_p_l.Insert(ptmp);
                    }
                }
            }
        }
Beispiel #4
0
        public override void GenerateNetPo()
        {
            util u1 = new util();

            show_edge_l();
            float yita, rx;
            int   ix, id, isita;
            PO    ptmp, pc;
            PO    pk;

            pc   = new PO();
            pc.x = (l0.p1.x + l0.p2.x) / 2;
            pc.y = (l0.p1.y + l0.p2.y) / 2;
            yita = (float)System.Math.Pow(ro / ri, 1.0 / (nr - 1));
            for (id = 0; id <= nd - 1; id++)
            {
                ptmp   = new PO();
                ptmp.x = ((nd - 1 - id) * l0.p1.x + id * l0.p2.x) / (nd - 1);
                ptmp.y = ((nd - 1 - id) * l0.p1.y + id * l0.p2.y) / (nd - 1);
                ge_p_l.Insert(ptmp);
                PAINT.GetPL(ptmp);
            }
            for (ix = 0; ix < nr; ix++)
            {
                rx = (float)(ri * System.Math.Pow(yita, ix));
                for (id = 1; id < nd - 1; id++)
                {
                    ptmp   = new PO();
                    ptmp.x = ((nd - 1 - id) * l0.p1.x + id * l0.p2.x) / (nd - 1);
                    ptmp.y = ((nd - 1 - id) * l0.p1.y + id * l0.p2.y) / (nd - 1);
                    pk     = u1.po_vertical(ptmp, l0.p1, l0.p2, rx);
                    ge_p_l.Insert(pk);
                    PAINT.GetPL(pk);
                    pk = u1.po_vertical(ptmp, l0.p2, l0.p1, rx);
                    ge_p_l.Insert(pk);
                    PAINT.GetPL(pk);
                }
                for (isita = 0; isita <= nsta / 2; isita++)
                {
                    ptmp   = new PO();
                    ptmp.x = (float)(l0.p1.x + rx * System.Math.Cos(2 * 3.1415926 * isita / nsta + u1.CalAgl(l0.p1, l0.p2) + 3.1415926 / 2));
                    ptmp.y = (float)(l0.p1.y + rx * System.Math.Sin(2 * 3.1415926 * isita / nsta + u1.CalAgl(l0.p1, l0.p2) + 3.1415926 / 2));
                    ge_p_l.Insert(ptmp);
                    PAINT.GetPL(ptmp);
                }
                for (isita = 0; isita <= nsta / 2; isita++)
                {
                    ptmp   = new PO();
                    ptmp.x = (float)(l0.p2.x + rx * System.Math.Cos(2 * 3.1415926 * isita / nsta + u1.CalAgl(l0.p1, l0.p2) + 3.1415926 * 1.5f));
                    ptmp.y = (float)(l0.p2.y + rx * System.Math.Sin(2 * 3.1415926 * isita / nsta + u1.CalAgl(l0.p1, l0.p2) + 3.1415926 * 1.5f));
                    ge_p_l.Insert(ptmp);
                    PAINT.GetPL(ptmp);
                }
            }
        }
Beispiel #5
0
        public override void GenerateNetPo()
        {
            util  u1 = new util();
            float x, y;
            PO    tmp1;

            for (x = pmin.x; x < pmax.x; x = x + dx)
            {
                for (y = pmin.y; y < pmax.y; y = y + dy)
                {
                    tmp1   = new PO();
                    tmp1.x = x;
                    tmp1.y = y;
                    if (Is_po_inMe(tmp1) && !Is_po_inallmodel(tmp1))
                    {//如果tmp在plane的边界内,且不在某个模块内
                        ge_p_l.Insert(tmp1);
                        PAINT.GetPL(tmp1);
                    }
                }
            }
        }