1 条题解
-
0
解题思路
首先,将圆锥展开成平面扇形。圆锥展开后扇形的弧长等于圆锥底面的周长,扇形的半径l为圆锥的母线长,可根据勾股定理计算。 对于圆锥表面上的点p1和p2,在展开后的扇形中,它们到扇形圆心(即圆锥顶点)的距离分别为d1和d2,对应的圆心角和可根据圆锥坐标中的角度A1和A2以及扇形的性质计算得到。 然后,在展开后的扇形平面上,根据余弦定理计算两点p1和p2之间的距离。余弦定理公式为,其中,,(为两点所对应的圆心角之差)。
代码
#include<iostream> #include<cmath> using namespace std; const double pi=acos(-1.0); int main() { double r,h,d1,A1,d2,A2; while(scanf("%lf%lf%lf%lf%lf%lf",&r,&h,&d1,&A1,&d2,&A2)==6){ double l=sqrt(h*h+r*r); double bottomL=2*pi*r; double alpha=bottomL/l; double beta=(A1-A2)*pi/180; if(beta<0) beta+=2*pi; beta=min(beta,2*pi-beta); double gamma=alpha*beta/(2*pi); printf("%.2lf\n",sqrt(d1*d1+d2*d2-2*d1*d2*cos(gamma))+1e-8); } return 0; }
- 1
信息
- ID
- 1509
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 2
- 已通过
- 1
- 上传者