Marschande torg

Marching Squares (från  engelska  -  "moving squares") är en algoritm inom datorgrafik som genererar isoliner på ett tvådimensionellt skalärt fält .

Applikation

Algoritmen används för att visualisera isobarerväderkartor och konturlinjer på geografiska kartor. Det är en förenkling av algoritmen för marschkuber för det platta fallet.

Hur det fungerar

Som indata får algoritmen ett vanligt rutnät, vid varje nod vars värde fältet är känt. Utmatningsrutnätet (indikerat i blått i figuren) kan ha en lägre upplösning (i det här fallet går noggrannheten förlorad, men aliasing reduceras). Därefter kontrolleras det för varje nod i utgångsnätet om värdet i det är högre än på isoytan. Alla noder som är högre tilldelas "+", resten - "-". Därefter överväger vi kvadraterna på utmatningsnätet, vars hörn ligger vid de markerade noderna. Totalt finns det 16 olika fall, som, med hänsyn till symmetrier och rotationer, kan reduceras till fyra:

I det fjärde fallet är det omöjligt att entydigt bestämma formen på det isolinska segmentet, så värdet i mitten av kvadraten ses dessutom (om indata tillåter det). Om det är omöjligt att ta reda på värdet i mitten av torget, kan det fattade beslutet påverka anslutningen av isolinen.

Linjär interpolation används för att förbättra kvaliteten på den resulterande isolinen . I det här fallet delar änden av isolinsegmentet på kanten av kvadraten kanten i förhållande till , där  är värdena i ändarna av kanten av kvadraten,  är värdet på isolinen. Faktum är att änden av isolinsegmentet "dras" till änden av kanten, som är närmare den riktiga isolinen.

Länkar