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

Anonymous

unregistriert

1

28.05.2003, 19:01

Frage zu 3D Kollisionstutorial Teil 2

Hi David,

im 2. Teil deines 3D Kollisionstutorial verwendest du in der Funktion LineHitsTriangle später die Methode PlaneFromPointNormal, um eine Plane aus dem Punkt und dem Normalvektor zu erhalten. Diese Methode wird aber leider nicht näher erläutert, sodass ich gar nicht weiß, wie ich den Normalvektor neu festlegen kann, nachdem die Plane geändert wurde. In der Funktion PlaneFromPoints steht nur die Methode über das Kreuzprodukt der 3 Punkte, jedoch habe ich ja nur die Normale und einen Punkt.

Ich hoffe ich konnte mein Problem verständlich machen.
Danke für Antwort!!!

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

28.05.2003, 19:09

Quellcode

1
2
3
4
5
tbPlane tbPlaneFromPointNormal(const tbVector3& p,
                               const tbVector3& n)
{
    return tbPlane(n, -n.x * p.x - n.y * p.y - n.z * p.z);
}

Anonymous

unregistriert

3

28.05.2003, 21:54

Danke für die schnelle Antwort, nur wie erstellt die Funktion tbPlane mit den 2 Argumenten die Plane? Und wie lässt sich der Normalvektor in dem Zusammenhang errechnen?

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

28.05.2003, 22:10

Sorry, aber ich verstehe das Problem im Moment nicht! Der Normalvektor ist Teil der Ebene. Die ersten drei Variablen (a, b, c) sind der Normalvektor.

Anonymous

unregistriert

5

28.05.2003, 23:01

Ich mein, wie kannst du mit 2 Argumenten eine Plane bestimmen? Da deine ganzen Funktionen und die Plane Struktur nicht angegeben war, hab ich einfach die von DirectX genommen, die jedoch nicht dieses n in der Struktur haben. Bei der Funktion PlaneFromPoints hast du angegeben wie man n errechnen kann, jedoch bei der Funktion PlaneFromPointNormal nicht.

Ich hoffe ich konnte das jetzt verständlich machen.

Ghandi

Treue Seele

Beiträge: 218

Wohnort: Berlin

Beruf: Student

  • Private Nachricht senden

6

28.05.2003, 23:12

Weis nich ob dir das jetz hilft, aber da ich in opengl code musste ich auch sämtliche Funktionen aus Davids tut neu schreiben und meine PlaneFromNormal sieht so aus:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
PLANE EASYGL::PlaneFromPointNormal(VECTOR v, // Die drei Punkte
                      VECTOR n)
{
    PLANE Plane;

    Plane.v=n;

    // Das fehlende d berechnen
    Plane.d = -(v.X * Plane.v.X + v.Y * Plane.v.Y + v.Z * Plane.v.Z);

    return Plane;
}


Meine Planestruktur so:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
struct VECTOR
{
    float X;
    float Y;
    float Z;
};


struct PLANE
{
    VECTOR v;
    float d;
};
Alles ist gut so wie es ist, am besten ist jedoch das niemand dies akzeptiert.

error C2039: 'DerSinn' : ist kein Element von 'CLeben'

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

7

29.05.2003, 07:03

Ja, genau so. Habe das jetzt auch noch in das zweite Tutorial eingebaut.

Werbeanzeige