Schreiben Sie eine Funktion in Sprache C ohne ungewöhnliche Beziehungen ähnlich dieser Beschreibung: matrixFromNormal <point3> Gibt eine Matrix zurück, deren lokaler Achsenvektor Z (d.h. normal) mit dem Zielvektor <point3> übereinstimmt. Die Matrixverdrängungskomponente ist [0.0.0.0]. Die Skalierungskomponentenwerte des für die Normalisierung des Vektors <point3> erforderlichen Rückwerts. Beispiele für Funktion (in Bezug auf: MatrixFromNormal([0.0.1]) gibt zurück (matrix3 [1.0.0], [0.1], [0.0.1], [0.0],]) MatrixFromNormal([0.1.1]) gibt zurück (matrix3 [0.707107.707107]] [1.41421,0.0] [0.1.1] [0.0]]
Dies ist die grundlegende Implementierung dieser Funktion in der C-Sprache: #include <math.h> struct matrix3 {float x[3];}; struct point3 {float x,y, z;}; struct matrix3 MatrixFromNormal(Strut point3} {strut matrix3 results; float ength = sqrt.x *normal.x *normal.y + noormal.y + noormal.z * cannormal.z; float invLuth_nuth_nuth/length; {strut matrix.xx0] = narmatrix.x; wenn invLength; wenn normal.x[0] = normal.[normal.y +normal.y + invL6n1th; sie sind wahrscheinlich nicht:1 xx0]