Nollasta poikkeava indeksin sääntö

Kaksiulotteisessa tietokonegrafiikassa nollasta poikkeava indeksisääntö tarkoittaa tapaa määrittää, sijaitseeko piste suljetun käyrän sisällä. Toisin kuin samanlainen pariton sääntö , tämä algoritmi luottaa kulkusuunnan tuntemiseen kullekin käyrän osalle.

Tietylle käyrälle C ja tietylle pisteelle P rakennamme säteen (suoran), joka on suunnattu pisteestä P mihin tahansa suuntaan äärettömään. Etsi kaikki C:n leikkauspisteet tämän säteen kanssa. Laskemme pisteen indeksin seuraavasti: mistä tahansa leikkauspisteestä myötäpäivään (käyrä kulkee säteen läpi vasemmalta oikealle katsottuna pisteestä P) vähennä 1, mistä tahansa leikkauspisteestä vastapäivään (käyrä kulkee oikealta vasemmalle , katsottuna pisteestä P) lisää 1. Jos pisteen täysi indeksi on nolla, P on C:n ulkopuolella, muuten piste on sisällä.

Pisteindeksi laskee tehokkaasti, kuinka monta täyttä kierrosta vastapäivään käyrä tekee pisteen P ympärillä. (Jos P olisi naula ja C olisi silmukattu lanka, osan langan vetäminen pois naulasta vetäisi joko koko langan tai lanka kiertyy useita kertoja naulan ympärille.) Jotkin toteutukset laskevat kulkujen lukumäärän myötäpäivään, jolloin myötäpäivään siirtymiset lisäävät 1 ja vastapäivään vähentävät 1. Tulos on sama.

Pisteen P indeksin muodollinen määritelmä käyrän C suhteen (jossa P ei ole käyrällä) on seuraava:

Oletetaan, että piste Q kulkee käyrää C pitkin. Vektorin pää pisteestä P kohtaan Q siirtyy normalisoinnin jälkeen yksikköympyrää pitkin, jonka keskipiste on P. Pisteen indeksi on vektorin pään kierrosten lukumäärä. [yksi]

SVG - tietokonevektorigrafiikassa on ominaisuuksia, joiden avulla voit käyttää nollasta poikkeavaa indeksisääntöä monikulmioiden piirtämisessä. [2]

Katso myös

Muistiinpanot

  1. James D. Foley, Andries Van Dam, Steven K. Feiner ja John F. Hughes. Tietokonegrafiikka: periaatteet ja käytäntö. - Addison-Wesley, 1996. - P. 965. - ISBN 9780201848403 .
  2. SVG FillProperties Arkistoitu 28. lokakuuta 2014 Wayback Machinessa , w3c.org, haettu 2012 12 30

Linkit