Întreg SuprafaţăDiscretă.CreazăMască3()
{
Întreg nIndex = 0;
PentruFiecare(Întreg nSDX = 2; nSDX < nX; nSDX++)
PentruFiecare(Întreg nSDY = 2; nSDY < nY; nSDY++)
{
Dacă(m[nSDX – 1, nSDY] ŞI m[nSDX + 1, nSDY] ŞI m[nSDX, nSDY + 1])
{
PuneLa(nSDX, nSDY, ([nSDX–1, nSDY] + [nSDX + 1, nSDY] + [nSDX, nSDY – 1]) / 3.0);
m.PuneLa(nSDX, nSDY, ADEVĂRAT);
nIndex++;
} //Dacă
Dacă(m[nSDX – 1, nSDY] ŞI m[nSDX + 1, nSDY] ŞI m[nSDX, nSDY – 1])
{
PuneLa(nSDX, nSDY, ([nSDX–1, nSDY] + [nSDX+1, nSDY] + [nSDX, nSDY-1]) / 3.0);
m.PuneLa(nSDX, nSDY, ADEVĂRAT);
nIndex++;
} //Dacă
Dacă(m[nSDX, nSDY – 1] ŞI m[nSDX, nSDY + 1] ŞI m[nSDX + 1, nSDY])
{
PuneLa(nSDX, nSDY, ([nSDX, nSDY-1] + [nSDX, nSDY + 1] + [nSDX+1, nSDY])/3.0);
m.PuneLa(nSDX, nSDY, ADEVĂRAT);
nIndex++;
} //Dacă
Dacă(m[nSDX, nSDY – 1] ŞI m[nSDX, nSDY + 1] ŞI m[nSDX - 1, nSDY])
{
PuneLa(nSDX, nSDY, ([nSDX, nSDY-1] + [nSDX, nSDY+1] + [nSDX-1, nSDY]) / 3.0);
m.PuneLa(nSDX, nSDY, ADEVĂRAT);
nIndex++;
} //Dacă
} //PentruFiecare
Întoarce(nIndex);
} //EndCreazăMască3
Se va opri aici generarea listingului, încercându-se în continuare să se expună doar numele şi destinaţia filtrului respectiv, şi considerându-se implementarea trivială.
Filtrul Întreg CreazăMască4(), folosit la eliminarea punctelor singulare, este cel mai nedistructiv şi foarte utilizat.
Similar cu cele trei filtre expuse aici se definesc trei filtre utilizate pentru asigurarea continuităţii şi crearea curbelor care nu conţin zgomot în algoritmii de export a curbelor echipotenţiale. S-au imaginat trei metode, care au acelaşi nume, dar conţin un parametru de tip real. Se listează în continuare doar Întreg CreazăValoare2(Real rZ).
Dostları ilə paylaş: |