Einzelnen Beitrag anzeigen

Benutzerbild von christian.noeding
christian.noeding

Registriert seit: 26. Mai 2005
Ort: Knw.-Remsfeld
119 Beiträge
 
Delphi XE2 Professional
 
#1

Berechnung von baryzentrischen Koordinaten bzw. 3D Ebene?

  Alt 14. Nov 2007, 11:09
Hallo Leute,


ich sitze an einem kniffligen Problem und habe bereits einen Post in einem Matheforum hinterlegt, jedoch konnte man mir dort nur einen kleinen Tipp geben. Vielleicht ist hier ja jemand, der bei einem 3D-Spiel schonmal mit dem folgenden Problem konfrontiert wurde. Also:

Der Hintergrund:
Seit etlichen Monaten beschäftige ich mich mit dem Thema Beleuchtungstechnik und programmiere derzeit an einer Open-Source-Lichtsteuersoftware (http://www.pcdimmer.de) und arbeite zudem an einer weiteren Freeware-Software (http://www.dmxcontrol.de) mit. Nun gibt es in der Beleuchtungstechnik ja Bewegtscheinwerfer, sog. "Scanner" oder "Moving-Heads", die einen Lichtstrahl mit Hilfe von Spiegeln oder auf andere Weise ablenken können. Dies ist nach Oben/Unten und Rechts/Links möglich.

Die Scanner können über zwei Signale zwischen 0 und 255 angesteuert werden. Wobei 128 die Mittelstellung bedeutet (ist aber für das Folgende uninteressant)

Das Problem:
Nehmen wir mal an, ich habe zwei Scanner an einer Bühne oben Links und oben Rechts symmetrisch aufgehängt. Möchte ich nun beide Scanner auf den gleichen Punkt einstellen, müssen beide ja verschieden Rechts-/Links-Positionen einnehmen. Kann man auf einfache Weise dies in eine Formel packen, sodass ich eine automatische Ausgleichsfunktion in mein Programm integrieren kann? Ich habe selber schon einmal versucht, über Formeln für Ebenenberechnung auf eine Lösung zu kommen, aber entweder mein Leistungskurswissen ist dermaßen eingerostet, oder es ist wirklich etwas komplexer

Warum das ganze?:
Man hat bei der Steuerung z.B. einen Joystick, mit dem man den Schnittpunkt beider Scanner steuern möchte. Somit wäre innerhalb der Bewegungsmöglichkeiten beider Scanner ein heller Punkt und symmetrische Lichtkegelfahrten möglich. Wie gesagt, ich verdiehne mit dem Programm kein Geld, sondern biete es Open-Source an. Ich hoffe, dass mir jemand ein paar Tipps geben kann - diese Funktion besitzen nämlich sonst nur sehr hochwertige Programme.


Mein bisheriger Lösungsansatz:
Man hat bei dem Scanner ein normales X-/Y-Koordinatensystem (kartesisch). X- und Y- Achse haben je einen Wert von 0 bis 255. Nun wollte ich mit fünf (oder mehr) Kalibrierpunkten auf der Bühne mir ein virtuelles Koordinatensystem für jeden einzelnen Scanner einrichten und anhand dieser Koordinatensysteme die Korrekturwerte für jeden Scanner einzeln berechnen (bzw. wenn ein Scanner der "Master"-Scanner wäre für den anderen die Korrekturwerte). Leider bin ich nicht weiter gekommen, da mir der nächste Gedanke fehlt.


Zur Verdeutlichung eine kleine Grafik:

http://home.arcor.de/christian.noedi...nerproblem.gif



Im Grunde benötige ich einfach eine Funktion, die mir mein Koordinatensystem in ein anderes, von vier Punkten aufgespanntes Koordinatensystem transformiert (siehe Grafik). somit könnte ich gleichzeitig die Bewegungsmöglichkeiten einschränken und die Positionsunterschiede kompensieren.

http://home.arcor.de/christian.noedi...erproblem2.gif



Im Matheforum kam nun der Hinweis, diese Problematik mit Transformation der Punktkoordinaten in baryzentrische Koordinaten anzugehen. Hat hier vielleicht schon jemand mit Delphi (oder mit C, Java, egal) z.B. bei einem 3D-Spiel mit sowas gearbeitet und kann mir eventuell Tipps geben? Ich betone nochmal: das ganze ist OpenSource, ich bekomme dafür kein Geld. Allerdings lässt sich über eine namentliche Erwähnung in der Software sprechen, wenn jemand einen brauchbaren Tipp spendieren kann *g*


vielen vielen Dank,
Christian
Christian Nöding
  Mit Zitat antworten Zitat