Steven
Posts:
4
Registered:
6/30/12


Re: Project points using null()
Posted:
Jun 30, 2012 6:10 AM


Roger, Given a plane defined in constants XCoeff, YCoeff, CCoeff (see http://www.mathworks.co.uk/support/solutions/en/data/11AVW5/index.html?solution=11AVW5) z = XCoeff * x + YCoeff * y + CCoeff how would you calculate Q and N for your method?
I tried Q = [1, 1, (XCoeff+YCoeff+CCoeff)]; N = [XCoeff, YCoeff, 1];
and while the projected points do all lie on the plane they are not orthogonally projected onto the plane?
Best wishes
Steven
> Let P be the m x 3 array of the 3D points to be projected, let Q be the 1 x 3 vector of the given point on the plane, let N be the 1 x 3 vector of the normal direction to the plane, and let P0 be the m x 3 array of points orthogonally projected from P onto the plane. Then do this: > > N = N/norm(N); % < do this if N is not normalized > N2 = N.'*N; > P0 = P*(eye(3)N2)+repmat(Q*N2,m,1); > > (You can also do that last line using bsxfun.) > > This can be derived from the singlepoint vector equation > > p0 = p  dot(pq),n)*n > > where p is a vector to a point to be projected, q is a vector to the point on the plane, n is the unit normal vector to the plane, and p0 is the orthogonal projection of p onto the plane. > > Roger Stafford

