Schnelle Kollisionsroutinen

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
Creature
Beiträge: 678
Registriert: 29.08.2004 00:55
Wohnort: Frankfurt/Main

Beitrag von Creature »

NicTheQuick hat geschrieben:Kleines weiteres Beispiel mit dem Spiegeln einer Linie an einer imaginären Kugel. Imaginär deswegen, weil ich nicht weiß, wie ich mit OpenGL so leicht eine Kugel darstellen kann. :lol:
ich weiss nicht ob du damit was anfangen kannst, poste es aber trotzdem.
der folgende code ist ein 3D sample aus GLBasic, und die sprache nutzt OpenGL als api.
ich weiss ebenfalls nicht ob die X_anweisungen OpenGL oder GLBasic sind.
die mathematik sollte aber nachvollziehbar sein...

Code: Alles auswählen

// ------------------------------------------------------------- //
// -=#  SPHERE  #=-
// ------------------------------------------------------------- //
FUNCTION CreateSphere: num, r, n, col
LOCAL i,j, theta1, theta2, theta3, pi
	pi = ACOS(0)*2
	IF r < 0 THEN r = -r
	IF n < 3 THEN n = 3

	X_OBJSTART num
	FOR j=0 TO n/2-1

		theta1 = j * 2*pi / n - pi/2;
		theta2 = (j + 1) * 2*pi / n - pi/2;
		FOR i=0 TO n
			theta3 = i * 2*pi / n;
			X_OBJADDVERTEX	r*COS(theta2) * COS(theta3), r*SIN(theta2), _
							r*COS(theta2) * SIN(theta3), i/n, 2*(j+1)/n, col
			X_OBJADDVERTEX	r*COS(theta1) * COS(theta3), r*SIN(theta1), _
							r*COS(theta1) * SIN(theta3), i/n, 2*j/n, col
		NEXT
		X_OBJNEWGROUP
	NEXT
	X_OBJEND
ENDFUNCTION // n
Bildung kommt von Bildschirm und nicht von Buch, sonst hieße es ja Buchung.
Benutzeravatar
Scarabol
Beiträge: 1427
Registriert: 30.11.2005 21:00

Beitrag von Scarabol »

Hallo Leute,

kann mir jemand ein Beispiel zu LineHitsPlane basteln?
Ich hab schon diverse Varianten dieser Funktion gefunden, da ich aber gerade erst mit Vektoren anfange finde ich einfach nicht heraus wie ich die Funktionen einsetzen kann.

Gruß
Scarabol
Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea

PB-V: 4
WinXP
Benutzeravatar
Scarabol
Beiträge: 1427
Registriert: 30.11.2005 21:00

Beitrag von Scarabol »

Kann mir den keiner helfen?

Hier noch ein paar Details:

Die Ebene befindet sich im Koordinatenursprung und verläuft senkrecht zur y-Achse.
Mein Strahl beginnt bei x=0 y=-100 z=0 also genau 100 Einheiten über der Ebene.
Der Strahl endet bei x=0 y=100 z=0 also genau 100 Einheiten unter der Ebene.

Egal wie ich die Werte in die Funktion einsetzt bekomm ich immer nur murks raus. Kann mir vielleicht einer helfen und mir genauer sagen wie ich die Funktion anwenden muss?

Gruß
Scarabol
Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea

PB-V: 4
WinXP
Antworten