Vectorverlängerung um Kugel zu schneiden, brauche Formel

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
mpz
Beiträge: 505
Registriert: 14.06.2005 15:53
Computerausstattung: Win 11 Pro, 48 GB Ram, Intel I7 CPU und RX4070 Grafikkarte, PB (4/5) 6.12LT
Wohnort: Berlin, Tempelhof

Vectorverlängerung um Kugel zu schneiden, brauche Formel

Beitrag 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
Working on :lol: - LibSGD - MP3D Engine - 8)
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7032
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

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

Beitrag 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)
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
mpz
Beiträge: 505
Registriert: 14.06.2005 15:53
Computerausstattung: Win 11 Pro, 48 GB Ram, Intel I7 CPU und RX4070 Grafikkarte, PB (4/5) 6.12LT
Wohnort: Berlin, Tempelhof

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

Beitrag von mpz »

Hi Stargate,

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

Gruß Michael
Working on :lol: - LibSGD - MP3D Engine - 8)
Antworten