Create a hemisphere with slats

1 view (last 30 days)
viet le
viet le on 1 Sep 2016
Edited: Stephen23 on 2 Sep 2016
I would like to draw a hemisphere with slats as attached figures. 12 identical slits created in hemi
sphere, and width slit and width slat are equal.

Accepted Answer

Stephen23
Stephen23 on 2 Sep 2016
Edited: Stephen23 on 2 Sep 2016
There is no need to write ugly, slow code using loops. MATLAB code is much more beautiful than that! This should get you started:
n = 12;
p = 30;
%
tht = linspace(0,pi,1+p).';
ang = linspace(0,pi,2*n);
%
x = cos(tht)*ones(1,2*n);
y = sin(tht)*cos(ang);
z = sin(tht)*sin(ang);
%
V = [x(:),y(:),z(:)];
F = bsxfun(@plus,(1:p).',0:2*(p+1):size(V,1)-1);
F = F(:);
F(:,2:4) = [1+F,F+2+p,F+1+p];
%
patch('Faces',F, 'Vertices',V, 'FaceColor','green', 'EdgeColor','none')
view(3)
Creates this:
  3 Comments
KSSV
KSSV on 2 Sep 2016
Edited: KSSV on 2 Sep 2016
Good one...I had lot to learn from the code...!
Stephen23
Stephen23 on 2 Sep 2016
Edited: Stephen23 on 2 Sep 2016
@viet le: I hope that you find my code useful. if my answer resolved your question, then please accept it by clicking the accept button

Sign in to comment.

More Answers (1)

KSSV
KSSV on 1 Sep 2016
clc; clear all ;
R = 1. ;
%
N1 = 100 ;
th1 = linspace(0,pi,N1) ;
x = R*cos(th1) ;
y = R*sin(th1) ;
z = zeros(size(x)) ;
%
N2 = 100 ;
th2 = linspace(0,pi,N2) ;
X = zeros(N1,N2) ;
Y = X ;
Z = X ;
for i = 1:N1
for j = 1:N2
Rot = [1 0 0 ; 0 cos(th2(j)) -sin(th2(j)) ; 0 sin(th2(j)) cos(th2(j))] ;
k = Rot*[x(i) ; y(i) ;z(i)] ;
X(i,j) = k(1) ;
Y(i,j) = k(2) ;
Z(i,j) = k(3) ;
end
end
figure
hold on
count = 0 ;
for i = 1:2:N1
count = count+1 ;
x = [X(:,i) ; flipud(X(:,1+1))] ;
y = [Y(:,i) ; flipud(Y(:,i+1))] ;
z = [Z(:,i) ; flipud(Z(:,1+1))] ;
if mod(count,2)
fill3(x,y,z,'g','edgecolor','none')
else
fill3(x,y,z,'w','edgecolor','none')
end
drawnow
end
  4 Comments
KSSV
KSSV on 2 Sep 2016
A small correction:
change the loop for i = 1:2:N1 to for i = 1:N1-1.
viet le
viet le on 2 Sep 2016
thank. it is very helpful.

Sign in to comment.

Categories

Find more on Just for fun in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!