 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
0oFreako0
Anmeldungsdatum: 17.12.2011 Beiträge: 114
|
Verfasst am: 05.09.2013, 22:11 Titel: Vier 2d Vectoren von innen befüllen? |
|
|
Hi ich probiere mich mal ein bischen im Vector Raum.
ich wollte vier Vectoren positionieren die dann innerlich gefüllt werden.
Ich dachte da mit einem Algo der linien zieht solang bis das innere der vier vectoren befüllt sind auch wenn diese sich diagonal gegenüber
stehen. Zb so:
[list]
|
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 06.09.2013, 07:53 Titel: |
|
|
Ganz so easy ist das nicht. Aber, wenn du dich selbst daran versuchen magst, dann verweise ich hier mal auf den Begriff "Polygon-Fill-Algo" ... damit macht man sowas.
Prinzipiel ist es ansich eigentlich einfach, aber die umsetzung und die x verschiedenen algos die es hierzug gibt haben alle recht kuriose vor und nachteile.
PS: Falls du nen algo in fb brauchst, kann ich dir einen zukommen lassen.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
Dusky_Joe

Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 10.11.2013, 12:42 Titel: |
|
|
Habe vor kurzem selber ein verwandtes Problem bearbeitet. Mein Herangehen in etwa:
(1) Du suchst dir die maximalen/minimalen x/y-Koordinaten, und definierst damit den kartesischen Raum, in dem dein Polygon liegt. In deinem Beispiel wäre das also z. B. v1, und ein Punkt P, der genau unterhalb von V4 auf Höhe von v3 liegt.
(2) Diesen Bereich scannst du Zeilenweise ab. Jedesmal, wenn der "Scan-Cursor" eine deiner Begrenzungslinien schneidet, schaltest du ein Flag zwischen den Werten Wahr und Falsch um. Das Umschalten tritt auch dann ein, wenn du auf einen Punkt triffst, nicht aber, wenn du dich auf derselben Linie fortbewegst (e. g. von V1 nach V2). Startwert ist immer null/falsch.
(3) Überall da, wo dein Flag den Wert Wahr/-1 hatte, setzt du einen Pixel, ansonsten lässt du den Bildschirm/Grafikpuffer wie er ist.
Für (2) brauchst du ein bisschen lineare Algebra, aber das sollte nicht zu schwer sein. Das Herangehen funktioniert für beliebig komplexe Polygone und erlaubt auch sich kreuzende Linien.
Ich hoffe, das kommt für dich nicht allzu spät  _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|