(牛客练习赛41)球的体积并

#include <bits/stdc++.h>
using namespace std;typedef long long ll;const double PI = acos(-1);const int MAX = 100 + 10;
const int inf = 1e9 + 7;
typedef struct point {double x,y,z;point() {}point(double a, double b,double c) {x = a;y = b;z = c;}point operator -(const point &b)const {     //返回减去后的新点return point(x - b.x, y - b.y,z-b.z);}point operator +(const point &b)const {     //返回加上后的新点return point(x + b.x, y + b.y,z+b.z);}//数乘计算point operator *(const double &k)const {    //返回相乘后的新点return point(x * k, y * k,z*k);}point operator /(const double &k)const {    //返回相除后的新点return point(x / k, y / k,z/k);}double operator *(const point &b)const {    //点乘return x*b.x + y*b.y+z*b.z;}
}point;
double dist(point p1, point p2) {       //返回平面上两点距离return sqrt((p1 - p2)*(p1 - p2));
}
typedef struct sphere {//球double r;point centre;
}sphere;
double SphereInterVS(sphere a, sphere b) {double d = dist(a.centre, b.centre);//球心距double t = (d*d + a.r*a.r - b.r*b.r) / (2.0 * d);//double h = sqrt((a.r*a.r) - (t*t)) * 2;//h1=h2,球冠的高double angle_a = 2 * acos((a.r*a.r + d*d - b.r*b.r) / (2.0 * a.r*d));  //余弦公式计算r1对应圆心角,弧度double angle_b = 2 * acos((b.r*b.r + d*d - a.r*a.r) / (2.0 * b.r*d));  //余弦公式计算r2对应圆心角,弧度double l1 = ((a.r*a.r - b.r*b.r) / d + d) / 2;double l2 = d - l1;double x1 = a.r - l1, x2 = b.r - l2;//分别为两个球缺的高度double v1 = PI*x1*x1*(a.r - x1 / 3);//相交部分r1圆所对应的球缺部分体积double v2 = PI*x2*x2*(b.r - x2 / 3);//相交部分r2圆所对应的球缺部分体积double v = v1 + v2;//相交部分体积return v;
}int n;
sphere ss;
sphere s;int main()
{scanf("%lf%lf%lf%lf", &ss.centre.x, &ss.centre.y, &ss.centre.z, &ss.r);scanf("%lf%lf%lf%lf", &s.centre.x, &s.centre.y, &s.centre.z, &s.r);double ans = 0;double d = dist(s.centre, ss.centre);if (d >= s.r + ss.r){ans =  (4.0 / 3)*PI*s.r*s.r*s.r+(4.0 / 3)*PI*ss.r*ss.r*ss.r;}else if (d+s.r<=ss.r) {ans += (4.0 / 3)*PI*ss.r*ss.r*ss.r;}else if(d+ss.r<=s.r){ans += (4.0 / 3)*PI*s.r*s.r*s.r;}else {ans= (4.0 / 3)*PI*s.r*s.r*s.r+(4.0 / 3)*PI*ss.r*ss.r*ss.r-SphereInterVS(s, ss);}printf("%.7lf\n", ans);return 0;
}

立体几何——球缺问题相关推荐

  1. 2023年6月3日星期六-球冠与球缺、球锥与立体角

    转载:球冠与球缺.球锥与立体角 - 哔哩哔哩

  2. 一半径为R的球沉入水中,球面顶部正好与水面相切,球的密度为1,求将球从水中取出所做的功

    这个题有两种解法,第一种更容易想,第二种比较灵活但计算相对简单,我先说第一种.(前面是分析后面图片是过程) 法1:无非就是要求拉力所做的功,根据 F拉+F浮=F重力,球的重力是定值,所以此时只需求得F ...

  3. Cosmic Cleaner(求两球相交体积)

    https://blog.csdn.net/enterprise_/article/details/81624174 typedef struct point {double x,y,z;point( ...

  4. 如何用C语言画立体几何图形,立体几何图形公式大全

    最早的几何学当属平面几何.平面几何就是研究平面上的直线和二次曲线(即圆锥曲线,就是椭圆.双曲线和抛物线)的几何结构和度量性质(面积.长度.角度).平面几何的内容也很自然地过渡到了三维空间的立体几何.为 ...

  5. MFC检查透镜质量程序

    题目: 某光学仪器厂生产一种系列透镜,这种透镜系列包括凸透镜.凹透镜及平面透镜.该厂检验科采用的检验方法是:通过该透镜的体积.密度,算出质量,再用天平称量透镜的实际质量,根据质量差评估该透镜是否合格. ...

  6. 高等数学:第六章 定积分的应用(2)平面曲线的弧长 做功 水压力 引力

    §6.4  平面曲线的弧长 一.直角坐标情形 设函数在区间上具有一阶连续的导数,计算曲线的长度. 取为积分变量,则,在上任取一小区间,那么这一小区间所对应的曲线弧段的长度可以用它的弧微分来近似. 于是 ...

  7. 圆弧周长公式_建筑工程施工,最常用计算公式 (大全)

    各类钢材理论重量计算公式大全,欢迎收藏哦! 1.钢板重量计算公式 公式:7.85×长度(m)×宽度(m)×厚度(mm) 例:钢板6m(长)×1.51m(宽)×9.75mm(厚) 计算:7.85×6×1 ...

  8. 机器人导论知识点总结

    机器人导论知识点总结 第1章 概论 第一节 机器人的基本概念 1.机器人名称的由来 机器人的英文名词是Robot,Robot一词最早出现在1920年捷克作家卡雷尔·恰佩克(Karel Capek)所写 ...

  9. Sdut 2416 Fruit Ninja II(山东省第三届ACM省赛 J 题)(解析几何)

    Time Limit: 5000MS Memory limit: 65536K 题目描写叙述 Haveyou ever played a popular game named "Fruit ...

  10. 圆弧周长公式_钢板和钢管的理论重量计算公式居然不一样?

    工业制造机械.数控.制造原理 各类钢材理论重量计算公式大全,欢迎收藏哦!1.钢板重量计算公式 公式:7.85×长度(m)×宽度(m)×厚度(mm) 例:钢板6m(长)×1.51m(宽)×9.75mm( ...

最新文章

  1. UIView旋转角度
  2. 安装sql 2005 闪退 连接到服务器失败。错误:0x80070424
  3. 【网络安全】如何使用QueenSono从ICMP提取数据
  4. es6 --- 使用Symbol保护私有变量
  5. 增加无线模块传输距离的方法
  6. LintCode MySQL 1932/1933. 挂科最多的同学 I / II
  7. 快安排!QQ更新被吐槽低龄化 但这个功能让微信用户们“羡慕”哭了
  8. Linux手动配置虚拟机网络的两种方式
  9. 每日一句20200103
  10. 计算机网络发展分几个阶段各有什么特点,计算机网络的发展可以划分为几个阶段?每个阶段都有什么特点?...
  11. l2范数求导_向量的L2范数求导
  12. mysql batch insert_使用batch insert解决MySQL的insert吞吐量问题
  13. 知码开门 装箱问题
  14. 粒子群算法(PSO)基本原理
  15. 瑞星卡卡升级出现错误:kmon.dll.zip,错误代码:0x0/0x0(chech)
  16. 计算机教师专业发展规划,教师个人专业发展三年规划(2020-2023)
  17. 2K Star!超过 50 个专题、450 个好项目,大半年来推荐过的重磅项目合集
  18. Linux安装使用及命令大全
  19. sort函数使用cmp出错Line 22: Char 38: error: reference to non-static member function must be called
  20. 3D人脸成像技术整理

热门文章

  1. Vue含表情评论回复组件
  2. x86汇编_间接寻址-间接操作数_笔记_11
  3. 一芯FC1179主控扩容U盘量产修复教程(图文详解)
  4. 网页和移动端使用一键添加qq群组件
  5. 台式机计算机怎么分割,台式机如何设置分屏
  6. 美通企业日报 | 阿里收购网易考拉入股网易云音乐;宁德时代与博世达成战略合作...
  7. python图片转svg_Python3.7将普通图片(png)转换为SVG图片格式并且让你的网站Logo(图标)从此”动”起来...
  8. 计算机管理丢失computer文件,Win7弹框提示找不到Computer Management.lnk文件怎么办?...
  9. 计算机系统加载失败怎么回事,驱动加载失败怎么办,驱动加载失败的原因和解决方法...
  10. 教你三步实现CDH到星环TDH的平滑迁移