Siker. Ezzel a szóval foglalhatnám össze a ténykedésemet.
Sikerült végre kiszednem a falakat, és megállapítani, hogy adott fal melyik szobához is tartozik. Ennek előfeltétele, hogy tudja azt, hogy az alaprajz alapján melyik vonalak tartoznak hozzá.
Alkottam egy algoritmust, ami elvileg eléggé hatékony (bár egy egészen picit pontatlan). Minden bizonnyal van jobb technika is, de szerintem ez volt a legegyszerűbb. Sajnos egyelőre csak konvex szobákat tud feldolgozni, de remélem ez elég lesz (most hirtelen).
A megoldás a következő volt: fogtam, összeszedegettem a vonalakat, a szobához. Majd, amikor megvoltak, a vonalak végpontjaiból, és egy egészen kevés offsetből (biztonsági tartalékképpen) kiszámoltam egy BoundingBox-ot (ami voltaképpen egy téglatest, semmi egyéb, ütközésérzékeléshez használatos).
Majd, amikor egy lakásban lévő falakat feldolgoztam, megnéztem, melyek azok a falak, amik valamelyik szoba boundingbox-jába esik. Ha talált ilyet, akkor az a fal megkapta az adott szoba számát. Ha nem talált ilyet, akkor -1, jelezve, hogy az a fal a ház külső pontja (vagyis végre a ház külseje is külön textúrázható, bár ez mellékhatás volt csak :D).
És ezzel végülis a végére is értünk. Megvan a lakás, megvannak a szobák, remekül klaffol minden, a lehető legkevesebb ciklussal. Ezzel a lakás inicializálása, feltöltése, 3D generálása 100ms idő (jó, tudom, sok, de teszteltem: az inicializálás és adatfeltöltés tovább tart mint az összes többi művelet, tehát több ház sem kerül sokkal több időbe, mint ez az egy).
És zárásképpen a kép:
(A kék téglatest a BoundingBox).