Eine hübsche Anwendung, sowohl der Schraubenlinie als auch der homogenen Koordinaten-Transformation zeigt ein vereinfachtes Auto, das eine Parkhausrampe hinauffährt.
function voidbk = parkhausfilm(varargin); % parkhausfilm.m simple Simulation der Bewegung % eines vereinfachten Autos auf einer Parkhausrampe figure(1); clf; voidbk = 0; winpr = 40*pi/180; tetpr = -15*pi/180; wfmxl = [0 0.3 0.3 0.5 0.9 1.1 1.1 3.5 3.5 3.7 4.1 4.3 4.3 4.7]; wfmzl = [ 0.3 0.3 0.3 0 0 0.3 0.3 0.3 0.3 0 0 0.3 0.3 0.3 ]; wfmyl = 0.75*ones(1,14) ; wfmyl(3:6) = 0.68; wfmyl(9:12) = 0.68; wdxl = [0.1 1.7 3.4 4.4 4.7 4.4 3.4]; wdzl = [0.6 1.7 1.7 1.2 0.3 1.2 1.7]; wfxl = [0.1 0.9 2.2 2.4]; wfzl = [0.6 1.15 1.25 1.7]; wfmx = [wfmxl fliplr(wfmxl) 0 wdxl fliplr(wdxl) 0 ... wfxl fliplr(wfxl) 0.1 0.1 0.9 0.9 1.7 1.7] - 3.5; wfmy = [wfmyl -fliplr(wfmyl) 0.75 0.75*ones(1,7) -0.75*ones(1,7) -0.75 ... -0.75*ones(1,4) 0.75*ones(1,4) 0.75 -0.75 -0.75 0.75 0.75 -0.75] + 6; wfmz = [wfmzl fliplr(wfmzl) 0.3 wdzl fliplr(wdzl) 0.3 ... wfzl fliplr(wfzl) 0.6 0.6 1.15 1.15 1.7 1.7] ; % carsim = [wfmy ; -wfmx ; wfmz ; ones(1,58)] ; URO = [1 0 0 0 ; 0 cos(0.1) -sin(0.1) 0; ... 0 sin(0.1) cos(0.1) 0 ; 0 0 0 1 ]; % carpos = URO*carsim; t = (0:0.005:1)*2*pi; xi = 4.0*cos(t); yi = 4.0*sin(t); xa = 8.8*cos(t); ya = 8.8*sin(t); z = t/2/pi*4.4; winpr = 74/180*pi; tetpr = -19/180*pi; % innerer Rand der Helix hdi = plot3ers(xi,yi,z, winpr, tetpr, 0,-5, 'b', 2) ; axis([-10 10 -10 10]); axis square; hold on axis off hdtx = text(-8,6,'Parkhaus-Rampe', ... 'FontUnits','points','FontSize',18 , ... 'Fontweight','demi'); % Aeusserer Rand der Helix hdo = plot3ers(xa,ya,z, winpr, tetpr, 0,-5, 'b', 2); % for k=1:201 tx = t(k); T = [cos(tx) -sin(tx) 0 0; sin(tx) cos(tx) 0 0; 0 0 1 z(k); 0 0 0 1]; Q=T*carpos; phn = plot3ers(Q(1,:),Q(2,:),Q(3,:), winpr, tetpr, 0,-5, 'r', 2); if k > 1 delete(pho) end pho = phn; if k ==5 % pause end pause(0.04) end pause(0.8) delete(hdi); delete(hdo); delete( pho) delete(hdtx) function plhdb = plot3ers(x,y,z,w,t,xof,yof,col,thik) % function plhdb = plot3ers(x,y,z,w,t,xof,yof,col,thik) % Ersatz fuer plot3 % mit Zusatz-Parametern w , t horizontaler und vertikaler Drehwinkel % xof, yof x- und y- Offset (Zusatz) nach Projektion in 2D % col Farbe und thik Liniendicke % Rueckgabe plhdb plot-handle des 2D plot-Aufrufs zrm = [cos(w) -sin(w) 0; sin(w) cos(w) 0 ; 0 0 1]; yrm = [ cos(t) 0 -sin(t) ; 0 1 0; sin(t) 0 cos(t) ]; trko = yrm*zrm*[x;y;z]; plhdb = plot(trko(2,:)+xof, trko(3,:)+yof,col,'LineWidth',thik); end end