标签:一半 triangle The world isp 余弦定理 php idt mamicode
已知3个球心角(A0、B0、C0)及球体半径R,计算:球面三角的角度(A、B、C)、球面三角的面积、以及球角锥的体积
(涉及角度均为弧度制)
1、计算球面三角形的边长a、b、c:
a = A0*R; (弧长=弧度*球半径)
b = B0*R;
c = C0*R;
2、计算球面角:
(1)方法一:基于余弦定理求解:
故,A = acos( (cosa-cosbcosc)/(sinbsinc)),同理可计算球面角B和C
(2)方法二,也可有正弦公式求得
3、计算球面超(spherical excess):
E=A+B+C-Pi (球面三角的内角和减去普通三角的内角和)
球面超的另外一种算法:
其中,a、b、c为球面三角的边长,s为周长的一半(s = 0.5*(a+b+c))。
4、球面三角面积:
S = E*R^2
5、球角锥体积:
V = S*R/3
#===================================
以三个直角的球面角特例进行验证计算
Matlab程序如下:
clc;clear A0 = pi/2; B0 = pi/2; C0 = pi/2; d = 1; % set diameter of sphere as 1.0 r=d/2; a = A0*r; b = B0*r; c = C0*r; s = (a+b+c)/2; % The 1st method for calculation of Spherical Angle cosA1 = (cos(a/r)-cos(b/r)*cos(c/r))/(sin(b/r)*sin(c/r)); A1 = acos(cosA1); disp("Spherical Angle 1:"); disp(A1); % The 2nd method for calculation of Spherical Angle sinA2 = (sin((s-b)/r)*sin((s-c)/r)/sin(b/r)/sin(c/r))^0.5; A2 = asin(sinA2)*2; disp("Spherical Angle 2:"); disp(A2) % The 1st method for the calculation of Spherical Excess E1 = A1*3-pi; disp("Spherical Excess 1:"); disp(E1); % The 2nd method for the calculation of Spherical Excess temp = tan(0.5*s/r) * tan(0.5*(s-a)/r) * tan(0.5*(s-b)/r) * tan(0.5*(s-c)/r); temp = temp^0.5; E2 =atan(temp)*4; disp("Spherical Excess 2:"); disp(E2); %Surface area of the Spherical Triangle: SurfArea = E2*r^2; disp("Surface area of the Spherical Triangle:"); disp(SurfArea); %Volume of the Spherical Pyramid VsphPyramid = SurfArea*r/3; disp("Volume of the Spherical Pyramid:"); disp(VsphPyramid);
注:上图中“球面积为4piR^2,其1/8应为piR2/2”。
参考资料:
1. https://mathworld.wolfram.com/SphericalTrigonometry.html
2. https://mathworld.wolfram.com/SphericalExcess.html
3. https://mathworld.wolfram.com/SphericalTriangle.html
4. https://baike.baidu.com/item/%E7%90%83%E9%9D%A2%E4%B8%89%E8%A7%92%E5%AD%A6/1307052?fr=aladdin
标签:一半 triangle The world isp 余弦定理 php idt mamicode
原文地址:https://www.cnblogs.com/ywu24/p/12583862.html