In de 3-dimensionale ruimte kan een loodrechte projectie op een vlak (dit vlak bevat steeds het punt (0,0,0)) door een reële (3×3) projectiematrix P voorgesteld worden, zodat de projectie van het punt R (met coördinaten (x,y,z)) gegeven wordt door het vermenigvuldigen van de matrix P en de kolommatrix die de coördinaten van het te projecteren punt bevat, namelijk

P(xyz)

Anderzijds wordt een loodrechte projectie ook gekenmerkt door een normaalvector op het projectievlak.
In deze oefening schrijven we een functie projectievlak(), die van een gegeven projectiematrix P een normaalvector van het projectievlak als resultaat teruggeeft als kolomvector.
Om de ricthtingsvectoren van het projectievlak te vinden, zoeken we twee (lineair onafhankelijke) eigenvectoren van P met eigenwaarde 1 (punten gelegen in het projectievlak zelf blijven immers ongewijzigd door de projectie). Noemen we die eigenvectoren u en v , dan wordt een normaalvector n op het projectievlak gegeven door
n=u×v Je mag veronderstellen dat de argumentmatrix P inderdaad een reële projectiematix voorstelt (m.a.w. P is een reëele 3×3 matrix met een 2-voudige eigenwaarde gelijk aan 1).
TIP: gebruik de functie numpy.cross() om het kruisproduct van vectoren te berekenen.

Argumenten

Een 3×3 projectiematrix als NumPy-matrix.

Resultaat

De kolomvector (als NumPy matrix) die de normaalvector op het projectievlak voorstelt. Hierbij zorg je ervoor dat:

Voorbeeld

P = np.matrix([[0.982532751091703, 0.0, 0.13100436681222707], [0.0, 1.0, 0.0], [0.13100436681222707, 0.0, 0.017467248908296984]])
projectievlak(P) = [[0.13216372009101798], [0.0], [-0.9912279006826347]]