Polygoni (tietokonegrafiikka)
Polygoni (engl. polygon) eli monikulmio on kolmiulotteisessa grafiikassa renderöintiin käytettävä monikulmion kaltainen primitiivi. Polygoni määritellään verteksien (kulmapisteiden, kärkien) joukolla. Verteksien välinen jana (särmä) on polygonin reuna (engl. edge) ja polygonin määrittelemä taso (tahko) on sen sivu (engl. face). Polygonimalli on polygonien joukosta koostuva kappale.
Polygoneilla voi olla useita kulmia, mutta renderöintiin nämä voidaan yksinkertaistaa kolmikulmaisiksi: kolmikulmaisen kappaleen kaikki pisteet ovat aina samassa tasossa, jolloin sen koko pinnan alueella on sama normaalivektori. Polygoneilla ei ole syvyyttä (paksuutta), vaan ne ovat kaksiulotteisia tasoja kolmiulotteisessa avaruudessa: kolmiulotteiset kappaleet muodostetaan polygonimalleilla (polygoniverkoilla). Polygonit voivat olla kaksipuoleisia tai vain yksipuoleisia suorituskykysyistä: menetelmällä on helppo poistaa esimerkiksi kuution piiloon jäävä sivu renderöinnistä.
Polygonilla on rajoituksia, joita matemaattisessa määrittelyssä ei ole: renderöinti ei salli polygoneja, joissa ääriviivat leikkaavat toisiaan, jotka ovat koveria tai joissa on reikiä. Tesselaatioalgoritmi voi pilkkoa monimutkaisemmat kappaleet renderöinnissä sallittaviin yksinkertaisiin polygoneihin.
Tyypillisesti polygonit piirretään täytettyinä (sivun sisään jäävälle alueelle piirretään), mutta niin kutsutussa rautalankamallissa vain polygonien ääriviivat (reunat) piirretään.
Polygonin muodostavat verteksit voivat olla käytössä myös rinnakkaisille polygoneille, esimerkiksi kuution kaksi sivua voivat jakaa kaksi verteksiä. Monimutkaisemmissa kappaleissa samoja verteksejä voivat jakaa useammat polygonit. Tästä syystä polygoneja ei yleensä määritellä jokaista erikseen, vaan määritellään verteksit ja mitkä verteksit muodostavat polygonit. Näin tarvittavia funktiokutsuja ja saman tiedon toistamista vähennetään, joka tehostaa käsittelyä sekä vähentää mahdollisia ongelmakohtia.
Lähteet
muokkaa- Woo, Mason & Neider, Jackie & Davis, Tom & Shreiner, Dave: OpenGL Programming Guide. (Third Edition) Addison-Wesley, 1999. ISBN 0201604582.