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?
> 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