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

Aktuelle Zeit: So Jul 20, 2025 00:37

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 15 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: 2D: Line-Circle-Intersection Point
BeitragVerfasst: Do Sep 01, 2005 07:33 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

hat wer einen algo um zu überprüfen ob ein Kreis eine Linie schneidet (2D) und mir dann die schnittpunkte liefert??? :)
Verzweifle dran.. wäh.. :(

Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Sep 01, 2005 08:48 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 02, 2003 12:47
Beiträge: 300
Wohnort: Marburg
http://www.delphigl.com/script/do_url.php?url=70

CompGeo unter Links - Genera.

Da müsste doch einer drinn sein???

Ansonsten kannste in jedem Mathebuch für Vektorrechnung für Oberstufe (eventuell LK) oder guter Formelsammlung nachgucken denke Ich!

Ich glaube langsam, wenns um vektorrechung geht sind viele Leute etwas zu faul sich damit genauer auseinander zu setzten :-) Aber glaub mir, dass hilft wenn mann solche Sachen selber machen kann viel weiter (meine Meinung), da Vektorrechnung ja Quasie ständig vorkommt...

Vielleicht hat ja auch jemand anders nen vertigen code

_________________
Nothing, oh sweet nothing,
today we are doing nothing at all...
http://www.geo-progs.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Sep 01, 2005 09:12 
Offline
DGL Member

Registriert: Mi Dez 15, 2004 20:36
Beiträge: 454
Wohnort: Wien, Österreich
Man löst das Gleichungssystem:
1->> x^2 + y^2 = r^2 <- Kreis
2->> y=k*x+n <- Gerade

x^2 + (kx+n)^2 = r^2
x^2*(1+k^2) + x*(2*k*n) + (n^2-r^2) = 0
a = 1+k^2
b = 2*k*n
c = n^2-r^2
D = b^2 - 4*a*c
D<0 keine Lösung, kein Schnittpunkt
D=0 eine Lösung, ein Schnittpunkt
x = -b / (2*a) ; y = k * (-b/(2*a)) + n;
D>0
x1 = (-b + sqrt(D) ) /(2*a)
x2 = (-b - sqrt(D) ) /(2*a)

Fehler sind vorbehalten.

_________________
"Meine Mutter sagt : 'Dumm ist der, der Dummes tut'." - Forrest Gump


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Sep 01, 2005 10:02 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 17, 2002 12:07
Beiträge: 976
Wohnort: Tübingen
Nur ne kurze Frage: Ist mit dem Kreis eine Scheibe gemeint? Oder wirklich ein Kreis (also eine gebogene Gerade ;) )? Weil wenn zweiteres der Fall ist, wird die Genauigkeit von sqrt nicht ausreichen, da musst du dann vielleicht ein bisschen Spiel einbauen.

_________________
"Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0."
- Hal Faber

Meine Homepage: http://laboda.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Sep 01, 2005 10:39 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

sniper_w hat geschrieben:
Man löst das Gleichungssystem:
1->> x^2 + y^2 = r^2 <- Kreis
2->> y=k*x+n <- Gerade

x^2 + (kx+n)^2 = r^2
x^2*(1+k^2) + x*(2*k*n) + (n^2-r^2) = 0
a = 1+k^2
b = 2*k*n
c = n^2-r^2
D = b^2 - 4*a*c
D<0 keine Lösung, kein Schnittpunkt
D=0 eine Lösung, ein Schnittpunkt
x = -b / (2*a) ; y = k * (-b/(2*a)) + n;
D>0
x1 = (-b + sqrt(D) ) /(2*a)
x2 = (-b - sqrt(D) ) /(2*a)

Fehler sind vorbehalten.


mhh.... *schaut verwirrt* was ist denn k und n...?? *beißt sich unsicher auf der unterlippe rum*

Zitat:
Nur ne kurze Frage: Ist mit dem Kreis eine Scheibe gemeint?

na ja... Kreis halt.. aber es muß jetzt nich mega genau sein... ist halt als collision detection für nen 2D spiel... :)

Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Sep 01, 2005 13:01 
Offline
DGL Member

Registriert: Mi Dez 15, 2004 20:36
Beiträge: 454
Wohnort: Wien, Österreich
Wenn eine Gerade duch 2 Punkten gegeben ist dann gilt:
t1( x1,y1 )
t2( x2, y2)

a = y2-y1
b = x2-x1

k = a/b
n = (y1 * b + x1 * -a)/b

y = K*x + N <-- explizite Gleichung einer Gerade wobei:
k = tan( l )
l -> angle zwischen gegebene Gerade und Gerade y=0

n -> Stelle an der Gerade x=0 wo sich gegebene Gerade und Gerade x=0 schneiden.....

Wenn ich Zeit habe, dann schicke ich ein Bild dazu...

_________________
"Meine Mutter sagt : 'Dumm ist der, der Dummes tut'." - Forrest Gump


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Sep 01, 2005 13:03 
Offline
DGL Member

Registriert: Mi Dez 15, 2004 20:36
Beiträge: 454
Wohnort: Wien, Österreich
@La_Boda: Es geht nicht genauer....das ist Mathe, genauer gehts nicht, zumidest was die Mathe betrift.

_________________
"Meine Mutter sagt : 'Dumm ist der, der Dummes tut'." - Forrest Gump


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Sep 01, 2005 13:11 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 17, 2002 12:07
Beiträge: 976
Wohnort: Tübingen
Ja, sniper, ich mein damit ja ned die Mathematik, sondern, wie genau Delphi das sqrt berechnet. Weil, wenns so ein richtiger Kreis ohne Fläche ist, dann ist eigentlich die Linie des Kreises (und auch die Gerade) unendlich dünn. So genau kannst du dann sqrt gar ned rechnen lassen (außer in Sonderfällen), dass das immer geht. Jedenfalls denke ich mir das so.

_________________
"Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0."
- Hal Faber

Meine Homepage: http://laboda.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Sep 01, 2005 14:57 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Nov 13, 2004 11:00
Beiträge: 229
Wohnort: Steinhude
was spielt das für eine rolle? in den allermeisten fällen liegen bei einer kollision 2 schnittpunkte vor, weshalb in der gleichung dann nur die aussage größer als vorausgesetzt wird, wodurch die präzision nicht so besonders hoch sein muss. ob 2 gebilde als sich schneidend erkannt werden hängt nur in grenzfällen wirklich von der genauigkeit ab, im überwiegenden teil der fälle beeinflusst diese lediglich die korrektheit der schnittpunkte


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Sep 01, 2005 16:45 
Offline
DGL Member

Registriert: Mi Dez 15, 2004 20:36
Beiträge: 454
Wohnort: Wien, Österreich
Zitat:
ich mein damit ja ned die Mathematik, sondern, wie genau Delphi das sqrt berechnet.
Ok.Ich habe es vermutet.
Zitat:
was spielt das für eine rolle? in den allermeisten fällen liegen bei einer kollision 2 schnittpunkte vor, weshalb in der gleichung dann nur die aussage größer als vorausgesetzt wird, wodurch die präzision nicht so besonders hoch sein muss. ob 2 gebilde als sich schneidend erkannt werden hängt nur in grenzfällen wirklich von der genauigkeit ab, im überwiegenden teil der fälle beeinflusst diese lediglich die korrektheit der schnittpunkte
Bingo.

_________________
"Meine Mutter sagt : 'Dumm ist der, der Dummes tut'." - Forrest Gump


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Sep 01, 2005 17:11 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 17, 2002 12:07
Beiträge: 976
Wohnort: Tübingen
hmm, ok, ich gebe mich geschlagen :P

_________________
"Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0."
- Hal Faber

Meine Homepage: http://laboda.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Sep 02, 2005 21:11 
Offline
DGL Member

Registriert: Mi Dez 15, 2004 20:36
Beiträge: 454
Wohnort: Wien, Österreich
Hier ist ein kleines Demo in Delphi.


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

_________________
"Meine Mutter sagt : 'Dumm ist der, der Dummes tut'." - Forrest Gump


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Sep 02, 2005 21:14 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Cool, tausend dank *knuddl* :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Sep 03, 2005 02:25 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

mir ist noch ein fehler aufgefallen... das ganze funktioniert nicht bei einer senkrechten linie (bei waagerechten schon)... hab allerdings keine ahnung wie ich das beheb *schaut verwirrt auf den code - schaut dann lieb grinsend zu sniper_w*

Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Sep 03, 2005 11:14 
Offline
DGL Member

Registriert: Mi Dez 15, 2004 20:36
Beiträge: 454
Wohnort: Wien, Österreich
Ah ja sorry, ich habe vergessen, es zu erwähnen....ich poste dann die Korektur....;)

EDIT:
Ich hoffe es funktioniert...


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

_________________
"Meine Mutter sagt : 'Dumm ist der, der Dummes tut'." - Forrest Gump


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste


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.009s | 16 Queries | GZIP : On ]