Steven
Posts:
3
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/1-1AVW5/index.html?solution=1-1AVW5) 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 single-point vector equation > > p0 = p - dot(p-q),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
|
|