Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 14-09-2005, 10:51   #1 (permalink)
Neuer User
 
Registriert seit: Feb 2003
Beiträge: 37
Linie zu Kurve verformen - curveTo

Hallo,

mein Ziel ist es, den Benutzer eine Kurve mit ca. 10 "Schiebern" selbst einstellen zu lassen. Ausgehend von einer horizontalen Linie soll er hier eine Leistungskurve (mit minima und maxima) einstellen. Habe ja schon in Sachen Bezier und curveTo einiges recherchiert, aber die Kurve soll immer rund bleiben, keine Ecken haben.

Hier gibt es bei schieber2 immer einen Knick:

this.onEnterFrame = function() {

moveTo(200, schieber0._y);
curveTo(300, schieber1._y, 400, schieber2._y);
curveTo( 400, schieber2._y, 500, schieber3._y );
}


Wie kann ich die curveTo miteinander verbinden, dass die resultierende Kurve nur Rundungen hat?

Wär toll, wenn mir jemand helfen könnte
Grüße
Jürgen
jürgen b. ist offline   Mit Zitat antworten
Alt 14-09-2005, 15:08   #2 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
angenommen du malst eine Kurve von p1 nach p2 nach p3 mit den Orientierungspunkten m1 und m2, dann ist die Kurve nur dann rund, wenn m1, p2, und m2 auf einer Geraden liegen.
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 14-09-2005, 17:38   #3 (permalink)
Neuer User
 
Registriert seit: Feb 2003
Beiträge: 37
Genau, das ist ja mein Prob. Ich möchte so eine Kurve (siehe Bild) zum Selbsteinstellen bauen. Da gibt es keine Ecken.
Angehängte Grafiken
Dateityp: gif leistungskurve2.gif (4,3 KB, 50x aufgerufen)
jürgen b. ist offline   Mit Zitat antworten
Alt 14-09-2005, 18:04   #4 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
Naja, die Herangehensweise ist ja eigentlich klar. Der User legt Punkte auf senkrechten Geraden fest, und du musst dazu die passenden Orientierungspunkte finden.

An jeder Ecke bildest du die Senkrechte zur Winkelhalbierenden zum linken und rechten Schnenkel der Ecke. Wenn der vorhergehende Orientierungspunkt und der Nachfolgende darauf liegen, sieht deine Kurve brauchbar aus.
Wenn deine Kurve eine konstante Krümmung hat ist es leicht.
Wenn du 2 Ecken hast (also 4 Punkte) so muss der mittlere Orientierungspunkt auf dem Schnittpunkt der beiden Winkelhalbierenden liegen.
Schwieriger wird es, wenn 4 Punkte S-förmig angeordnet sind, dann musst du einen Punkt auf der mittleren Geraden einführen, durch den die Kurve geht.
Ich habe dazu mal ne Skizze gemacht, die blauen Punkte sin die Punkte, welche der User eingestellt hat, die Roten sind die Gesuchten Orientierungspunkte.
Die grünen Geraden sind die Senkrechten zu den Winkelhalbierenden.
Der gelbe Punkt ist der wegen S-förmig angeordneten User-Punkten eingeführte Mittelpunkt.

Wenns wirklich wichtig ist, kannste mir mal ne PM schicken …
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 14-09-2005, 20:46   #5 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
ok, im Anhang das Bild wie immer vergessen *Kopfaufdemtischzertrümmer*
Angehängte Grafiken
Dateityp: gif kurve.gif (5,4 KB, 42x aufgerufen)
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 15-09-2005, 00:28   #6 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
vorschlag, bevor ihr hier das halbe freehand nachprogrammiert (ist aber auch nicht einfach):

jürgen b. muss sich ein bisschen (intensiev) in mathe einarbeiten zum thema bézier-kurven!
dann läuft das ganze nicht mit schiebern, sondern du musst punkte positionieren. aus deren koordinaten kann man dann die bézier-kurve berechnen. und ich würde vorschlagen nicht mit curveTo, sondern schöne kurze lineTo's.

so als starthilfe:
http://www.seibsprogrammladen.de/fra...on/Mathe/flash

mit der binomischen formel (a+b)^3 erhält man die beiwerte für 4 punkte. mit (a+b)^4 die beiwerte für eine bézier-kurver über 5 punkte usw.
also für 10 'schieber' musst du nur (a+b)^9 umsetzen. ist weniger schwierig als es sich anhört.

alles klar?
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (15-09-2005 um 00:29 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 19-09-2005, 12:10   #7 (permalink)
Neuer User
 
Registriert seit: Feb 2003
Beiträge: 37
Danke euch beiden. Ich werde da sicher noch tiefer einsteigen, ich muss da mathemäßig tief verschüttetes wieder ausgraben, aber wird schon klappen.

@hgseib werde deinen Ansatz aufnehmen

Ich musste jetzt auf die schnelle eine Demo bauen, in der ich auf Kurven verzichtet habe (also nur ein paar lineTo). Kann mir nochmal jemand helfen?

Ich verstehe nicht warum ab dem 6. "Schieber" das Schieber-MC (ab h6) beim Bewegen immer auf eine fixe x-Position (x=300) weiter links rutscht. Bitte mal kurz ausprobieren(=schieben). Diese fla. ist aus einer Macromedia-Demo entstanden, bei der die Bühne kleiner war. Irgendwie landen die attachten movies immer an der ehemaligen Bühnenkante-wie kann das sein?

Danke

Jürgen
Angehängte Dateien
Dateityp: zip selbsteinstellkurve_test.zip (3,9 KB, 9x aufgerufen)
jürgen b. ist offline   Mit Zitat antworten
Alt 19-09-2005, 21:25   #8 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
schon mal was von for-schleifen gehört?
Angehängte Dateien
Dateityp: zip selbsteinstellkurve_test.zip (6,8 KB, 13x aufgerufen)
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 19-09-2005, 21:37   #9 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Hier die Datei die hgseib anhängen wollte.
Angehängte Dateien
Dateityp: rar selbsteinstellkurve.rar (4,9 KB, 26x aufgerufen)
__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Alt 21-09-2005, 10:51   #10 (permalink)
Neuer User
 
Registriert seit: Feb 2003
Beiträge: 37
@hgseib hart, aber herzlich
Klar ist das so schlanker (und funktioniert auch besser).
Danke soweit auch an redner
jürgen b. 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:34 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele