-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcompute_onezhongxin.asv
48 lines (42 loc) · 1.39 KB
/
compute_onezhongxin.asv
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
function [x_zhongxin,y_zhongxin,z_zhongxin] = compute_onezhongxin(youliang_current,yangfu,a)
chang = a(4);
kuan = a(5);
gao = a(6);
qidian = [a(1)-chang/2,a(2)-kuan/2,a(3)-gao/2];
ymin = qidian(2);
ymax = ymin+kuan;
zmin = qidian(3);
ceMianji = youliang_current/kuan;
[alt1,alt2] = compute_fanwei(ceMianji,chang,gao);
if(yangfu>alt1)
zmax = zmin + gao;
xmin = qidian(1);
detax = (2*ceMianji/gao-gao/tan(yangfu))/2;
xmax = xmin+(gao-(z-zmin))/tan(yangfu)+detax;
elseif(yangfu<=alt1&&yangfu>=alt2)
zmax = zmin + sqrt(ceMianji*tan(yangfu));
xmin = qidian(1);
xmax = xmin + (zmax-z)/tan(yangfu);
elseif(yangfu>-alt2&&yangfu<alt2)
if(yangfu<0)
h = -yangfu;
else
h=yangfu;
end
zmax = zmin + (2*ceMianji/chang+chang*tan(h))/2;
xmin =qidian(1);
xmax = xmin+(zmax-z)/tan(yangfu);
elseif(yangfu<=-alt2&&yangfu>=-alt1)
xmax = qidian(1)+chang;
zmax = zmin + sqrt(ceMianji*tan(-yangfu));
xmin = xmax - (zmax-z)/tan(-yangfu);
elseif(yangfu<-alt1)
zmax = zmin + gao;
xmax = qidian(1)+chang;
detax = (2*ceMianji/gao-gao/tan(-yangfu))/2;
xmin = xmax-detax-(z-zmax)/tan(-yangfu);
end
x_zhongxin = integral3(@(x,y,z)x,xmin,xmax,ymin,ymax,zmin,zmax)/youliang_current;
y_zhongxin = integral3(@(x,y,z)y,xmin,xmax,ymin,ymax,zmin,zmax)/youliang_current;
z_zhongxin = integral3(@(x,y,z)z,xmin,xmax,ymin,ymax,zmin,zmax)/youliang_current;
end