NORMALIZEPLANE Normalize parametric representation of a plane. PLANE2 = normalizePlane(PLANE1); Transforms the plane PLANE1 in the following format: [X0 Y0 Z0 DX1 DY1 DZ1 DX2 DY2 DZ2], where: - (X0, Y0, Z0) is a point belonging to the plane - (DX1, DY1, DZ1) is a first direction vector - (DX2, DY2, DZ2) is a second direction vector into another plane, with the same format, but with: - (x0 y0 z0) is the closest point of plane to the origin - (DX1 DY1 DZ1) has norm equal to 1 - (DX2 DY2 DZ2) has norm equal to 1 and is orthogonal to (DX1 DY1 DZ1) See also: planes3d, createPlane --------- author: David Legland INRA - TPV URPOI - BIA IMASTE created the 21/02/2005.
0001 function plane2 = normalizePlane(plane1) 0002 %NORMALIZEPLANE Normalize parametric representation of a plane. 0003 % 0004 % PLANE2 = normalizePlane(PLANE1); 0005 % Transforms the plane PLANE1 in the following format: 0006 % [X0 Y0 Z0 DX1 DY1 DZ1 DX2 DY2 DZ2], where: 0007 % - (X0, Y0, Z0) is a point belonging to the plane 0008 % - (DX1, DY1, DZ1) is a first direction vector 0009 % - (DX2, DY2, DZ2) is a second direction vector 0010 % into another plane, with the same format, but with: 0011 % - (x0 y0 z0) is the closest point of plane to the origin 0012 % - (DX1 DY1 DZ1) has norm equal to 1 0013 % - (DX2 DY2 DZ2) has norm equal to 1 and is orthogonal to (DX1 DY1 DZ1) 0014 % 0015 % See also: 0016 % planes3d, createPlane 0017 % 0018 % --------- 0019 % author: David Legland 0020 % INRA - TPV URPOI - BIA IMASTE 0021 % created the 21/02/2005. 0022 % 0023 0024 % HISTORY 0025 % 21/08/2009 compute origin after computation of vectors (more precise) 0026 % and add support for several planes. 0027 0028 % compute first direction vector 0029 d1 = normalizeVector3d(plane1(:,4:6)); 0030 0031 % compute second direction vector 0032 n = normalizeVector3d(planeNormal(plane1)); 0033 d2 = -normalizeVector3d(crossProduct3d(d1, n)); 0034 0035 % compute origin point of the plane 0036 origins = repmat([0 0 0], [size(plane1, 1) 1]); 0037 p0 = projPointOnPlane(origins, [plane1(:,1:3) d1 d2]); 0038 0039 % create the resulting plane 0040 plane2 = [p0 d1 d2];