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

Aktuelle Zeit: Fr Jul 18, 2025 11:16

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



Ein neues Thema erstellen Auf das Thema antworten  [ 25 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Mo Mär 01, 2004 17:15 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
Ja so raff auch ich das ^^
Ich probier das gerade mal aus ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mär 01, 2004 18:05 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
Richtung1.x:=p2.x-p1.x;
Richtung1.y:=p2.y-p1.y;

Richtung2.x:=q2.x-q1.x;
Richtung2.y:=q2.y-q1.y;


a1:=p2.y-p1.y;
b1:=p1.x-p2.x;

a2:=q2.y-q1.y;
b2:=q1.x-q2.x;

Das wieder spricht sich oder?
b1:=p1.x-p2.x;
soll
b1:=p2.x-p1.x;
heißen oder?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mär 05, 2004 13:51 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
Nochmal ich :-( Ich habe mir folgende Procedure geschrieben, ich glaube da klappt schon etwas mit der berechnung nicht...
Code:
  1. PROCEDURE TMapfunk.Check_Coll(x1,y1,z1: single);
  2. VAR
  3. c2, c1, a1, b1, a2, b2 :single;
  4. BEGIN
  5.  
  6. a1 := x_last-x1;
  7. b1 := z_last-z1;
  8. a2 := ziel_p2.x - ziel_p1.x;
  9. b2 := ziel_p2.z - ziel_p1.z;
  10. c1:=a1*x_last+b1*z_last;
  11. c2:=a2*Ziel_p1.x+b2*ziel_p1.z;
  12. ziel_punktx :=(     c1   *b2-  c2  *b1)/(a1*b2-a2*b1);
  13. ziel_punktz :=(a1*  c2  -a2*   c1   )/(a1*b2-a2*b1);
  14.  
  15. if (x_last < ziel_punktx) and (x1 > ziel_punktx) or (x_last > ziel_punktx) and (x1 < ziel_punktx) then
  16. ziel_trifft := True
  17. else
  18. ziel_trifft := False;
  19.  
  20. if ziel_trifft then
  21. if (z_last < ziel_punktz) and (z1 > ziel_punktz) or (z_last > ziel_punktz) and (z1 < ziel_punktz) then
  22. ziel_trifft := True
  23. else
  24. begin
  25. ziel_trifft := False;
  26. end;
  27.  
  28. if ziel_trifft then
  29. if (ziel_p1.x < ziel_punktx) and (ziel_p2.x > ziel_punktx) or (ziel_p1.x > ziel_punktx) and (ziel_p2.x < ziel_punktx) then
  30. ziel_trifft := True
  31. else
  32. begin
  33. ziel_trifft := False;
  34. end;
  35.  
  36. if ziel_trifft then
  37. if (ziel_p1.z < ziel_punktz) and (ziel_p2.z > ziel_punktz) or (ziel_p1.z > ziel_punktz) and (ziel_p2.z < ziel_punktz) then
  38. ziel_trifft := True
  39. else
  40. ziel_trifft := False;
  41.  
  42. if ziel_trifft then
  43. spieler.runden := spieler.runden + 1;
  44.  
  45. x_last := x1;
  46. y_last := y1;
  47. z_last := z1;
  48. END;


Oder meinste mir ist da ein Fehler beim übergeben der Punkte passiert? was eigentlich nicht sein kann/darf.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mär 05, 2004 15:00 
Offline
DGL Member

Registriert: Di Okt 07, 2003 12:26
Beiträge: 23
Also wenn es "nur" Geraden sein sollen, dann kann man es sehr einfach machen:
Wenn Gearade a <> Gerade b ist, dann schneiden sie sich.
Ansonsten gibt es meines Wissen noch eine Methode:
wenn die Gleichungen die Form
y = a[1]x + b[1] ^
y = a[2]x + b[2] haben, dann gehts so:
--------------------------------
=>
a[1]x + b[1] = a[2]x + b[2].
Nach x aufgeloößt erhält man den Schnittpunkt der Geraden.
Hoffe ich zumindest das es so war. :?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mär 05, 2004 16:10 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
Es sollen strecken sein, das überprüfe ich mit den If-Abfragen, doch das was du eben gesagt hast ist ganz anders als das was Lars schrieb.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mär 05, 2004 16:19 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Wie schon bereits gesagt lassen sich mit der Form:
y = a[1]x + b[1] die ja das gleiche ist wie y=mx+b nicht alle Geraden darstellen. Man kann damit nur Geraden, die auch eine Funktion sind ausdrücken und das sind z.B. alle senkrechten Geraden mit einer Richtung von (0,1) nicht.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mär 05, 2004 16:24 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
Jo Lars, aber irgendwie stimmt da was nicht :-/
Ich hab da oben was gepostet, kannste das mal prüfen bitte :-(


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mär 05, 2004 16:29 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Was ist denn bei dir z. Ich dachte es geht um 2D?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mär 05, 2004 16:32 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
Jo, 2D also, es ist ein 3D raum, wo ich x und z nehme, da mich die Höhe nicht stört, nimm z als y und es ist was du brauchst ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mär 05, 2004 17:37 
Offline
DGL Member

Registriert: Di Okt 07, 2003 12:26
Beiträge: 23
LarsMiddendorf hat geschrieben:
Wie schon bereits gesagt lassen sich mit der Form:
y = a[1]x + b[1] die ja das gleiche ist wie y=mx+b nicht alle Geraden darstellen. Man kann damit nur Geraden, die auch eine Funktion sind ausdrücken und das sind z.B. alle senkrechten Geraden mit einer Richtung von (0,1) nicht.

Das ist mir schon klar, aber das ist gerade mal ein Sonderfall!
Dann müste man das halt für den Sonderfall extra Testen, was ja auch nicht schwer ist, da ja jede Gerade, die nicht senkrecht ist, die senkrechte Gerade schneidet.
So ich hab nochmal nachgeguckt, und es geht dann so:
Du stellst das als LIneares Gleichungsystem dar.
Und jetzt kannst du es einfach auflösen.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 25 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 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.007s | 15 Queries | GZIP : On ]