Einzelnen Beitrag anzeigen

Benutzerbild von cumi
cumi

Registriert seit: 27. Jun 2004
Ort: Schweiz
27 Beiträge
 
#1

Polygon berechnen

  Alt 16. Nov 2005, 14:33
Sali Zeme

Ich hab da wiedermal ein intressantes Problem (oder hoff ich zumindest).

Also ich möchte auf einem TBitMap32 (<--- ohne Canvas!!!) ein Polygon berechnen. Und dann jeden Punkt mit einer verschiedenen Transparenz einfärben, welche mit einwenig Vektorgeometie ermittelt wird.

Ich muss also für jeden Punkt auf meinem TBitMap32, welches im Polygon liegt ein paar Berechnungen druchführen und diesen dann färben.

Das Polygon kann für den Anfang mal konvex sein. Und wenns dann konkav wird zerleg ich es falls notwenig einfach in Dreiecke.

Mir sind dazu bis jetzt zwei Varianten eingefallen:
1. Ich habe eine Formal hergeleitet (über das Vektorprodukt) mit welcher ich überprüfen kann ob der gesuchte Punkt inerhalb oder ausserhalb des Polygons liegt. Dies dauert jedoch einwenig und ich muss es für jeden Punkt ausrechnen. (also eigentlich reicht es ja bei jeder Zeile von links den ersten und von rechts den letzten zu finden und dann sind die dazwischen (weil konvex) auch drinn)
2. Ich berechne mit Vektorgeometrie der erste und leste Punkt jeder Zeile uns dann sind alle Punkte dawischen auch im Polygon (weil konvex).

Diese Varianten sind aber leider ziemlich mühsam zum implementieren und erstnoch langsam.

Hatt jemand eine bessere Idee? Welche ev. schon implementiert ist (Sprachen: Delphi, C++, Java oder so)?

Vielen Dank für eure Hilfe!

Grüsse cumi
  Mit Zitat antworten Zitat