Automatikus vonalhúzás megvalósítása vizuális modellekhez

OData támogatás
Konzulens:
Dr. Mezei Gergely
Automatizálási és Alkalmazott Informatikai Tanszék

Napjainkban nagy népszerűségnek örvendenek a grafikus modellezési nyelvek. A grafikus ábrázolásmód sok esetben megkönnyíti, felgyorsítja a munkát, de nagy modellek esetében sok időt igényel a modellelemek esztétikus elrendezése és a köztük lévő kapcsolatok behúzása. Ha a modellező környezet nem ad támogatást a vonalak töréspontjainak automatikus kialakítására, akkor a töréspontok szerkesztése időigényes feladat. Szakdolgozatomban egy tanszéki fejlesztésű grafikus modellezőkörnyezetben valósítottam meg egy automatikus vonalhúzó algoritmust. Az algoritmussal szemben alapvető elvárás volt, hogy a forrás és cél modellelemeket függőleges és vízszintes szakaszok segítségével kösse össze úgy, hogy a vonal ne menjen át egyetlen modellelemen sem. Munkám során ezt megoldottam és további hasznos kiegészítésekkel is bővítettem az algoritmust.

A feladat részeként először megvizsgálom a már létező vonalhúzó módszerek elméleti alapjait, illetve a konkrét modellezőkörnyezet sajátosságait. Ez a lépés alapozta meg a későbbi munkámat.

Második lépésként bemutatom az általam kidolgozott algoritmust, amely egy olyan optimális vonalat húz be két elem közé, mely nem megy át egyik modellelemen sem, illetve csak derékszögben törik meg. Az algoritmus kezdetben akkor tekint egy vonalat optimálisnak, ha a hossza a lehető legkisebb.

A harmadik lépésben továbbfejlesztem az algoritmust, hogy a vonal hossza mellett töréspontok számát is figyelembe vegye. A két minimalizálandó szempont között arányszámmal adhatjuk meg, hogy melyik mennyire fontos. Ezt követően speciális, portokat tartalmazó modellek kezelésére optimalizálom az algoritmust, amely kevesebb erőforrással találja meg az optimális vonalat. A továbbiakban módosítom az algoritmust annak érdekében, hogy be lehessen húzni egy vonalat úgy, hogy nem keresztezi a korábban már behúzott vonalakat. Ez a kiegészítés lehetővé teszi, hogy a modellben található összes vonalat automatikusan el lehessen rendezni.

Végül a dolgozatom utolsó fejezetében bemutatom egy gyakorlati példán keresztül az elkészített algoritmus működését, majd megvizsgálom a kapott eredményeket, illetve megemlítek néhány továbbfejlesztési lehetőséget.

Letölthető fájlok

A témához tartozó fájlokat csak bejelentkezett felhasználók tölthetik le.