Hallo Gemeinde, ich habe eine Kugel aus LED's, also einen LED-Ball (siehe Anhang). Zu Ansteuerung des Ball gibt es von mit eine Software mit der die einzelnen LEDs in Kugelkoordinaten angesteuert werden. Ich möchte gerne auf der Kugeloberfläche einen Kreis abbilden. Kennt vielleicht jemand die Formel, mit der man einen Kreis (Kleinkreis) auf der Kugeloberfläche in Kugelkoordinaten zeichnen kann? Alternativ würde mir auch die Formel für einen Großkreis für einen beliegen Azimutwinkel PHI und Polarwinkel THETA reichen. Prof. Google gibt da nichts her. Bezugspunkt ist immer der Kugelmittelpunkt. Gruß Albundy
Ein wenig Geometrie, ein paar Gleichungen. Was soll Gurgel denn bringen ? Wie man die Gleichung fuer die Kugel mit der Gleichung fuer einen Ebene verbindet und loest ?
Vllt findeste ja ne Formel wenn du bei Google nach Parametrisierung und Kurvenintegral suchst. Dann findeste vllt ne Uniübung mit Lösung zu dem Thema. Ansonsten selber ausrechnen, ich mach das heute Abend aber nicht mehr. (Wir hatten das Thema grade würg)
Du kriegst auf jeden Fall Kreise, wenn du alle Punkte mit konstantem Phi oder konstantem Theta anmalst. Alle möglichen Kreise sind das aber noch nicht... müsste ich jetzt auch rechnen ;)
Falls nicht die Fahrschule die Krönung deiner Bildungslaufbahn gewesen ist, wird dich die Parameterdarstellung eines Punktes auf der Kugeloberfläche hieraus http://de.wikipedia.org/wiki/Kugel kombiniert mit der Parameterdarstellung eines Kreises daraus http://de.wikipedia.org/wiki/Kreis zum Ziel deines Begehrens führen :-)
Einen beliebigen Kreis in einer beliebigen Orientierung auf einer idealen Kugel abzubilden ist leicht. DIe Verdrehung aus der Ausgangslage ist eine Matrix und dann hachelt man einfach Punkte vom Kreisumfang in der Ausgangslage durch die Matrix und kriegt die entsprechenden Abbildungspunkte auf der Kugel. Nur überseht ihr die Diskretisierung durch die vorgegebene Geometrie der LED-Anordnung. Die macht das Problem schwer, wenn die Lösung dann auch noch effizient sein soll. Im Grunde ist es das 3D Analogon zum Problem eine Bitmap zu drehen und zu bestimmen, an welcher Zielposition ein Pixel aus dem Ausgangsbild auftaucht. Und zwar ohne, dass dabei Löcher entstehen (im Grunde muss man rückwärts rechnen: welches Quellpixel wird an einem gegebenen Zielpixel abgebildet und wenn es kein eindeutiges Quellpixel gibt, wird eines aus den 4 benachbarten Pixel interpoliert). Nur dass das ganze hier in 3D stattfindet und die Regelmässigkeit des Rasters nicht gegeben ist. Ich könnte mir vorstellen, dass ein gangbar schneller Weg darin besteht, die Sache anders aufzuziehen: Der abzubildende Kreis liegt ja in einer Ebene. Von dieser Ebene bestimmt man sich die Ebenengleichung und dann rattert man die ganzen Segmentbögen von oben nach unten durch und bestimmt ob die jeweilige LED über oder unter der Ebene liegt. Beim 0-Durchgang durch diese Ebene (Vorzeichenwechsel) schaltet man eine der beiden benachbarten LED ein (je nachdem welche näher an der Ebene liegt). Diese Distanzrechnung ist schnell zu machen (3 Multiplikationen und 4 Additionen) wenn man erst mal die Ebenengleichung hat. Zudem kann man in einer fortgeschrittenen Version des Verfahrens ausnutzen, dass der Schnittpunkt mit der Ebene beim nächsten Segmentbogen sich nicht stark vom Schnittpunkt im zuletzt untersuchten Bogen unterscheiden wird. Das würde zumindest für Großkreise funktionieren. Bei Kleinkreisen kann ein Segmentbogen natürlich mehrere Schnitte haben. Da wirds dann komplizierter.
1) Die Kugeloberfläche wird je nach LED-Verteilung in Teilflächen aufgeteilt. Jede LED ist für die Beleuchtung ihres Teilstückchens "verantwortlich". 2) Berechne die Parameterdarstellung eines Kleinkreises, etwa Polare θ = const. In dem Falle ist der Parameter gerade der Azimut ϕ. 3) Transformiere diesen Kreis an die gewünschte Stelle. Der Ursprungskreis liegt dabei rotationssymmetrisch um den Zenit. Hier kann sich Möbiusisometrien als hilfreich erweisen: http://de.wikipedia.org/wiki/Möbiustransformation#Isometrien 4) Berechne, welche Teilstückchen der so transformierte Kreis schneidet. Die jeweils verantwortliche LED leuchtet. Hinweis: Eine Möbiustrafo M transformiert immer Kreise in Kreise, and zwar auch denn, wenn man ihre Aktion in der komplexen Ebene betrachtet. Dabei werden Geraden als Kreise mit unendlich großem Radius angesehen, die durch den Pol (Unendlich) verlaufen. "Möbius Transformations Revealed is a wonderful video clarifying a deep topic" http://www.ima.umn.edu/~arnold/moebius/index.html In der komplexen Ebene ist das Problem vielleicht besser arithmetisch zugänglich. So werden die LED-Stücke durch solche Stücke solcher Kreise begrenzt. Diese wiederum können vermutlich ohne großen Qualitätsverlust durch Strecken oder Halbgeraden modelliert werden. Kantenstückchen, die auf einem Meridian liegen, werden ohnehin zu Strecken oder Halbgeraden.
Hallo, die Frage ist, ob sich die ganze Rechnerei lohnt - die Kreise werden beschissen aussehen. Dazu kommt noch, dass die abgebildete Kugel um mindestens den Faktor 4 zuwenige LEDs hat, um überhaupt irgendetwas abzubilden. Dazu müsste die Kugeloberfläche dicht mit LEDs besetzt sein (wobei die Anordnung ein Problem für sich darstellt). Aus Grosskreisscheiben kann man so eine Kugel jedoch nicht zusammensetzen, eher schon aus 5- und 6-Ecken wie einen traditioneller Fussball (bzw. Fulleren). Gruss Reinhard
Ich stimme Reinhard zu. Du kannst die Großkreise in beide Richtungen anzeigen, und wahrscheinlich noch die Kreise mit Theta konstant, aber alle anderen werden als Kreis kaum zu erkennen sein. Das Rechnen lohnt sich wohl kaum.
Idee: Wenn Du dich auf einer X-Y Ebene befindest, kannst Du eine Gerade schrittweise zeichnen. x+=dx; y+=dy; Das Verhältnis dy/dx gibt die Richtung. Wenn Du die LEDs auf der Kugel über die Winkel Phi und Theta adressierst, könnte folgendes einen Kreis ergeben: phi+=dphi; theta+=dtheta; Probe: setzt man dphi auf 0, ergibt sich ein Kreis auf dem Umfang der Kugel.
Bei so wenig LEDs würde ich die Punkte per Hand setzen und in einer Tabelle ablegen. Es können dann auch Kreissegmente sein, die gespiegelt werden.
Nobbi schrieb: > Sind das Photos oder Renderbilder? Hast du die gebaut? Guck dir mal den "Tisch" und die LEDs an ;-)
Die Konstruktion des zentralen Steckverbinders würde mich mal interessieren.
Hallo zusammen, erst mal vielen vielen Dank an alle. Die Kugel habe ich aufgebaut, basierend auf dem thread Beitrag "LED Blinky Ball Monochrom" Das Bild ist gerendert. Was aber das geometrische Problem betrifft: Die Auflösung der Kugel ist nicht sonderlich gut, aber für meine Zwecke ausreichend. Meine geometrischen Kenntnisse sind etwas eingerostet. Ich hatte die Hoffnung, dass es eine einfache Formel gibt, die der ATMega noch in einer annehmbaren Zeit berechnen kann. Ich werde versuchen, diese mir herzuleiten. Kreise durch Rotation von Phi und Theta funktioniert aber schon. Eben nur Kreise in beliebiger Position auf der Kugeloberfläche nicht. Trotzdem nochmals Danke an euch. Gruß Albundy
Hallo Kugel Radius R, Kreis um Mittelpunkt M(Mb,Ml) mit Radius r < R*pi/2 = Umfang/4 Für einen beliebigen Mittelpunktswinkel (KMN)=y, (N=NPol , 0 < y < pi) liegt der Punkt K(b,l) auf der Kreislinie, falls gilt: b = arcsin(SB) l1 = Ml + arccos( ( cos(r/R)-sin(Mb)*SB ) / ( cos(Mb)*sqrt(1-SB^2) ) ) l2 = Ml - arccos ... wobei SB = cos(r/R)*sin(Mb) + sin(r/R)*cos(Mb)*cos(y) Probleme: Anfallende Geo-Winkelbereichsüberschreitungen entsprechend anpassen Für y=0 wie auch y=pi (K liegt auf Mittelpunkts-Vollmeridian), kann aus Gründen der Rechengenauigkeit, das arccos-Argument geringfügig aus dem zulässigen Bereich -1 ... +1 herausfallen und ist in diesem Fall für < -1 durch -1 und für > 1 durch 1 zu ersetzen. (Möglicherweise arbeitet die Formel auch für den r-Bereich bis zu r < Umfang/2 problemlos) Die Koordinaten sind geographische Koordinaten (Breite,Länge) und sind nach! Berechnung, geeignet in Kugelkoordinaten umzusetzen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.