• 三棱锥之刻


    原题链接

    • 题意:给出正四面体棱长 (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();
       }
    }
    
  • 相关阅读:
    计算机概念-shell
    数组去重复的三种方法
    CSS 自定义字体
    解决 IE 6/7 中console对象兼容性问题
    Sublime Text 3 Install Markdown Preview Plugins
    对象数组排序函数
    Ubuntu 16.04 下使用Xampp
    JavaScript 中 申明变量的方式--let 语句
    bootstrap框架 导航条组件使用
    phpstorm version 2016.2 License Server激活
  • 原文地址:https://www.cnblogs.com/Xiao-yan/p/15022070.html
Copyright © 2020-2023  润新知