Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 07-05-2008, 08:47   #1 (permalink)
immer gerne hier
 
Registriert seit: Sep 2005
Beiträge: 347
[Mathe] Punkt zu Punkt, dazwischen interpolieren

Hallo Leute

Ich mache ein kleines Spiel, dort bewegen sich MovieClips von einem Punkt zum andern. Die Punkte sind in ein 2 dimensionales array geschrieben, also Punkt eins ist auf (Point[0][0] / Point[0][1]). Null ist X, 1 ist Y.

Wenn ich jetzt aber meine Objekte fliegen lasse, dann machen sie so spitz kehrt und fliegen gerade von Punkt zu punkt, was sehr hässlich aussieht, als wäre das game schnell hingehackt worden.

Jetzt würde ich gerne zwischen den Punkten interpolieren, um dem Weg die scharfen Ecken zu nehmen.

Ich weiss dass das mit sinus und kosinus geht, ich kann einen MC auch auf einem Kreis fahren lassen und habe grundlegende Kentnisse aber da hört es auch schon auf . Wie man DAS macht, weiss ich nicht.

Hier liegt noch ein Bild bei, die Gestrichelten Linien sind der hässliche Direktweg, während die dicke Linie eine schöne Kurve zieht (wie gewünscht).



Ich wäre wirklich sehr froh um Hilfe oder ein Tutorial.

Danke im Voraus

Gruss
Kenji
__________________
Flashforum-Könige: der Frager und hgseib. Ein fettes Lob an die beiden für unendliche Hilfsbereitschaft.
Erfahrung mit: Actionscript 2, 3, PHP, MySQL, HTML, CSS, .htaccess, JavaScript, C++, Pascal
Interese für: Sicherheit, Kryptologie, Performance
Kenji ist offline   Mit Zitat antworten
Alt 07-05-2008, 08:58   #2 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Vielleicht hilft dir das etwas: Bézierkurve
Ansonsten könntest du mal bei google suchen ob du da etwas zum Thema Pathfinding findest, dort besteht ja das gleiche Problem.
__________________
ERROR: Signature is too large

Geändert von rendner[i] (07-05-2008 um 09:23 Uhr)
rendner[i] ist offline   Mit Zitat antworten
Alt 07-05-2008, 09:43   #3 (permalink)
immer gerne hier
 
Registriert seit: Sep 2005
Beiträge: 347
Jaja, bezier, das kenn ich auch, nur wie soll ich das programmieren?
Ausserdem berührt bezier den 2ten Punkt ja nicht, oder?
Er kurvt vom P1 zum P3 aber berührt den P2 nicht.
__________________
Flashforum-Könige: der Frager und hgseib. Ein fettes Lob an die beiden für unendliche Hilfsbereitschaft.
Erfahrung mit: Actionscript 2, 3, PHP, MySQL, HTML, CSS, .htaccess, JavaScript, C++, Pascal
Interese für: Sicherheit, Kryptologie, Performance
Kenji ist offline   Mit Zitat antworten
Alt 07-05-2008, 10:54   #4 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
http://www.seibsprogrammladen.de/fra...ispiele/flash6
-> Zeichnen
BSpline 3.+5.Ordnung, Bézier 6.Grades, Kubischer Spline,
Lagrange-Polynom, Newton- und Hermite- Interpolation, NURBS

da sollte was mit dabei sein.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 07-05-2008, 12:19   #5 (permalink)
immer gerne hier
 
Registriert seit: Sep 2005
Beiträge: 347
Leider bin ich im Geschäft, aber nachher schau ich rein. Warum hab ich nicht zuerst auf seibsprogrammladen nachgeschaut?
Ich hoffe, ich kapier das Zeug. In der Schule hatten wir ja nicht mal den Sinus wie soll ich sowas kapieren?

Ich meld mich wieder wenns Probleme gibt :P
Danke!

Gruss
Kenji
__________________
Flashforum-Könige: der Frager und hgseib. Ein fettes Lob an die beiden für unendliche Hilfsbereitschaft.
Erfahrung mit: Actionscript 2, 3, PHP, MySQL, HTML, CSS, .htaccess, JavaScript, C++, Pascal
Interese für: Sicherheit, Kryptologie, Performance
Kenji ist offline   Mit Zitat antworten
Alt 07-05-2008, 14:05   #6 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
ich hab auch nur ein mittelmässiges volksschulzeugnis und das ist ewig her.
bei flash kann man halt sehen was läuft ;-) und dann probiert man das so lange bis das passt.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 07-05-2008, 14:37   #7 (permalink)
immer gerne hier
 
Registriert seit: Sep 2005
Beiträge: 347
Naja ich besuche immer noch die Schule (nur 1h Mathe pro Woche >:/), einfach nur 2 Tage pro woche und 3 bin ich im Geschäft. Und ich bin 16.

Und in so einem Fall ist auch probieren völlig zwecklos das ich keinen Plan habe was ich tun sollte. Aber ich werd dann dort reinschauen, vllt. kapier ichs.

EDIT: Beim normalen bezier, den ich gerade verwenden wollte hast du curve to verwendet. Und das nützt mir gar nichts, da ich ja keine linien zeichnen will sondern objekte darauf wandern. Hilfe!

Gruss
Kenji
__________________
Flashforum-Könige: der Frager und hgseib. Ein fettes Lob an die beiden für unendliche Hilfsbereitschaft.
Erfahrung mit: Actionscript 2, 3, PHP, MySQL, HTML, CSS, .htaccess, JavaScript, C++, Pascal
Interese für: Sicherheit, Kryptologie, Performance

Geändert von Kenji (07-05-2008 um 22:29 Uhr)
Kenji ist offline   Mit Zitat antworten
Alt 10-05-2008, 18:32   #8 (permalink)
immer gerne hier
 
Registriert seit: Sep 2005
Beiträge: 347
Question

Hallo

Ich hab mir wieder mal das wiki angeschaut, welches wieder mal ziemlich kompliziert aussieht. (http://en.wikipedia.org/wiki/Bezier_curve)
Ich hab jetzt einfach mal die animierten zeichnungen studiert und folgendes erstellt (das genau gleich ist wie auf dem Bild):
Unbenannt-1.zip

Ich glaube, damit hab ich einen grossen Schritt voran getan, aber ich stehe an, und zwar dort, wo es mehr als 3 Punkte hat (dort werden auch die Zeichnungen entsprechend kompliziert ;-P)

Gibts irgendeinen Code der das schnell und einfach macht? HGSeibs version ist leider mit CurveTo() realisiert, das kann ich aber nicht brauchen, da ich keine Linie zeichnen muss, sondern nur Objekte darauf wandern lasse.

Danke im Voraus für die Hilfe

Gruss
Kenji
__________________
Flashforum-Könige: der Frager und hgseib. Ein fettes Lob an die beiden für unendliche Hilfsbereitschaft.
Erfahrung mit: Actionscript 2, 3, PHP, MySQL, HTML, CSS, .htaccess, JavaScript, C++, Pascal
Interese für: Sicherheit, Kryptologie, Performance
Kenji ist offline   Mit Zitat antworten
Alt 10-05-2008, 21:00   #9 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
generell würde ich dir empfehlen, dich mal mit bézies zu beschäftigen. das ist eine extrem wichtige kurve, die überall anwendung findet.

in
kurven_vergleich.fla
findest du alle möglichen kurven und da ist garnichts mit curveTo gemacht.

bézies gehen niemals durch ihre stützpunkte, nur durch den anfangs und endpunkt. du könntest deinen kurvenzug aus drei einzelnen bézies zusammen setzen. die jeweiligen stützpunkte lägen dann auf tangen durch p2 und p3 (tangente in p2: winkel p1p2p3 halbierende um 90 grad gedreht). das problem bei bézies ist, das man die nicht in gleichlange stücke (== kontinuierliche bewegung) aufteilen kann. ich kenne zwar ein verfahren, aber das funktioniert nicht 100% korrekt.

durch die stützpunkte gehen z.b. die hermite- und die newton- interpolation. die verbinden aber nur punkte entlang der x-achse und nicht willkürliche punkt- anordnungen.

das lagrange- polynom käme deinen anforderungen nahe. allerdings ist die kurve kaum zu bändigen und schwinkt sehr stark aus.


angesichts deiner mathe möglichkeiten (andere haben mit 16 schon nobel-preis arbeiten abgeliefert. bzw. heutzutage ist man mit 16 doch schon erwachsen. das alter ist also keine entschuldigung ;-) würde ich dir vorschlagen das mit kreisen zu machen?
siehe bild mit kontruktionshilfe (die roten linien).
Angehängte Grafiken
Dateityp: gif 4p_bogen.gif (2,4 KB, 6x aufgerufen)
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (10-05-2008 um 21:09 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 10-05-2008, 23:40   #10 (permalink)
immer gerne hier
 
Registriert seit: Sep 2005
Beiträge: 347
Hahaha ja das mit den Kreisen war meine erste idee. Das ganze ist doof, weil man einfach nicht genügend Freiheit hat, man kann nur kreisrund fahren und keine Ellipsen abfahren.
Und ich wollte interpolieren zwischen den Punkten und nicht um meine Punkte herumfahren.

Das mit dem Punkt berühren ist mir egal, ich kann mich danach richten. Ich hab deine Kurven ausprobiert, alle die durch den Punkt gehen schwenken zu stark oder zu schwach aus, die Bezier-Kurve ist immer schön gleichmässig und abgerundet.

Zitat:
findest du alle möglichen kurven und da ist garnichts mit curveTo gemacht.
Oh DOCH! Such mal nach curveTo! Die normale bezierkurve hast du einfach mit curveTo gelöst.

Zitat:
angesichts deiner mathe möglichkeiten (andere haben mit 16 schon nobel-preis arbeiten abgeliefert. bzw. heutzutage ist man mit 16 doch schon erwachsen. das alter ist also keine entschuldigung ;-)
Red keinen Blödsinn, ich bin kein Genie und du hast dich wahrscheinlich mit 16 noch gar nicht mit dieser Materie beschäftigt.
Ausserdem kann ich nichts dafür, dass wir eine Stunde Mathe pro Woche haben, und die reicht gerade zum Hausaufgaben korrigieren! Schei** Schule, versuch mal die Bezierkurve anhand des Wiki Artikels zu verstehen wenn du gerade einmal den Pythagoras kennst!

Hast du eigentlich mein Flash angeschaut? Das sieht der Zeichnung im Wiki doch schon ziemlich ähnlich ;-)
Naja dann hock ich eben noch ein wenig vor dem PC und probiere selbst, eine anständige Einführung in die Bezier-Kurve gibst wohl nicht. (Also das Wiki listet ja nur Formeln auf und ich kann es nicht leiden wenn ich was rechne und weiss nicht warum!)

Gruss
Kenji
__________________
Flashforum-Könige: der Frager und hgseib. Ein fettes Lob an die beiden für unendliche Hilfsbereitschaft.
Erfahrung mit: Actionscript 2, 3, PHP, MySQL, HTML, CSS, .htaccess, JavaScript, C++, Pascal
Interese für: Sicherheit, Kryptologie, Performance
Kenji ist offline   Mit Zitat antworten
Alt 11-05-2008, 17:47   #11 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
16: und wenn du noch so sehr jammerst, mit 16 gibt's keinen kinderbonus mehr
Oh DOCH: meine güte, dann guck halt in bezier1.fla rein

im anhang mal ein beispiel, aber wie schon geschrieben:
da hast du null möglichkeiten, die zeichen/beweg- geschwindigkeit zu steuern.
es hat schon seinen grund, wenn ich dir kreise vorschlage ...
Angehängte Dateien
Dateityp: zip grummer_weg.zip (8,1 KB, 22x aufgerufen)
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

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



Alle Zeitangaben in WEZ +1. Es ist jetzt 19:52 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele