public void ekle_para_cekme(nod yeni) { nod aktif = liste.son; while (aktif.ileri != liste.bitis) { aktif = aktif.ileri; } yeni.ileri = aktif.ileri; aktif.ileri = yeni; liste.size++; islem_toplam_sure += yeni.islem_sure; yeni.anlik_islem_toplam_sure = islem_toplam_sure; yenile(); }
public void ekle_havale(nod yeni) { nod aktif = liste.bas; while (aktif.ileri != liste.orta) { aktif = aktif.ileri; } aktif.ileri = yeni; yeni.ileri = liste.orta; liste.size++; islem_toplam_sure += yeni.islem_sure; yeni.anlik_islem_toplam_sure = islem_toplam_sure; yenile(); }
public void ekle_para_yatirma(nod yeni) { nod aktif = liste.orta; while (aktif.ileri != liste.son) { aktif = aktif.ileri; } aktif.ileri = yeni; yeni.ileri = liste.son; liste.size++; islem_toplam_sure += yeni.islem_sure; yeni.anlik_islem_toplam_sure = islem_toplam_sure; yenile(); }
int in_elem(nod n) { int e; for (e = 0; e < Ne; e++) /* This must search through all elements ?? */ { if (area(n, node[elem[e].i], node[elem[e].j]) >= 0.0 && area(n, node[elem[e].j], node[elem[e].k]) >= 0.0 && area(n, node[elem[e].k], node[elem[e].i]) >= 0.0) { break; } } return(e); }
void bowyer(int n, int spac) { int e, s, swap; //i, nod vor = new nod(); do { swap = 0; for (s = 0; s < Ns; s++) { if (side[s].mark == 0) /* if( !( (node[side[s].c].inserted>1 && node[side[s].d].bound==OFF && side[s].s<(node[side[s].c].F+node[side[s].d].F) ) || * (node[side[s].d].inserted>1 && node[side[s].c].bound==OFF && side[s].s<(node[side[s].c].F+node[side[s].d].F) ) ) ) */ { if (side[s].a == n) { e = side[s].eb; if (e != OFF) { vor.x = elem[e].xv; vor.y = elem[e].yv; if (dist(vor, node[n]) < elem[e].R) { swap_side(s); swap = 1; } } } else if (side[s].b == n) { e = side[s].ea; if (e != OFF) { vor.x = elem[e].xv; vor.y = elem[e].yv; if (dist(vor, node[n]) < elem[e].R) { swap_side(s); swap = 1; } } } } } }while(swap == 1); }
//public void azalt(int a) //{ // nod ilk = liste.bas; // while (ilk != liste.bitis) { // ilk.anlik_islem_toplam_sure -= a; // ilk = ilk.ileri; // } // islem_toplam_sure -= a; //} private void Button4_Click(object sender, EventArgs e) { if (liste.bas.ileri != liste.orta) { //nod yenicik = liste.bas; //while (yenicik.ileri != liste.bitis) { // if (yenicik == liste.bas) // { // yenicik = yenicik.ileri; // }else{ // yenicik.anlik_islem_toplam_sure -= 3; // yenicik = yenicik.ileri; // } //} ////azalt(3); nod aktif = liste.bas; aktif.ileri = aktif.ileri.ileri; } else if (liste.orta.ileri != liste.son) { //nod yenicik = liste.orta; //while (yenicik.ileri != liste.bitis) //{ // if (yenicik == liste.orta) // { // yenicik = yenicik.ileri; // } // else // { // yenicik.anlik_islem_toplam_sure -= 2; // yenicik = yenicik.ileri; // } //} ////azalt(2); nod aktif = liste.orta; aktif.ileri = aktif.ileri.ileri; } else if (liste.son.ileri != liste.bitis) { //nod yenicik = liste.son; //while (yenicik.ileri != liste.bitis) //{ // if (yenicik == liste.son) // { // yenicik = yenicik.ileri; // } // else // { // yenicik.anlik_islem_toplam_sure -= 1; // yenicik = yenicik.ileri; // } //} ////azalt(1); nod aktif = liste.son; aktif.ileri = aktif.ileri.ileri; } //nod aktif = liste.bas.ileri; //if (aktif != liste.orta || aktif != liste.son) { // aktif.ileri = aktif.ileri.ileri; //} else { // if (aktif == liste.orta) {aktif = liste.orta.ileri; } // else if (aktif == liste.son) { aktif = liste.son.ileri; } //} yenile(); }
private void Button3_Click(object sender, EventArgs e) { nod yeni = new nod(textBox3.Text, 1); ekle_para_cekme(yeni); }
private void Button2_Click(object sender, EventArgs e) { nod yeni = new nod(textBox2.Text, 2); ekle_para_yatirma(yeni); }
private void Button1_Click(object sender, EventArgs e) { nod yeni = new nod(textBox1.Text, 3); ekle_havale(yeni); }
int ugly; /* mora li biti globalna ??? */ double area(nod na, nod nb, nod nc) { return(0.5d * (((nb).x - (na).x) * ((nc).y - (na).y) - ((nb).y - (na).y) * ((nc).x - (na).x))); }
void new_node() /*---------------------------------------------------+ | This function is very important. | | It determines the position of the inserted node. | +---------------------------------------------------*/ { int s = OFF, e; int n = 0; float xM, yM, xCa, yCa, p, px, py, q, qx, qy, rhoM, rho_M, d; nod Ca = new nod(); /*-------------------------------------------------------------------------+ | It's obvious that elements which are near the boundary, will come into | | play first. | | | | However, some attention has to be payed for the case when two accepted | | elements surround the ugly one | | | | What if new points falls outside the domain | +-------------------------------------------------------------------------*/ if (elem[elem[ugly].ei].state == D) { s = elem[ugly].si; n = elem[ugly].i; } if (elem[elem[ugly].ej].state == D) { s = elem[ugly].sj; n = elem[ugly].j; } if (elem[elem[ugly].ek].state == D) { s = elem[ugly].sk; n = elem[ugly].k; } if (side[elem[ugly].si].mark > 0) { s = elem[ugly].si; n = elem[ugly].i; } if (side[elem[ugly].sj].mark > 0) { s = elem[ugly].sj; n = elem[ugly].j; } if (side[elem[ugly].sk].mark > 0) { s = elem[ugly].sk; n = elem[ugly].k; } if (s == OFF) { return; } xM = 0.5f * (node[side[s].c].x + node[side[s].d].x); yM = 0.5f * (node[side[s].c].y + node[side[s].d].y); Ca.x = elem[ugly].xv; Ca.y = elem[ugly].yv; p = 0.5f * side[s].s; /* not checked */ qx = Ca.x - xM; qy = Ca.y - yM; q = Mathf.Sqrt(qx * qx + qy * qy); rhoM = 0.577f * 0.5f * (node[side[s].c].F + node[side[s].d].F); rho_M = Mathf.Min(Mathf.Max(rhoM, p), 0.5f * (p * p + q * q) / q); if (rho_M < p) { d = rho_M; } else { d = rho_M + Mathf.Sqrt(rho_M * rho_M - p * p); } /*---------------------------------------------------------------------+ | The following line check can the new point fall outside the domain. | | However, I can't remember how it works, but I believe that it is | | still a weak point of the code, particulary when there are lines | | inside the domain | +---------------------------------------------------------------------*/ if (area(node[side[s].c], node[side[s].d], Ca) * area(node[side[s].c], node[side[s].d], node[n]) > 0.0f) { insert_node(xM + d * qx / q, yM + d * qy / q, ON, OFF, 0, 0, 0, OFF); } /* * else * { * node[n].x = xM - d*qx/q; * node[n].y = yM - d*qy/q; * node[n].mark=6; * for(e=0; e<Ne; e++) * if(elem[e].i==n || elem[e].j==n || elem[e].k==n) * circles(e); * } */ return; }
double dist(nod na, nod nb) { return(Mathf.Sqrt(((nb).x - (na).x) * ((nb).x - (na).x) + ((nb).y - (na).y) * ((nb).y - (na).y))); }