예제 #1
0
        public void Create_fault(LINE l0)
        {
            fault2d f = new fault2d(l0);

            PAINT.model_special_pl.Insert(l0.p1);
            PAINT.model_special_pl.Insert(l0.p2);
            f.GetOGL(PAINT);
            f.Set_ge_pl(this.Get_ge_pl());
            f.Generate_eadge();
            model_l.Insert(f);
        }
예제 #2
0
        private void DE_LL(fault2d f1, fault2d f2)
        {
            util u1 = new util();

            if (!Is_Conflict(f1, f2))
            {
                return;
            }
            else
            {
                CD_po_together(f1, f2);
            }
        }
예제 #3
0
        private void CD_po_together(fault2d f1, fault2d f2)
        {
            util u1 = new util();
            PO   f1s, f1d, f2s, f2d, ptm, p1t, p2t, p3t;

            f1s = f1.l0.p1;
            f1d = f1.l0.p2;
            f2s = f2.l0.p1;
            f2d = f2.l0.p2;
            //判断f1、f2的状态
            #region judge topo
            if (f1s.Me_to_po_length(f2d) == 0)
            {
                ptm = f2d;
                f2d = f2s;
                f2s = ptm;
            }
            //u1.InFile(u1.infopath, "ihere11");
            if (f1d.Me_to_po_length(f2s) == 0)
            {
                ptm = f1d;
                f1d = f1s;
                f1s = ptm;
            }
            //u1.InFile(u1.infopath, "ihere12");
            if (f1d.Me_to_po_length(f2d) == 0)
            {
                ptm = f1d;
                f1d = f1s;
                f1s = ptm;
                ptm = f2d;
                f2d = f2s;
                f2s = ptm;
            }
            //u1.InFile(u1.infopath, "ihere13");
            #endregion judge topo
            p1t     = u1.Po_vec_f(f1s, u1.cal_vec(f1s, f1d).unitVector(), 4);
            p2t     = u1.Po_vec_f(f2s, u1.cal_vec(f2s, f2d).unitVector(), 4);
            p3t     = new PO((p1t.x + p2t.x) / 2, (p1t.y + p2t.y) / 2);
            p1t.key = 1;
            p2t.key = 1;
            p3t.key = 1;
            PAINT.ll_tag.Insert(new LINE(f1s, p3t));
            PAINT.pl_tag.Insert(p1t);
            PAINT.pl_tag.Insert(p2t);
            PAINT.pl_tag.Insert(p3t);
            Cal_new_edge_po_insert(f1, f1s, p3t);
            Cal_new_edge_po_insert(f2, f2s, p3t);
        }
예제 #4
0
        private void Create_boundary_model()
        {
            util      u1  = new util();
            Node <PO> pnt = plane.edge_pl.Head;
            fault2d   f;

            while (pnt.Next != null)
            {
                f          = new fault2d(new LINE(pnt.Data, pnt.Next.Data));
                f.boundary = true;
                f.GetOGL(this.PAINT);
                f.Set_ge_pl(this.ge_p_l);
                f.Generate_eadge();
                model_l.Insert(f);
                pnt = pnt.Next;
            }
            f          = new fault2d(new LINE(pnt.Data, plane.edge_pl.Head.Data));
            f.boundary = true;
            f.GetOGL(this.PAINT);
            f.Set_ge_pl(this.ge_p_l);
            f.Generate_eadge();
            model_l.Insert(f);
        }