Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

27.03.2010, 16:18

sphere kolision

hallo,

ich habe versucht eine kolision zwischen zwei spheren im 2d raum zu erzeugen jedoch hab ich ein problem.
die eine bewegliche sphere bewegt sich höchstens zu der zu der x koordinate der zweiten und nach oben unten und links kann sich sich nur frei bewegen.

code:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
int DrawGLScene(GLvoid)
{

  glTranslatef(xx1,yy1,-5.0f);
  gluSphere(quadratic,0.5f,32,32);// Draw A Sphere

  glTranslatef(-xx1,-yy1,5.0f);

  glTranslatef(xx2,yy2,-5.0f);
  gluSphere(quadratic,0.5f,32,32);// Draw A Sphere

  glTranslatef(-xx2,-yy2,5.0f);
}


if(keys[VK_UP]&&1.0f<(yy2-yy1)/(sin(atan(yy2-yy1)/(xx2-xx1))))
{
    yy1+=0.05f;
}

if(keys[VK_DOWN]&&1.0f<(yy2-yy1)/(sin(atan(yy2-yy1)/(xx2-xx1))))
{
    yy1-=0.05f;
}

if(keys[VK_LEFT]&&1.0f<(yy2-yy1)/(sin(atan(yy2-yy1)/(xx2-xx1))))
{
    xx1-=0.05f;
}

if(keys[VK_RIGHT]&&1.0f<(yy2-yy1)/(sin(atan(yy2-yy1)/(xx2-xx1))))
{
    xx1+=0.05f;
}



mfg

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

2

27.03.2010, 16:34

sag mal... sprichst du auch so wie du schreibst?
ich schreib auch nicht gerade perfekt aber man sollte wenigstens noch einmal drüber gehen...

Zitat

die eine bewegliche sphere bewegt sich höchstens zu der zu der x koordinate der zweiten und nach oben unten und links kann sich sich nur frei bewegen .


wo liegt dein problem?

edit: übrigens treffen sich zwei kugeln oder in dem fall kreise wenn der weg zwischen den beiden mittelpunkten kürzer ist als die summe beider radien.

3

27.03.2010, 16:50

also ich versuchs nochmal:
mein problem ist das der bwegliche kreis mit einer unsichtbaren senkrechten gerade die auf der höhe der x koordinate der unbeweglichen sphere liegt.

und zum edit:
ich hab festgestellt das diese regel nur bei kugeln(kreisen) zutrifft dessen radien gleich sind

mfg

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

4

27.03.2010, 17:02

Zitat von »"Fighter19"«

ich hab festgestellt das diese regel nur bei kugeln(kreisen) zutrifft dessen radien gleich sind


das ist aber unlogisch oO
hast du die radien addiert und nicht einfach den durchmesser einer der beiden kreise genommen?

was ist denn dein ziel?

5

27.03.2010, 17:18

das ist jetztz nicht so wichtig wie die jetztz kolidieren nur das sie in meinem programm an der falschen stelle kolidieren.

CBenni::O

1x Contest-Sieger

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

6

27.03.2010, 17:24

Hä?

Ich verstehe überhaupt nichts mehr...

Drücke dich BITTE mal klarer aus und schreibe ggf. mal mehr als nur zwei sätze...

Sonst kann ich dir nicht helfen...
Kauf dir mal ein gescheites buch (am besten das von David) und arbeite das dann durch. Dann brauchst du uns nicht wegen jeder Kleinigkeit zu fragen.

Wie war das mit dem learning by Forum? :badgrin:

mfg CBenni::O
Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.
42!
Aufräumen kann jeder, nur das Genie überblickt das Chaos!
Metal will never die!
1. Sppro Gamecontest - mein Beitrag

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

7

27.03.2010, 17:27

lol natürlich ist es wichtig. es gibt einen einfacheren und wahrscheinlich auch schnelleren weg der sicher funktioniert.

wenn du dir nicht helfen lassen willst dann frag nicht!

CBenni::O

1x Contest-Sieger

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

8

27.03.2010, 17:50

Man könnte evtl. auch jede Kugel in eine Dreiecksliste verwandeln, mit jeweils 1 Mio. Dreiecken, für jedes Dreieck überprüfen, ob es ein anderes schneidet, jede Kugel 2000mal rendern (dazu die Dreiecke nach ihrem z-Wert sortieren und ggf. in kleinere Teildreiecke aufteilen), den Backbuffer leeren, den Mittelwert aller x-, y- und z-Positionen aller gefundenen Vertices bilden und dann hast du die Schnittposition. :roll:

Ehrlich!
Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.
42!
Aufräumen kann jeder, nur das Genie überblickt das Chaos!
Metal will never die!
1. Sppro Gamecontest - mein Beitrag

9

27.03.2010, 17:54

Beim 2Dimesionalen brauchst du keine 1Mio Dreiecke ;) Da reichen 4 oder 5 :lol:
Metal ist keine Musik sondern eine Religion.

10

27.03.2010, 18:04

so ich hab mmir jetzt mal die mühe gemacht es grafisch darzustellel weil ich es wohl nicht richtig erklären kann.

http://www.imgbox.de/users/public/images/w52203q56.png

der weise strich ist nicht zu sehen sondern zeigt nur wo eine kolision erkannt wird die nicht erkannt werden soll

mfg

Werbeanzeige