三棱锥之刻
2021/7/16 23:12:05
本文主要是介绍三棱锥之刻,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
原题链接
- 题意:给出正四面体棱长 \(a\) 并且给出以正四面体为中心的半径 \(r\),求出以正四面体中心为球心,给出的半径 \(r\) 为半径求平面相交面积。
- 题解:当我复习了一下正三棱锥和正四面体,并且顺便看了一下2019年全国一的数学第12道填空,然后这道题就切掉了。
- 代码:
#include<bits/stdc++.h> #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; const ld pi = acos(-1.0); void solve() { //cout << sqrt(3)/3 << endl; //cout << pi << endl; ld a, rp; cin >> a >> rp; ld r1, r2; ld b = a/sqrt(2); r1 = sqrt(a * a + b * b)/2; r2 = r1 - sqrt(b * b - a * a/3); ld realr = sqrt(rp*rp - r2 * r2); //cout << r1 << " " << r2 << endl; if (rp < r2) { cout << 0 << endl;return; } ld cmp_r1 = sqrt(3)*a/6; ld cmp_r2 = sqrt(3)*a/3; ld s1 = sqrt(3)*a*a/4; //cout << realr << endl; //cout << cmp_r2 << endl; if (realr > cmp_r2) { cout << setprecision(10)<<4*s1 << endl; } else if (realr < cmp_r1) { //while (1); cout << setprecision(10)<< 4 * pi * realr*realr << endl; } else { ld r = realr; ld h = cmp_r1; ld Cos_1 = (4 * h * h-2 * r * r)/(2 * r*r); ld du = acos(Cos_1) * 3; ld s_san = h * sqrt(r * r - h * h); ld ans = s_san * 3 * 4; ans += pi * r * r * (2 * pi-du)/(2 * pi) * 4; cout << setprecision(10) << ans << endl; } } signed main() { ll t = 1;//cin >> t; while (t--) { solve(); } }
这篇关于三棱锥之刻的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-22项目:远程温湿度检测系统
- 2024-12-21《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》简介
- 2024-12-21后台管理系统开发教程:新手入门全指南
- 2024-12-21后台开发教程:新手入门及实战指南
- 2024-12-21后台综合解决方案教程:新手入门指南
- 2024-12-21接口模块封装教程:新手必备指南
- 2024-12-21请求动作封装教程:新手必看指南
- 2024-12-21RBAC的权限教程:从入门到实践
- 2024-12-21登录鉴权实战:新手入门教程
- 2024-12-21动态权限实战入门指南