In de 3-dimensionale ruimte kan een loodrechte projectie op een vlak (dit vlak bevat steeds het punt )
door een reële () projectiematrix voorgesteld worden, zodat de projectie van
het punt (met coördinaten ) gegeven wordt door het vermenigvuldigen van de matrix
en de kolommatrix die de coördinaten van het te projecteren punt bevat, namelijk
Anderzijds wordt een loodrechte projectie ook gekenmerkt door een normaalvector op het projectievlak.
In deze oefening schrijven we een functie , die van een gegeven projectiematrix
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 met eigenwaarde 1 (punten gelegen in het projectievlak zelf blijven
immers ongewijzigd door de projectie). Noemen we die eigenvectoren en , dan wordt
een normaalvector op het projectievlak gegeven door
Je mag veronderstellen dat de argumentmatrix inderdaad een reële projectiematix voorstelt
(m.a.w. is een reëele matrix met een 2-voudige eigenwaarde gelijk aan 1).
TIP: gebruik de functie om het kruisproduct van vectoren te berekenen.
Argumenten
Een projectiematrix als NumPy-matrix.
Resultaat
De kolomvector (als NumPy matrix) die de normaalvector op het projectievlak voorstelt. Hierbij zorg je ervoor dat:
- de normaalvector genormeerd is (lengte van de vector is dus 1)
- de x-component van deze vector positief of 0 is
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]]