Lua Kreisreflektion
lima-city → Forum → Programmiersprachen → Sonstige Programmiersprachen
ableitung
ball
besagten winkels
einbringen
flug
formel
funktion
gleichung
http
kreisen
machen
manual
objekt
position
problem
radius
steigung
stelle
url
winkel
-
Ich möchte mit Lua einen Blobby-Volley Bot programmieren.
Die Taktik soll sein: der Blobby nimmt den Ball erstmal an. Dann spring er hoch und schmettert.
Das Problem:
Man kennt den Winkel. Man kennt die Position und die Form des Blobbys. Der Kopf des Blobbys ist ein Kreis.
Hat jemand eine Ahnung, wie man das jetzt macht, dass der Ball (Parabelförmiger Flug) so am Kreis abprallt, dass er genau grade nach oben abprallt?
Theoretisch ist es nicht schwer. Man rechnet sich aus, welche Steigung eine Gerade haben müsste, damit sich die Senkrechte daran im Winkel des Balles reflektieren Würde. Dann bewegt man den Blobby so, dass der Kreis an der Stelle genau die Steigung hat.
Aber wie macht man das in Lua? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ich verstehe nicht ganz, wo dein Problem ist. Für Winkelberechnungen kannst du ja einfach auf Funktionen wie math.sin() zurückgreifen.
An welcher Stelle kommst du genau nicht weiter? Welche Formeln sind hier relevant? -
Man bräuchte glaube ich die Ableitung der Kreisfunktion. (oberer Halbkreis)
Dann muss man da den Tangens des besagten Winkels einfügen und nach x auflösen. Aber wie geht das in Lua. Insbesondere das nach x auflösen stelle ich mir schwer vor. -
Bitte poste erstmal die konkrete Formel, um die es hier geht. Erkläre, was damit gemacht werden soll und dann sehen wir weiter, wo man hier Lua einbringen kann. Derzeit sind deine Erklärungen jedenfalls zu ungenau, um darauf einzugehen.
-
Ich bezweifle, dass die Formel sich ändert. Die Werte in der Formel ja, die Formel: nicht. Also kannst du einfach einmal nach X Umstellen ( Mit allgemeinen Variablen ) und schwupps.. In Lua hardcoden und du hast dein X indem du die Werte einsetzt.
Beitrag zuletzt geändert: 14.3.2012 18:19:51 von adrians -
Hallo atomlauch,
wenn Du uns verraten würdest, was Du gegeben hast, dann wäre es leichter Deine Frage zu beantworten.
Aber im allgemeinen wirst Du keine Ableitungen von Kreisen benötigen, da man den gewünschten Auftreffpunkt auch mit einfachen geometrischen Überlegungen bekommt.
Was Du auf jedenfall benötigst ist die Bewegungsgleichung des Objektes, das reflektiert werden soll. Im Allgemeinen sieht sowas wie folgt aus:
Diese Gleichung gibt die Position des Objektes in Abhängigkeit von der Zeit an. Uns interessiert aber der Einfallswinkel, d.h. der Winkel des Geschwindigkeitsvektors:
http://img4host.net/upload/142102464f60f966e7252.png
Den bekommt man aus der Ableitung der Bewegungsgleichung nach der Zeit:
Allgemein gilt, dass Einfallswinkel gleich Ausfallswinkel ist, weshalb die Verbindungsstrecke zwischen Kreismittelpunkt und Auftreffpunkt genau die Winkelhalbierende ist. Zur Berechnung des Einfallswinkel benutzt man den negativen Geschwindigkeitsvektor (sonst müsste man 180° abziehen) und die Funktion atan2():
Der Ausfallswinkel ist ja vorgegeben und beträgt
Daraus läßt sich der Winkel der Winkelhalbierenden berechnen:
und damit auch die Position des Berührpunktes auf dem Kreis:
und
Dabei ist r der Radius und c die Mittelpunktskoordinate des Kreises.
Das alles löst wahrscheinlich Dein Problem noch nicht vollständig, aber ich hoffe mal, dass es vielleicht ein wenig weiterhilft.
Beitrag zuletzt geändert: 14.3.2012 22:03:17 von darkpandemic -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage