Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 23-11-2006, 09:04   #1 (permalink)
liebt Skorpionin
 
Benutzerbild von Skorpion
 
Registriert seit: Apr 2003
Beiträge: 1.258
Berechnungsfrage (Kreisbogen)

Ich weiss:
  • die Koordinaten von 2 Punkten (x1,y1 / x2,y2) welche sich auf einem Kreis befinden.
  • die Koordinaten des Kreismittelpunktes (rX, rY).
  • den Kreisradius (radius).
  • dass ich eine Pfeife bin in Sachen Mathe

Ich weiss nicht (würde aber gern wissen):
  • Wie lange der Kreisbogen zwischen den beiden Punkten ist (als Wert zwischen 0 und 360 Grad). Gefragt ist dasjenige Teilstück welches sich zwischen dem ersten Punkt in Gegenuhrzeigerrichtung zum zweiten befindet.

Ich kriegs nicht alleine hin...
Skorpion ist offline   Mit Zitat antworten
Alt 23-11-2006, 09:32   #2 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
Ganz grob, der Ansatz sollte stimmen, evtl. noch etwas feilen:
Code:
var a = Math.atan2(y1 - ym, x1 - xm);
var b = Math.atan2(y2 - ym, x2 - xm);

var delta = a - b;

if (delta < 0) delta += 2 * Math.PI;

trace(Math.round(delta * 180 / Math.PI));
EDIT: hmm oder doch eher so?
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)

Geändert von Janoscharlipp (23-11-2006 um 09:39 Uhr)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 23-11-2006, 12:48   #3 (permalink)
liebt Skorpionin
 
Benutzerbild von Skorpion
 
Registriert seit: Apr 2003
Beiträge: 1.258
Thumbs up

Deine Lösung scheint zu klappen, Janoscharlipp, vielen Dank.

Nun komm ich schon wieder nicht weiter. Stelle ich fest, dass ich statt Kreise auch Ellipsen benötige. Es gibt also zwei Radien (radiusX und radiusY). Sicher ist die Lösung ähnlich, nur wie....?
Skorpion ist offline   Mit Zitat antworten
Alt 23-11-2006, 12:58   #4 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.321
nur unwesentlich kniffliger ;-)
http://www.mathematik-online.de/F57.htm#Ellipse
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 23-11-2006, 13:09   #5 (permalink)
liebt Skorpionin
 
Benutzerbild von Skorpion
 
Registriert seit: Apr 2003
Beiträge: 1.258
Autsch, danke für die kalte Dusche hgseib
Skorpion ist offline   Mit Zitat antworten
Alt 23-11-2006, 13:41   #6 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.321
die formel von dem link umgesetzt ist:
Code:
function fEllipsenUmfang(a, b, toll) {
	var e = Math.sqrt((a*a-b*b)/a/a);
	var div, ee = e2=e*e, x = 1/2, p = 1;
	var sum = 1-x*x*ee;
	do {
		x *= (p += 2)/(p+1);
		sum -= div=x*x*(ee *= e2)/p;
	} while (Math.abs(div)>toll);
	return 2*a*Math.PI*sum;
}
trace(fEllipsenUmfang(10, 1, 1e-8));
für ellipsenbögen allerdings ...
je nachdem, wie exakt du das benötigst:
berechne x zwischenpunkte und addiere die jeweiligen abstände von punkt zu punkt.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (23-11-2006 um 13:52 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 24-11-2006, 07:43   #7 (permalink)
liebt Skorpionin
 
Benutzerbild von Skorpion
 
Registriert seit: Apr 2003
Beiträge: 1.258
hi hgseib, danke für deine Mühe. Was du schreibst ist mir aber zu hoch (ich mag keinen Code haben den ich nicht selbst durchschaue). Habe nun beschlossen, auf eine simplere Lösung auszuweichen. Da ich ja die Werte der beiden Radien kenne, ermittle ich einfach die "Stauchung" (radiusX / radiusY ) und rechne meine Punkte auf den "ursprünglichen" Kreis hoch.

Greetings und danke vielmals - Skorpion
Skorpion 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:42 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele