Contents
- Zusammengesetzter Koerper: Kreiskegel, Kreiszylinder und Halbkugel
- Daten
- Kegel mit Radius R und Hoehe H
- Zylinder mit Radius R und Hoehe 2H
- untere Halbkugel mit Radius R
- wir kombinieren die 3 Koerper
- Koerper in 10° Schritten um die Achse (0,1,1), ausgehend von (2,1,9) rotieren lassen
- Wiederhole die Bildfolge 2 mal
Zusammengesetzter Koerper: Kreiskegel, Kreiszylinder und Halbkugel
clear; clc; close all
Daten
R = 3; H = 5; n = 31; % Radius, Hoehe des Kegels
Kegel mit Radius R und Hoehe H
t = linspace(0,1,n); % (parametrisierte) Einteilung der Hoehe [XK,YK,ZK] = cylinder(R*(1-t),n); % r(h) = 3*(1-h); ZK = H*ZK; % Hoehe korrekt skalieren surf(XK,YK,ZK)
Zylinder mit Radius R und Hoehe 2H
[XZ,YZ,ZZ] = cylinder(R,n);
ZZ = ZZ*2*H; % Hoehe korrekt skalieren
surf(XZ,YZ,ZZ)
untere Halbkugel mit Radius R
[XH,YH,ZH] = sphere(n);
XH = R*XH(1:end/2+1,:);
YH = R*YH(1:end/2+1,:);
ZH = R*ZH(1:end/2+1,:);
surf(XH,YH,ZH)
axis equal
wir kombinieren die 3 Koerper
Verschieben der Halbkugel, sodass deren tiefster Punkt in (0,0,0) ist
ZH = ZH + R; % Verschieben des Zylinders, sodaß dieser auf der Halbkugel steht ZZ = ZZ + R; % % Verschieben des Kegels, sodass dieser auf dem Zylinder steht ZK = ZK + R + 2*H; % Zeichnes des gesamten Koerpers hh = surf(XH,YH,ZH); hold on; hz = surf(XZ,YZ,ZZ); hk = surf(XK,YK,ZK); axis equal box on grid off disp(' '); disp('Bitte eine beliebige Taste druecken') %pause()
Bitte eine beliebige Taste druecken
Koerper in 10° Schritten um die Achse (0,1,1), ausgehend von (2,1,9) rotieren lassen
zdir = [0 1 1]; % Drehachse GH2 = (3*H+R)/2; center = [2, 1,GH2]; % Drehpunkt axis tight manual axis equal axis([center(1)-GH2,center(1)+GH2,center(2)-GH2,center(2)+GH2,center(3)-GH2,center(3)+GH2]) nsteps = 36; stride = 360/nsteps; filename = [mfilename,'.avi']; writerObj = VideoWriter(filename); open(writerObj); for k = 1:nsteps rotate(hk,zdir,stride,center) rotate(hz,zdir,stride,center) rotate(hh,zdir,stride,center) F(k) = getframe; frame = getframe; writeVideo(writerObj,frame); end close(writerObj);
Wiederhole die Bildfolge 2 mal
axis off
movie(F,2)