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

Aktuelle Zeit: So Jul 06, 2025 18:37

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: kleine Kollisionsabfrage
BeitragVerfasst: Di Jan 21, 2003 19:51 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jan 02, 2003 13:38
Beiträge: 104
Wohnort: Bremen
Nichts großes, ich möchte nur rausfinden ob eine 2d-linie mein 2d-dreieck berührt :)

Aya hat mich schon auf Jan Horns page hingewiesen doch scheint mir das etwas zu kompliziert im moment...und aya hat heute schon viel zu viel für mich getan... also wenn jemand anderes da eine idee hätte wär ich sehr dankbar

gruß Howard

achso, wichtig ist vielleicht zu sagen das sich das dreieck mit den pfeiltasten bewegen lässt.

_________________
------------------------------------------------------- <br>Wer andern eine Brawurst brät, <br>hat ein Bratwurst Bratgerät...... <br> <br>So long, Howard ^^ <br>-------------------------------------------------------


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 21, 2003 20:40 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 02, 2002 15:41
Beiträge: 867
Wohnort: nahe Stuttgart
Wieso ist das denn so schwierig :?:
Der Code ist meiner Meinung nach gut auskommentiert (collide.pas) und außerdem kann man viel mehr stolz sein, wenn man so etwas ohne die Hilfe der Anderen geschafft hat.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 21, 2003 20:45 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jan 02, 2003 13:38
Beiträge: 104
Wohnort: Bremen
aber man muss doch auch viel einfacher berechnen könne, is doch nur ein dreieck

_________________
------------------------------------------------------- <br>Wer andern eine Brawurst brät, <br>hat ein Bratwurst Bratgerät...... <br> <br>So long, Howard ^^ <br>-------------------------------------------------------


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 21, 2003 20:48 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 02, 2002 15:41
Beiträge: 867
Wohnort: nahe Stuttgart
Vielleicht wird es später keins mehr sein? :wink:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 21, 2003 20:51 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jan 02, 2003 13:38
Beiträge: 104
Wohnort: Bremen
tja hm, was soll ich da sagen, man lernt doch am besten wenn man am anfang und nicht gleich am ende anfängt. also wenn jemand ein kleines beispiel für das ob gennante problem hätte, i would appreciate that :)

_________________
------------------------------------------------------- <br>Wer andern eine Brawurst brät, <br>hat ein Bratwurst Bratgerät...... <br> <br>So long, Howard ^^ <br>-------------------------------------------------------


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 22, 2003 00:04 
Offline
DGL Member
Benutzeravatar

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

na ja, dann ich nochmal, mh? :)

Code:
  1. type
  2.  
  3. TVertex2D = Record
  4.  
  5.  &nbsp;X, Y: Single;
  6.  
  7. end;
  8.  
  9.  
  10.  
  11. var
  12.  
  13.  &nbsp;Dreieck: Array[1..3] of TVertex2D;
  14.  
  15.  &nbsp;Linie: Array[1..2] of TVertex2D;
  16.  
  17.  
  18.  
  19. function LineInTriangle(Triangle: Array[1..3] of TVertex2D; Line: Array of TVertex2D): Boolean;
  20.  
  21. var
  22.  
  23.  &nbsp;i: Integer;
  24.  
  25. begin
  26.  
  27.  &nbsp;for i:=Low(Line) to High(Line) do begin
  28.  
  29.  &nbsp; &nbsp;if (Line[i].X > Triangle[1].X) and (Line[i].X < Triangle[2].X) then begin
  30.  
  31.  &nbsp; &nbsp; &nbsp;if (Line[i].Y > Triangle[3].Y) and (Line[i].Y < Triangle[1].Y) then begin
  32.  
  33.  &nbsp; &nbsp; &nbsp; &nbsp;if Line[i].X < Triangle[3].X then begin
  34.  
  35.  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if Line[i].Y < (Triangle[3].Y - Triangle[1].Y) / 100 * (Line[i].X - Triangle[1].X) then
  36.  
  37.  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Result:=true;
  38.  
  39.  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Exit;
  40.  
  41.  &nbsp; &nbsp; &nbsp; &nbsp;end else begin
  42.  
  43.  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if Line[i].Y < (Triangle[2].Y - Triangle[3].Y) / 100 * (Triangle[3].X - Line[i].X) then
  44.  
  45.  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Result:=true;
  46.  
  47.  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Exit;
  48.  
  49.  &nbsp; &nbsp; &nbsp; &nbsp;end;
  50.  
  51.  &nbsp; &nbsp; &nbsp;end;
  52.  
  53.  &nbsp; &nbsp;end;
  54.  
  55.  &nbsp;end;
  56.  
  57.  &nbsp;Result:=False;
  58.  
  59. end;


Das hab ich mir grad im Kopf ausgedacht = KA ob es wirklich funktioniert :roll:

Au'revoir,
Aya~

PS: bestimmt irgendnen logik fehler drin, aber KA '^^


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 22, 2003 09:08 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jan 02, 2003 13:38
Beiträge: 104
Wohnort: Bremen
auf jedenfall besten Dank :)

Was in deinem kopf vorgeht möcht ich wissen ^^

siehst du toby, anhand eines praktischen beispiels lernt man viel besser

_________________
------------------------------------------------------- <br>Wer andern eine Brawurst brät, <br>hat ein Bratwurst Bratgerät...... <br> <br>So long, Howard ^^ <br>-------------------------------------------------------


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 22, 2003 12:49 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 02, 2002 15:41
Beiträge: 867
Wohnort: nahe Stuttgart
Zitat:
siehst du toby, anhand eines praktischen beispiels lernt man viel besser

Hatte gestern viel zu tun... :roll: aber Aya ist ja da ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 22, 2003 18:24 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jan 02, 2003 13:38
Beiträge: 104
Wohnort: Bremen
sooo, ich hab deinen code wie folgt abgeändert liebe aya :

Code:
  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  &nbsp; tvertex2d = record
  8.  
  9.  &nbsp; x,y:single;
  10.  
  11.  &nbsp; end;
  12.  
  13.  
  14.  
  15. procedure LineInTriangle;
  16.  
  17. var
  18.  
  19.  &nbsp;i: Integer;
  20.  
  21. begin
  22.  
  23.  &nbsp;dreieck[1].x := 0; &nbsp; dreieck[1].y := mainform.clientheight - 10;
  24.  
  25.  &nbsp;dreieck[2].x := 20; &nbsp;dreieck[2].y := mainform.clientheight - 30;
  26.  
  27.  &nbsp;dreieck[3].x := 40; &nbsp;dreieck[3].y := mainform.clientheight - 10;
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  &nbsp;for i:=Low(schusse) to High(schusse) do begin
  34.  
  35.  &nbsp; &nbsp;if (schusse[i].X > dreieck[1].X) and (schusse[i].X < dreieck[2].X) then begin
  36.  
  37.  &nbsp; &nbsp; &nbsp;if (schusse[i].Y > dreieck[3].Y) and (schusse[i].Y < dreieck[1].Y) then begin
  38.  
  39.  &nbsp; &nbsp; &nbsp; &nbsp;if schusse[i].X < dreieck[3].X then begin
  40.  
  41.  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if schusse[i].Y < (dreieck[3].Y - dreieck[1].Y) / 100 * (schusse[i].X - dreieck[1].X) then
  42.  
  43.  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;a:=a-1;
  44.  
  45.  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Exit;
  46.  
  47.  &nbsp; &nbsp; &nbsp; &nbsp;end else begin
  48.  
  49.  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if schusse[i].Y < (dreieck[2].Y - dreieck[3].Y) / 100 * (dreieck[3].X - schusse[i].X) then
  50.  
  51.  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;a:=a-1;
  52.  
  53.  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Exit;
  54.  
  55.  &nbsp; &nbsp; &nbsp; &nbsp;end;
  56.  
  57.  &nbsp; &nbsp; &nbsp;end;
  58.  
  59.  &nbsp; &nbsp;end;
  60.  
  61.  &nbsp;end;
  62.  
  63.  
  64.  
  65. end;
  66.  
  67.  
  68.  
  69.  



Code:
  1. for i:=Low(Schusse) to High(Schusse) do begin
  2.  
  3.  &nbsp;glpushmatrix;
  4.  
  5.  &nbsp; &nbsp;schusse[i].y:=schusse[i].y+2;
  6.  
  7.  &nbsp; &nbsp;gltranslatef(0,schusse[i].y,0);
  8.  
  9.  &nbsp; &nbsp;glcolor3f(1,0,0);
  10.  
  11.  &nbsp; &nbsp;glbegin(gl_lines);
  12.  
  13.  &nbsp; &nbsp; glvertex2f(schusse[i].x +20,30);
  14.  
  15.  &nbsp; &nbsp; glvertex2f(schusse[i].x +20,50);
  16.  
  17.  &nbsp; &nbsp;glend();
  18.  
  19.  
  20.  
  21.  &nbsp; lineintriangle;
  22.  
  23.  &nbsp;glpopmatrix;
  24.  
  25.  &nbsp;end;


das zweite is die prozedur für die linie

Code:
  1. glpushmatrix;
  2.  
  3.  &nbsp;glcolor3f(0,0,1);
  4.  
  5.  &nbsp;glBindTexture(GL_TEXTURE_2D, tex2);
  6.  
  7.  &nbsp;gltranslatef(mx,my,0);
  8.  
  9.  &nbsp;glbegin(gl_triangles);
  10.  
  11.  &nbsp; glvertex2f(0,clientheight-10);
  12.  
  13.  &nbsp; glvertex2f(20,clientheight-30);
  14.  
  15.  &nbsp; glvertex2f(40,clientheight-10);
  16.  
  17.  &nbsp;glend();
  18.  
  19.  &nbsp;glpopmatrix;


und dat is das dreieck, funzt aber nich das ganze :( also, ich mein das proggi läuft aber die kollision klappt nich :(

_________________
------------------------------------------------------- <br>Wer andern eine Brawurst brät, <br>hat ein Bratwurst Bratgerät...... <br> <br>So long, Howard ^^ <br>-------------------------------------------------------


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 22, 2003 19:28 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jan 02, 2003 13:38
Beiträge: 104
Wohnort: Bremen
ok ich geb zu, das is ziemlicher schwachsin so, da sich die x bzw y koordinaten sowohl von der linie als auch von dem dreieck nicht ändern. es ändert sich durch gltranslatef(); ja lediglich die position. Hat einer ne Idee für ne Kollisionsabfrage anhand einer variablen position der beiden zielobjekte? das wär nett :)

_________________
------------------------------------------------------- <br>Wer andern eine Brawurst brät, <br>hat ein Bratwurst Bratgerät...... <br> <br>So long, Howard ^^ <br>-------------------------------------------------------


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 22, 2003 20:10 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 02, 2002 15:41
Beiträge: 867
Wohnort: nahe Stuttgart
Einfach die Dreieck[x] und/oder schuesse[x] mitverändern?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 22, 2003 20:47 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jan 02, 2003 13:38
Beiträge: 104
Wohnort: Bremen
das leuchtet mir nicht ein...nach möglichkeit würd ich gern die zeichenprozeduren des dreiecks bzw der linie beibehalten, ich bräuchte also eine kollisionsabfrage für die translatef(); bewegung....

_________________
------------------------------------------------------- <br>Wer andern eine Brawurst brät, <br>hat ein Bratwurst Bratgerät...... <br> <br>So long, Howard ^^ <br>-------------------------------------------------------


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 22, 2003 21:27 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jan 02, 2003 13:38
Beiträge: 104
Wohnort: Bremen
okay, habs jetzt soweit gelöst :)

nurnoch ne kleine frage. wenn ich als y-koordinaten schreibe:

z.B.

glvertex2f(x,linie[i].y);

wie kann ich nun dieser linie(i) einen anfangswert zuweisen? ich mein das is wichtig bei soner linie :) danach kann man die dann ja auch problemlos verändern, nur der anfangswert wäre halt wichtig :)

_________________
------------------------------------------------------- <br>Wer andern eine Brawurst brät, <br>hat ein Bratwurst Bratgerät...... <br> <br>So long, Howard ^^ <br>-------------------------------------------------------


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


Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 19 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.010s | 16 Queries | GZIP : On ]