Tema: Q: aibių sankirta (geometrija)
Autorius: ejs
Data: 2013-07-14 20:07:55
Laba protingieji kurmiai,

yra du laisvos formos plotai A ir B. Plotų viduje - "1", išorėje - "0"
Plotai kertasi, t.y. A AND B yra plotas C. Plotus galima skaičiuoti tiek 
matricinėje, tiek vektorinėje formoje. Tiek A, tiek B gali būti sudaryti 
iš atskirų plotelių netaisyklingų daugiakampių plotelių

Reikia surasti vietą stačiakampiams plotams D taip, kad jie arba 
pozicionuotuosi aibėje A NOT B, arba aibeje A AND B.
D plotas yra mažesnis nei plotas A arba B, size(D) - 21..50 x 21..50 px

Skaičiavimas vyksta pagal plotus: D telpa tuomet, jei
size(D)^2 +- tolerancijos == area(A) NOT area(b) , arba
size(D)^2 +- tolerancijos == area(A) AND area(b)

Apsaugos nuo durnų situacijų sudėtos:
  skaičiuojamas tik reikalingas plotas;
  eilutės ir stulpeliai greitai atmetami, jei sum(A(size(D)) < size(D) 
|| sum(B(size(D)) < size(D) .

Dabar padaryta lėėėėėėėtu stulpelių ir eilučių inkrementavimu, 
inkrementuojant 1 jei plotas D netelpa ir inkrementuojant size(D), jei 
plotas telpa. Aišku, lėčiausiai dirba pirmas variantas. Gal yra kokių 
gudrių algoritmų jam paspartinti?

-- 
ejs