Seite 3 von 3

Verfasst: 22.12.2005 19:22
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

Verfasst: 30.03.2007 17:17
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

Verfasst: 01.04.2007 12:48
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