Seite 1 von 1

Vectorverlängerung um Kugel zu schneiden, brauche Formel

Verfasst: 29.04.2012 12:51
von mpz
Hallo an Alle,

ich habe ein mathematische Frage und hoffe Ihr könnt helfen.

Gegeben ist ein Nullpunkt und ein 3d Vector v1.xyz mit x,y,z Koordinate. Jetzt möchte ich diesen Vector auf die Position einer 3d Kugel verlängern bzw verkürzen. Diese Kugel kann ein Einheitsgrösse haben (oder auch später variable gross sein). Mit welcher Formel kann ich denn den Schnittpunkt ermitteln bzw die x,y,z Koodinate wenn man den Vector verlänger bzw verkürzt

Hintergrund: Ich bin daber eigene Shader zu entwicklen. jetzt möchte ich ein beliebiges Mesh zu (z.B.) einer Kugel formen. Ich kennen den nullpunkt des Meshs (ist 0,0,0) und habe die einzelnen Vertexe mit x,y,z Werten. Wenn man diese auf eine Kugel projeziert wird eine Kugel draus. Dieser "morphing" wird später natürlich als Bewegung erfolgen.

Die spätere Frage ist ob man das auch für andere Grundformen (Würfel etc) machen kann

Würde mich freuen wenn Ihr mir helfen könntet, Danke.

Gruß Michael

Re: Vectorverlängerung um Kugel zu schneiden, brauche Formel

Verfasst: 29.04.2012 13:04
von STARGÅTE
Du brauchst hier garnicht den "Umweg" über Schnittpunkte usw. machen.
Wenn dein Objekt (mit seinen 3D-Punkten/koordinaten) alle auf eine Kugel abgebildet werden sollen, reicht es ja einfach die Vektoren zu normieren.

Code: Alles auswählen

Structure Vector3D
	X.f
	Y.f
	Z.f
EndStructure

Procedure Normalize(*Vector3D.Vector3D)
	Protected Length.f
	With*Vector3D
		Length = Sqr(\X*\X+\Y*\Y+\Z*\Z)
		If Length
			\X / Length
			\Y / Length
			\Z / Length
		EndIf
	EndWith
EndProcedure
Dann liegen alle normalisierten Vektoren auf einer Kugel (in dem Fall der 1-Kugel)

Re: Vectorverlängerung um Kugel zu schneiden, brauche Formel

Verfasst: 29.04.2012 17:37
von mpz
Hi Stargate,

danke die Lösung war einfach und mein nächstes Shader Tutorial gerettet...

Gruß Michael