立体几何——球缺问题
(牛客练习赛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;
}
立体几何——球缺问题相关推荐
- 2023年6月3日星期六-球冠与球缺、球锥与立体角
转载:球冠与球缺.球锥与立体角 - 哔哩哔哩
- 一半径为R的球沉入水中,球面顶部正好与水面相切,球的密度为1,求将球从水中取出所做的功
这个题有两种解法,第一种更容易想,第二种比较灵活但计算相对简单,我先说第一种.(前面是分析后面图片是过程) 法1:无非就是要求拉力所做的功,根据 F拉+F浮=F重力,球的重力是定值,所以此时只需求得F ...
- Cosmic Cleaner(求两球相交体积)
https://blog.csdn.net/enterprise_/article/details/81624174 typedef struct point {double x,y,z;point( ...
- 如何用C语言画立体几何图形,立体几何图形公式大全
最早的几何学当属平面几何.平面几何就是研究平面上的直线和二次曲线(即圆锥曲线,就是椭圆.双曲线和抛物线)的几何结构和度量性质(面积.长度.角度).平面几何的内容也很自然地过渡到了三维空间的立体几何.为 ...
- MFC检查透镜质量程序
题目: 某光学仪器厂生产一种系列透镜,这种透镜系列包括凸透镜.凹透镜及平面透镜.该厂检验科采用的检验方法是:通过该透镜的体积.密度,算出质量,再用天平称量透镜的实际质量,根据质量差评估该透镜是否合格. ...
- 高等数学:第六章 定积分的应用(2)平面曲线的弧长 做功 水压力 引力
§6.4 平面曲线的弧长 一.直角坐标情形 设函数在区间上具有一阶连续的导数,计算曲线的长度. 取为积分变量,则,在上任取一小区间,那么这一小区间所对应的曲线弧段的长度可以用它的弧微分来近似. 于是 ...
- 圆弧周长公式_建筑工程施工,最常用计算公式 (大全)
各类钢材理论重量计算公式大全,欢迎收藏哦! 1.钢板重量计算公式 公式:7.85×长度(m)×宽度(m)×厚度(mm) 例:钢板6m(长)×1.51m(宽)×9.75mm(厚) 计算:7.85×6×1 ...
- 机器人导论知识点总结
机器人导论知识点总结 第1章 概论 第一节 机器人的基本概念 1.机器人名称的由来 机器人的英文名词是Robot,Robot一词最早出现在1920年捷克作家卡雷尔·恰佩克(Karel Capek)所写 ...
- Sdut 2416 Fruit Ninja II(山东省第三届ACM省赛 J 题)(解析几何)
Time Limit: 5000MS Memory limit: 65536K 题目描写叙述 Haveyou ever played a popular game named "Fruit ...
- 圆弧周长公式_钢板和钢管的理论重量计算公式居然不一样?
工业制造机械.数控.制造原理 各类钢材理论重量计算公式大全,欢迎收藏哦!1.钢板重量计算公式 公式:7.85×长度(m)×宽度(m)×厚度(mm) 例:钢板6m(长)×1.51m(宽)×9.75mm( ...
最新文章
- UIView旋转角度
- 安装sql 2005 闪退 连接到服务器失败。错误:0x80070424
- 【网络安全】如何使用QueenSono从ICMP提取数据
- es6 --- 使用Symbol保护私有变量
- 增加无线模块传输距离的方法
- LintCode MySQL 1932/1933. 挂科最多的同学 I / II
- 快安排!QQ更新被吐槽低龄化 但这个功能让微信用户们“羡慕”哭了
- Linux手动配置虚拟机网络的两种方式
- 每日一句20200103
- 计算机网络发展分几个阶段各有什么特点,计算机网络的发展可以划分为几个阶段?每个阶段都有什么特点?...
- l2范数求导_向量的L2范数求导
- mysql batch insert_使用batch insert解决MySQL的insert吞吐量问题
- 知码开门 装箱问题
- 粒子群算法(PSO)基本原理
- 瑞星卡卡升级出现错误:kmon.dll.zip,错误代码:0x0/0x0(chech)
- 计算机教师专业发展规划,教师个人专业发展三年规划(2020-2023)
- 2K Star!超过 50 个专题、450 个好项目,大半年来推荐过的重磅项目合集
- Linux安装使用及命令大全
- sort函数使用cmp出错Line 22: Char 38: error: reference to non-static member function must be called
- 3D人脸成像技术整理
热门文章
- Vue含表情评论回复组件
- x86汇编_间接寻址-间接操作数_笔记_11
- 一芯FC1179主控扩容U盘量产修复教程(图文详解)
- 网页和移动端使用一键添加qq群组件
- 台式机计算机怎么分割,台式机如何设置分屏
- 美通企业日报 | 阿里收购网易考拉入股网易云音乐;宁德时代与博世达成战略合作...
- python图片转svg_Python3.7将普通图片(png)转换为SVG图片格式并且让你的网站Logo(图标)从此”动”起来...
- 计算机管理丢失computer文件,Win7弹框提示找不到Computer Management.lnk文件怎么办?...
- 计算机系统加载失败怎么回事,驱动加载失败怎么办,驱动加载失败的原因和解决方法...
- 教你三步实现CDH到星环TDH的平滑迁移