Zurück   Flashforum > Flash > Flash Fortgeschritten > Flash 4 und Flash 5

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 04-08-2006, 16:42   #1 (permalink)
world.transform
 
Benutzerbild von kons
 
Registriert seit: Aug 2003
Beiträge: 236
Denksport/mathe

Hi,
häng grad ein bisschen. vielleicht hab ihr eine idee?
ich erstelle zur laufzeit zwei punkte, zwischen denen ich eine linie wachsen lassen will. soweit auch kein problem.
fast: hat jemand in mathe ein bisschen mehr aufgepasst und kann mir sagen wie ich einzelne punkte auf dieser linie bekomme? dabei weiss ich nicht ob punkt1 kleinere/grössere Koordinaten hat als punkt2.
gibts da was geschmeidiges?
merci kons
kons ist offline   Mit Zitat antworten
Alt 04-08-2006, 20:37   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
A: anfang der linie
B: ende der linie
C: punkt

bekannt ist % der strecke(AB):
p=proz/100;
Cx=Ax+(Bx-Ax)*p; // y sinngemäss
wenn (p<0 && p>1) ist, dann liegt der punkt ausserhalb der strecke.

bekannt ist: abstand r von A:
len=sqrt((Bx-Ax)^2-(By-Ay)^2); // strecke(AB)
p=r/len;
Cx=Ax+(Bx-Ax)*p;

bekannt ist: y-position von C:
p=(y-Ay)/(By-Ay);
Cx=Ax+(Bx-Ax)*p;

bekannt ein punkte der irgendwo steht:
wenn (strecke(AB)-strecke(AC)-strecke(BC) == 0) ist
dann befindet sich den punkt exakt auf der linie. es ist sinnvoll eine tolleranz zuzulassen und nicht auf exakt 0 zu testen.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (04-08-2006 um 20:43 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 04-08-2006, 21:13   #3 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
uhh, aber in Flash 4 / 5 ... viel Spaß
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 04-08-2006, 21:17   #4 (permalink)
world.transform
 
Benutzerbild von kons
 
Registriert seit: Aug 2003
Beiträge: 236
also erstmal merci für deine antwort.
....aber sorry ich blicks nicht.

Zitat:
Zitat von hgseib
A: anfang der linie
B: ende der linie
C: punkt

bekannt ist % der strecke(AB):
p=proz/100;
Cx=Ax+(Bx-Ax)*p; // y sinngemäss
wenn (p<0 && p>1) ist, dann liegt der punkt ausserhalb der strecke.
?? was ist proz?%? die steigung? ist die bekannt? sorry: ich bin echt ein totales "matheAss"

Zitat:
Zitat von hgseib
bekannt ist: abstand r von A:
len=sqrt((Bx-Ax)^2-(By-Ay)^2); // strecke(AB)
p=r/len;
Cx=Ax+(Bx-Ax)*p;
Ok. len ist der Pythagoras zwischen a/b. was sind p und r? und die dritte zeile?


Zitat:
Zitat von hgseib
bekannt ist: y-position von C:
p=(y-Ay)/(By-Ay);
Cx=Ax+(Bx-Ax)*p;

bekannt ein punkte der irgendwo steht:
wenn (strecke(AB)-strecke(AC)-strecke(BC) == 0) ist
dann befindet sich den punkt exakt auf der linie. es ist sinnvoll eine tolleranz zuzulassen und nicht auf exakt 0 zu testen.
..und nochmal eine neudefinition von p?
muss ich nach dieser version alle möglichen punkte austesten um auf die zu stossen die auf der linie liegen? ich dachte eher an sowas wie die zwei bekannten punkte in eine geradenfunktion zu bringen die ich dann nach y/x abfragen kann..?
sorry habs wie gesagt nicht geblickt. kannst du das nochmal für halbdummies wie mich erklären.
danke!!
kns
kons ist offline   Mit Zitat antworten
Alt 04-08-2006, 21:32   #5 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
"..was ist proz?%.."
% <-- schon mal etwas von prozent gehört? üblicher weisse in anteilen *100 angegeben. 30% von 1000 == 1000*30/100 == 1000*.3 = 300;

"..was sind p und r?.."
--> bekannt ist: abstand r
r wäre ein abstand, das steht doch da!
p ist eine variable und es steht jedesmal dabei, wie man diesen proznetwert berechnet. je nachdem, was dir von deinem punkt bekannt ist (weiss ich ja nicht) könntest du eine dieser 4 methoden benützen um die fehlenden werte zu ermitteln.

sorry, wenn jemand z.b. kein chinesisch kann, dem kann man das auch nicht in 2 sätzen beibringen - ich kann das zumindestens nicht.


beschreib halt genau was du machen willst. dann wird sich einer finden, der dir dein zeugs programmiert.

-----------
@Janoscharlipp
flash4 hoffe ich auch nicht ;-) aber im AS von flash5 ist doch schon alles drinn was der mensch so zum leben braucht.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (04-08-2006 um 21:38 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 04-08-2006, 21:36   #6 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
Herr seib hat dir einfach mal alles aufgetischt, was er über Geraden weiß
(vielleicht doch eher nur eine kleine Auswahl ...)

Letztenendes sind die ersten 3 Varianten alle gleichwertig, jenachdem was bekannt ist musst du die entsprechende verwenden.

Mit der ersten Variante kannst du einen Punkt zwischen A und B prozentual steuern, d.h. wenn du p auf 0.9 Stellst, ist der Punkt zu 90 Prozent bei B und zu 10 Prozent bei A, wenn du p auf 0.5 Stellst, liegt er genau zwischen A und B.
Diese Variante kannst du wahrscheinlich gut verwenden, du musst nur einen Zähler von 0 bis 100 hochzählen und kannst für jeden dieser Zählerzustände einen Punkt berechenen, der sich über die Zeit von A nach B bewegt.

Mit der zweiten Variante stellst du nicht Prozentual ein, wo zwischen A und B der Punkt liegen soll, sondern in welchem Abstand von A er Richtung B liegen soll.

Die letzte Variante würde ich nicht empfehlen, da sich naturgemäß nicht bei vertikalen Strecken funktionieren kann.

Der letzte Block erklärt einen Test, um zu prüfen, ob ein Punkt auf der Strecke A nach B liegt.

So, genug übersetzt, und hgseib ... das wird hoffentlich nicht zur Gewohnheit
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 04-08-2006, 21:37   #7 (permalink)
~~~~~~~~~~~~
 
Benutzerbild von _geo_
 
Registriert seit: May 2002
Ort: AUSTRIA (OÖ)
Beiträge: 3.298
ActionScript:
  1. // ein punkt in 2d sei ein array: Punktname[]
  2.  
  3. //Punkt A
  4. var a = new Array();
  5. a['x'] = 5;
  6. a['y'] = 1;
  7.  
  8. //Punkt B
  9. b = new Array();
  10. b['x'] = -3;
  11. b['y'] = 12;
  12.  
  13. // der Richtungsvektor ab = B-A =  -5 -3 und 12 -1 = -8 / 11;
  14. // also wenn du von A nach B willst musst du -8 schritte in Richtung X machen und 12 in Richrtung Y ;)
  15.  
  16.  
  17. // Richtungsvektor ab
  18. var v = new Array();
  19. v['x'] = b['x'] - a['x'];
  20. v['y'] = b['y'] - a['y'];
  21.  
  22. // alle Punkte die auf der Geraden AB liegen sind ein vielfaches diesem Vektor von A entfernt.
  23.  
  24. // alle Punkte die auf der STRECKE AB liegen sind 0 bis 1 fach des vektors von a entfernt.
  25.  
  26. // irgend ein Punkt zwischen A und B der auf AB liegt = a + v*p;  wobei p zwischen 0 und 1 liegen muss
  27. // damit der Punkt AUF der Strecke ist
  28.  
  29. var x = new Array();
  30. var p = 50; // 50 prozent von A entfernt (100% wäre B 0% wäre a selbst)
  31. var v_neu = new Array(); // das ist unser neuer Richtungsvektor
  32. v_neu['x'] = v['x'] * p/100;
  33. v_neu['y'] = v['y'] * p/100;
  34.  
  35. // uner Punkt x = Punkt A + der neue vektor also
  36. x['x'] = a['x'] + v_neu['x'];
  37. x['y'] = a['y'] + v_neu['y'];
  38.  
  39. // für p kannst du 0 bis 100 eingeben.
  40. // bei 50 % sollte der halbierungpunks sein also 1/6.5 ( (A+B) /2):
  41. trace(x['x']);
  42. trace(x['y']);

lg
__________________
--- :P ---

Blog
Bei unerwünschten Nebenwirkungen zerreißen Sie die Packungsbeilage oder erschlagen ihren Arzt oder Apotheker

Geändert von _geo_ (04-08-2006 um 21:42 Uhr)
_geo_ ist offline   Mit Zitat antworten
Alt 04-08-2006, 21:37   #8 (permalink)
Flashworker
 
Benutzerbild von sebastian
 
Registriert seit: Nov 2001
Ort: Wiesbaden
Beiträge: 10.945
Einfach mal mit "Geraden" und "Strecken" beschäftigen, nicht wirklich
kompliziert, aber hgseib hat schon recht. Ohne Grundlagen bringt das
nicht wirklich viel.

^Oder so: Jetzt muss man es nur noch verstehen

Geändert von sebastian (04-08-2006 um 21:38 Uhr)
sebastian 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 18:40 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele