clear;
clc;
close all;
a=150;
b=600;
m=1000;
numbers=0;
x=-600:20:600;
y=-600:20:600;
z=200:20:1200;
for i=1:length(z)
W=zeros(length(x),length(y));
for j=1:length(x)
for k=1:length(y)
d3=sqrt((x(j))^2+(y(k))^2+(z(i))^2);
theta2=acos(-(x(j))/d3);
theta1=acos((y(k))/d3/sin(theta2));
a10=a.*[1;0;0];
a20=a.*[-1/2;cos(pi/6);0];
a30=a.*[-1/2;-cos(pi/6);0];
b1=b.*[1;0;0];
b2=b.*[-1/2;cos(pi/6);0];
b3=b.*[-1/2;-cos(pi/6);0];
R=[sin(theta2),0,-cos(theta2);
cos(theta1)*cos(theta2),sin(theta1),cos(theta1)*sin(theta2);
sin(theta1)*cos(theta2),-cos(theta1),sin(theta1)*sin(theta2)];
a1=R*a10;
a2=R*a20;
a3=R*a30;
r=[x(j);y(k);z(i)];
q1=(norm(a1+r-b1));
q2=(norm(a2+r-b2));
q3=(norm(a3+r-b3));
Q1=(a1+r-b1)./(norm(a1+r-b1));
Q2=(a2+r-b2)./(norm(a2+r-b2));
Q3=(a3+r-b3)./(norm(a3+r-b3));
Q11=[0,0,1];
gamma1=acos(Q11*Q1);
gamma2=acos(Q11*Q2);
gamma3=acos(Q11*Q3);
flag_d3=(400<d3)&(d3<1000);
flag_theta1=(pi/3<theta1)&(theta1<2*pi/3);
flag_theta2=(pi/3<theta2)&(theta2<2*pi/3);
flag_q1=(600<q1)&(q1<1080);
flag_q2=(600<q2)&(q2<1080);
flag_q3=(600<q3)&(q3<1080);
flag_gamma1=(0<gamma1)&(gamma1<pi/4);
flag_gamma2=(0<gamma2)&(gamma2<pi/4);
flag_gamma3=(0<gamma3)&(gamma3<pi/4);
if (flag_d3*flag_theta1*flag_theta2*flag_q1*flag_q2*flag_q3*flag_gamma1*flag_gamma2*flag_gamma3)==1
W(k,j)=z(i);
numbers=numbers+1;
else W(k,j)=NaN;
end
end
end
surf(x,y,W);
hold on
end
shading interp;
colormap jet;
xlabel('x/(mm)');
ylabel('y/(mm)');
zlabel('z/(mm)')