Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 19:35

Foren-Übersicht » Programmierung » Mathematik-Forum
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Di Jul 07, 2009 09:49 
Offline
DGL Member

Registriert: Mo Mai 25, 2009 21:29
Beiträge: 30
Hi,

ich scheitere gerade erbärmlich daran, den relativen Abstand verschiedener Punkte zum Ellipsenrand herauszufinden.
(Also 1: auf der Ellipse - 0.5: in der Mitte zwischen Mittelpunkt und Kante der Ellipse, usw)

Mein Ansatz war, die Ellipse zu drehen und danach weiter zu rechnen.
Irgendwo mach ich dabei jedoch einen Denkfehler:
(Hier aufgrund der Zeilenlänge und übersicht mit tempVariablen)
Bedeutung meiner Variablen:
a: Länge der Ellipse
b: Breite der Ellipse
count1, count2: (Das ganze ist innerhalb eines loops - beide laufen von -Max(a,b) bis +Max(a,b)
cosrot: Cos(PI/180.0* -(Ellipsendrehung in Grad))
sinrot: Sin(PI/180* -(Ellipsendrehung in Grad))


temp1 := (Power(cosrot * Sqrt(Power(count1,2)+Power(count2,2) ),2 ) / Pow(a,2) )
temp2 := (Power(sinrot * Sqrt(Power(count1,2)+Power(count2,2) ),2 ) / Pow(b,2) )
Relativer_Abstand := Sqrt(temp1 + temp2)

Dachte ich zumindest.
Ich denke, dass Problem ist, wenn cosrot oder sinrot den Wert 0 annehmen.
Leider weis ich dafür jedoch keine Lösung.

Im Vorraus schon mal vielen Dank,

Mfg.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jul 07, 2009 12:42 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Ich würde sagen schon nah dran.
Hab mal schnell google bemüht und folgendes gefunden.
http://my.opera.com/Vorlath/blog/show.dml/476448

Code:
  1. x = a*b*xx/sqrt((b*xx)*(b*xx) + (a*yy)*(a*yy));
  2. y = a*b*yy/sqrt((b*xx)*(b*xx) + (a*yy)*(a*yy));
  3. distance = sqrt((xx-x)*(xx-x) + (yy-y)*(yy-y));

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jul 07, 2009 19:42 
Offline
DGL Member

Registriert: Mo Mai 25, 2009 21:29
Beiträge: 30
Naja,
das Problem dieser Gleichung ist, dass sie die Ellipse nicht dreht und nur den absoluten (nicht den relativen) Abstand abgibt.
Wenn ich das miteinbeziehe, kam ich aber auf meine Rechnung.

Nach einigem Rätseln habe ich den Fehler - ich habe die Punkte im gedrehten System falsch berechnet.
Korrekterweise ist:
Xneu = Xalt*cos(alpha) - Yalt* Sin(alpha)
Yneu = Xalt*sin(alpha) + Yalt* cos(alpha)
Daher habe ich cosrot nun als Cos(-alpha * Pi/180)
Und sinrot entsprechend Sin(-alpha * Pi/180) gesetzt.
Die weitere Berechnung sieht dann so aus:

Relativer_Abstand := SquareRoot((Power(count1*cosrot - count2*sinrot,2) / Power(a,2) ) + (Power(count1* sinrot + count2* cosrot ,2) / Power(b,2) ))


So funktioniert es jetzt.

Mfg.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Foren-Übersicht » Programmierung » Mathematik-Forum


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 14 Queries | GZIP : On ]