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 4 mal
- Create movie
Zusammengesetzter Koerper: Kreiskegel, Kreiszylinder und Halbkugel
clear; clc; clf
Daten
R = 3; H = 5; n = 30; % 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
Warning: Integer operands are required for colon operator when used as index Warning: Integer operands are required for colon operator when used as index Warning: Integer operands are required for colon operator when used as index
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 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; for k = 1:nsteps rotate(hk,zdir,stride,center) rotate(hz,zdir,stride,center) rotate(hh,zdir,stride,center) F(k) = getframe; end
Wiederhole die Bildfolge 4 mal
movie(F,2)
Create movie
File anlegen
mov = avifile('try_geom.avi','fps',10); % Vorwaerts und Rueckwaerts drehen mov = addframe(mov,F(1:end),F(end:-1:1)); % File schliessen mov = close(mov); %movie2avi(F,'try_geom2.avi')