public bool Test_l_l(LinkList <LINE> ll, PO p0) { //对边链进行检测,以发现不合理的边链,合理 true,不合理 false util u1 = new util(); Node <LINE> ln = ll.Head; float ag0, ag1, ag2; int num = 0; int num1 = 0; ag0 = u1.CalAgl(p0, ln.Data.getanotherpo(p0)); ag2 = ag0; ln = ln.Next; while (ln != null) { ag1 = u1.CalAgl(p0, ln.Data.getanotherpo(p0)); if (ag1 > ag0) { ag0 = ag1; } else { ag0 = ag1; num++; } if (ag1 < ag2) { ag2 = ag1; } else { ag2 = ag1; num1++; } ln = ln.Next; } if (num >= 2 && num1 >= 2) { return(false); } return(true); }
public override void Generate_eadge() { util u1 = new util(); float yita, rx; int id, isita; PO ptmp, pc; PO pk; edge_pl.Clear(); 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 * 1.2f) / ri, 1.0 / (nr - 1)); rx = (float)(ri * System.Math.Pow(yita, nr - 1)); 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)); edge_pl.Insert(ptmp); } //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); // pk = u1.po_vertical(ptmp, l0.p1, l0.p2, rx); // edge_pl.Insert(pk); //} 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)); edge_pl.Insert(ptmp); } //for (id = nd-1; id <=0; 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.p2, l0.p1, rx); // edge_pl.Insert(pk); // } }
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); } } }