Ik bereken de normaalvector naar een vlakke ax + door + cz + d = 0
Volgens het boek:
De normaalvector N wordt vaak genormaliseerd naar de eenheidslengte omdat in dat geval de vergelijking
d = N ⋅Q + D
de afstand met teken geeft van het vlak tot een willekeurige punt Q. Als d = 0, dan ligt het punt Q in het vlak. Als d> 0, zeggen we dat het punt Q aan de positieve kant van het vlak ligt, aangezien Q aan de kant zou zijn waarin de normaalvector wijst.
Hoe krijg je de N (normaalvector)? Bedankt
Antwoord
Van MathWorld :
Gegeven het vliegtuig
Dan is de normale vector
De normale eenheidsvector n wordt gegeven door:
Daarom voor het vlak 5x+2y+3z-1=0
,
De normale vector N is
N = [5,2,3]
De grootte | N | is
| N | = sqrt (5 ^ 2 + 2 ^ 2 + 3 ^ 2)
| N | = 6.1644
De normale eenheidsvector n is daarom ongeveer:
n = N / | N |
n = [0,8111, 0,3244, 0,4866]
die u kunt controleren door de lengte van n te meten.
Code:
import math def mag(V): return math.sqrt(sum([x*x for x in V])) def n(V): v_m = mag(V) return [ vi/v_m for vi in V]
In een interactieve python-shell:
>>> N = [5,2,3] >>> mag(N) 6.164414002968976 >>> n(N) [0.8111071056538127, 0.3244428422615251, 0.48666426339228763] >>> mag(n(N)) 1.0