How do I find the orthogonal projection of a point onto a plane

138 Ansichten (letzte 30 Tage)
luc
luc am 16 Mär. 2015
Beantwortet: canadarunner am 15 Mai 2024
Say I have a plane spanned by two vectors A and B. I have a point C=[x,y,z], I want to find the orthogonal projection of this point unto the plane spanned by the two vectors. How do I do this?
  2 Kommentare
Andrew Newell
Andrew Newell am 16 Mär. 2015
That's a math question. If you tell us the formula, we can tell you how to implement it.
luc
luc am 23 Mär. 2015
True, unfortunately I know how to implement it, but not the math.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Torsten
Torsten am 23 Mär. 2015
min: (x0+lambda*a0+mu*b0-x)^2 + (y0+lambda*a1+mu*b1-y)^2 + (z0+lambda*a2+mu*b2-z)^2
gives the distance squared from the point (x,y,z) to the plane
w=(x0,y0,z0)+lambda*(a0,a1,a2)+mu*(b0,b1,b2).
Differentiate the distance squared with respect to lambda and mu, set the partial derivatives to 0 and solve for lambda and mu.
If the result is lambda^, mu^, then
(x0,y0,z0)+(lambda^)*(a0,a1,a2)+(mu^)*(b0,b1,b2)
is the orthogonal projection of (x,y,z) onto the plane.
Best wishes
Torsten.

Weitere Antworten (2)

Noah
Noah am 3 Okt. 2019
This is an old post, but it deserves a simpler answer. Your plane is spanned by vectors A and B, but requires some point in the plane to be specified in 3D space. Call a point in the plane P. You can compute the normal (call it "n" and normalize it). Then the projection of C is given by translating C against the normal direction by an amount dot(C-P,n).
% compute the normal
n = cross(A, B) ;
n = n / sqrt(sum(n.^2)) ;
% project onto the plane
C_proj = C - dot(C - P, n) * n
  3 Kommentare
Nadezhda Lapina
Nadezhda Lapina am 7 Mai 2021
Bearbeitet: Nadezhda Lapina am 7 Mai 2021
P is any point that belongs to the plane

Melden Sie sich an, um zu kommentieren.


canadarunner
canadarunner am 15 Mai 2024
The vectorized version would be simply just
C_proj = C - (C - P) * n' * n;

Kategorien

Mehr zu Project Setup finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by