Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Collision Detection-Sphere<->Quad

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
19.07.2008, 09:25 Uhr
WiredCoder



Hey Leute,
wie bereits gepostet hab ich die Kollision zwischen zwei Kugeln erfolgreich absolviert. Jetzt versuche ich mich an einer Kollision zwischen einer vorhandenen Kugel und einer Fläche. Dazu dachte ich mir, rechne ich einfach wieder:

Code:
//Steve Wegener-Collision Detection (C++-OpenGL)
//Collisiion Detection= Fläche<->Kugel


kugel_x = 10.0;
kugel_y = 10.0;
kugel_z = 10.0;
kugel_radius=5.0;

wand_x = 1.0;
wand_y = 1.0;
wand_z = 1.0;

float distanz;

distanz = sqrt(((kugel_x-wand_x)*(kugel_x-wand_x))+((kugel_y-wand_y)*(kugel_y-wand_y))+((kugel_z-wand_z)*(kugel_z-wand_z)));
             = sqrt((kugel_x-wand_x)^²)+((kugel_y-wand_y)^²)+((kugel_z-wand_z)^²);

____________________


distanz = sqrt(((kugel_x(10.0)-wand_x(1.0))*((kugel_x(10.0)-wand_x(1.0)))+((kugel_y(10.0)-wand_y(1.0))+(kugel_y(10.0)-wand_y(1.0))+((kugel_z(10.0)-wand_z(1.0))*((kugel_z(10.0)-wand_z(1.0)));
             = sqrt((kugel_x(10.0)-wand_x(1.0))^²)+((kugel_y(10.0)-wand_y(1.0))^²)+((kugel_z(10.0)-wand_z(1.0))^²);
             = sqrt(((10.0)-(1.0))^²)+(((10.0)-(1.0))^²)+(((10.0)-(1.0))^²);

____________________

distanz = sqrt(((10.0)-(1.0))^²)+(((10.0)-(1.0))^²)+(((10.0)-(1.0))^²);
             = sqrt(((9.0)^2)+((9.0)^2)+((9.0)^2));

____________________

distanz = 234.0;



(Bitte von der genauen Definierung absehen! Ist als mathematische Formel aufgeschrieben!)
So bekomme ich ja auch die genaue Distanz zwischen der Wand und meiner Kugel. Die Abfrage würde dann so lauten:

Code:
if(distanz= kugel_radius > wand_x+kugel_radius)
{
...
}


Würde das so funktionieren? Die mathematische Formel hab ich immer wieder definiert deswegen sieht sie etwas wüst aus ;-).
Wäre super Dankbar für Antworten!
--
Ich würde mich sehr über einen Besuch auf meiner Website freuen: www.Online-Programmierung.com
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
19.07.2008, 17:19 Uhr
0xdeadbeef
Gott
(Operator)


Um...wenn ich richtig verstehe, was du da vorhast,

C++:
if(distanz < kugel_radius) {
  // ...
}


?

Dein Vorschlag da sieht mir jedenfalls ziemlich unfugig aus - das klammert sich wie folgt:

C++:
if(distanz = (kugel_radius > wand_x + kugel_radius)) {


...was sich bei wand_x > 0, wie in diesem Fall, zu

C++:
if(distanz = false) {
  // ...
}


auflöst. Und weil = kein Vergleich, sondern eine Zuweisung ist und der Ausdruck deshalb immer zu false ausgewertet wird, kannst du dann auch gleich

C++:
distanz = false;


bzw.

C++:
distanz = 0;


schreiben. Das ergibt hier in meinem Verständnis nur wenig Sinn.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: