Regula indicelui de rotație nenul

De la Wikipedia, enciclopedia liberă
Interiorul unei curbe (sus) este umplut în conformitate cu două reguli: regula par–impar (în stânga) și regula indicelui de rotație nenul (dreapta). În fiecare caz este trasată o săgeată (rază) dintr-un punct P spre exteriorul curbei. În cazul în care săgeata intersectează curba de două ori, un număr par, se consideră că P este „în exteriorul” curbei. După regula indicelui de rotație nenul, raza este intersectată în sensul acelor de ceasornic de două ori, fiecare intersecție contribuind cu −1 la scorul indicelui de rotație (a numărului de înfășurări); deoarece totalul, −2, nu este zero, se trage concluzia că P se află „în interiorul” curbei.

În grafica digitală bidimensională regula indicelui de rotație nenul este un mijloc de a determina dacă un anumit punct este situat în interiorul unei regiuni mărginite de o curbă închisă. Spre deosebire de regula par–impar similară, se bazează pe cunoașterea direcției conturului pentru fiecare parte a curbei.

Descriere[modificare | modificare sursă]

Pentru o curbă dată, C și un punct dat, P: se trasează o rază (o semidreaptă) care pornește din P în orice direcție, spre infinit. Se numără toate intersecțiile lui C cu această rază. Se determină indicele de rotație⁠(d) după cum urmează: pentru fiecare intersecție în sensul acelor de ceasornic (văzută din P, curba trece prin rază de la stânga spre dreapta) din indice se scade 1; pentru fiecare intersecție în sens invers acelor de ceasornic (văzută din P, curba trece prin rază de la dreapta spre stânga) la indice se adună 1. Dacă în final indicele este zero, P este în exteriorul lui C; altfel, este în interior.

Indicele de rotație este efectiv o contorizare a câte revoluții complete în sens invers acelor de ceasornic („înfășurări”) face curba în jurul lui P fără numărul de revoluții efectuate înapoi. (Dacă P ar fi un cui iar C ar fi o buclă de sfoară, ținând de un capăt al sforii și trăgând de celălalt lateral față de cui, fie sfoara se va elibera, fie se va observa că este înfășurată de câteva ori în jurul cuiului.)

Unele implementări folosesc o schemă a semnelor inversă: măresc indicele la înfășurări în sensul acelor de ceasornic, astfel încât traversările în sensul acelor de ceasornic primesc +1, iar traversările în sens invers acelor de ceasornic −1. Rezultatul este același.

O definiție formală a indicelui de rotație al punctului P în raport cu curba C (presupunând că P nu se află pe curbă) este următoarea:

„Fie punctul Q care se deplasează o dată în jurul lui C. Punctul final al unui vector de la P la Q, după normalizare, se deplasează de-a lungul cercului unitate centrat în P. Dacă se imaginează traseul acestui punct final ca o bandă elastică și se lasă banda să se contracte, va sfârși prin a înfășura cercul de câteva ori. Indicele de rotație este numărul de înfășurări (pentru înfășurări în sensul acelor de ceasornic, indicele de rotație este negativ).[1]

Atunci când desenează poligoane, standardul pentru grafică digitală vectorială SVG utilizează implicit regula indicelui de rotație nenul.[2]

Note[modificare | modificare sursă]

  1. ^ en James D. Foley, Andries Van Dam, Steven K. Feiner & John F. Hughes (1996) Computer Graphics: Principles and Practice p. 965. Addison-Wesley. ISBN: 9780201848403
  2. ^ en 13.4.2. Winding rule: the ‘fill-rule’ property, w3c.org, retrieved 2019 03 28

Vezi și[modificare | modificare sursă]

Legături externe[modificare | modificare sursă]