AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Berechnung von baryzentrischen Koordinaten bzw. 3D Ebene?

Berechnung von baryzentrischen Koordinaten bzw. 3D Ebene?

Ein Thema von christian.noeding · begonnen am 14. Nov 2007 · letzter Beitrag vom 15. Nov 2007
Antwort Antwort
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, 10: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
Benutzerbild von christian.noeding
christian.noeding

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

Re: Berechnung von baryzentrischen Koordinaten bzw. 3D Ebene

  Alt 15. Nov 2007, 17:24
Problem gelöst dank einem Matheforum und viel Gooooooglen.

Die Lösung hieß nicht baryzentrisches Koordinatensystem (hat für Dreiecke aber super funktioniert), sondern bilineare Interpolation.


Im Anhang habe ich ein Testprogramm für beide Algorithmen angehängt. Bin sehr zufrieden.



Schönen Abend noch,
Christian
Angehängte Dateien
Dateityp: zip scannersynchronisation_172.zip (183,2 KB, 7x aufgerufen)
Christian Nöding
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz