我是直接搬运了某大佬的代码,毕竟我不清楚如何计算这个东西。

其中四点共面的求法就是体积为0,然后圆心和半径就公式了。

#include<cstdio>
#include<iostream>
#include<cmath>
using namespace std;
#define eps 1e-8
struct node
{
double x,y,z;
}a,b,c,d,ans; ///面积公式
double get(node a,node b,node c)
{
double x1=b.x-a.x,y1=b.y-a.y,z1=b.z-a.z;
double x2=c.x-a.x,y2=c.y-a.y,z2=c.z-a.z;
double d1=y1*z2-y2*z1;
double d2=x1*z2-x2*z1;
double d3=x1*y2-x2*y1;
return sqrt(d1*d1+d2*d2+d3*d3)*0.5;
} ///体积
double Get(node a,node b,node c,node d)
{
double x1=b.x-a.x,y1=b.y-a.y,z1=b.z-a.z;
double x2=c.x-a.x,y2=c.y-a.y,z2=c.z-a.z;
double x3=d.x-a.x,y3=d.y-a.y,z3=d.z-a.z;
double ans=x1*(y2*z3-y3*z2)-y1*(x2*z3-x3*z2)+z1*(x2*y3-x3*y2);
return abs(ans)/6.0;
}
int main()
{
while(~scanf("%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf",&a.x,&a.y,&a.z,&b.x,&b.y,&b.z,&c.x,&c.y,&c.z,&d.x,&d.y,&d.z))
{
double s1,s2,s3,s4,V;
V=Get(a,b,c,d);
s1=get(b,c,d);
s2=get(a,c,d);
s3=get(a,b,d);
s4=get(a,b,c);
double t=s1+s2+s3+s4;
if(V<eps)
{
printf("O O O O\n");
continue;
}
ans.x=(s1*a.x+s2*b.x+s3*c.x+s4*d.x)/t;
ans.y=(s1*a.y+s2*b.y+s3*c.y+s4*d.y)/t;
ans.z=(s1*a.z+s2*b.z+s3*c.z+s4*d.z)/t;
double r=V*3.0/t;
printf("%.4lf %.4lf %.4lf %.4lf\n",ans.x,ans.y,ans.z,r);
}
}

tetrahedron (公式)的更多相关文章

  1. hdu 5733 tetrahedron 四面体内切球球心公式

    tetrahedron Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total ...

  2. E. Tetrahedron(数学推导)

    E. Tetrahedron 分类: AC路漫漫2013-08-08 16:07 465人阅读 评论(0) 收藏 举报 time limit per test 2 seconds memory lim ...

  3. hdu 5726 tetrahedron 立体几何

    tetrahedron/center> 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5726 Description Given four p ...

  4. HDU 5733 tetrahedron(计算几何)

    题目链接 tetrahedron 题目大意 输入一个四面体求其内心,若不存在内心则输出"O O O O" 解题思路 其实这道题思路很简单,只要类推一下三角形内心公式就可以了. 至于 ...

  5. 为WLW开发Latex公式插件

    WLW是写博客的利器,支持离线.格式排版等,而且拥有众多的插件.博客园推荐了代码插入插件,但是没有提供WLW的公式编译插件.目前我的一般做法是:先在Word下使用MathType编辑好公式,然后将公式 ...

  6. 百度编辑器UEditor与UEditor 公式插件完整Demo

    1.下载UEditor(我的是.net项目) 2.下载UEditor公式插件 3.新建解决方案和项目 4.在浏览器中预览index.html页面 结果: 5.index.html源码 <!DOC ...

  7. poi读取excel模板,填充内容并导出,支持导出2007支持公式自动计算

    /** * 版权所有(C) 2016 * @author www.xiongge.club * @date 2016-12-7 上午10:03:29 */ package xlsx; /** * @C ...

  8. Oracle Sales Cloud:管理沙盒(定制化)小细节1——利用公式创建字段并显示在前端页面

    Oracle Sales Cloud(Oracle 销售云)是一套基于Oracle云端的CRM管理系统.由于 Oracle 销售云是基于 Oracle 云环境的,它与传统的管理系统相比,显著特点之一便 ...

  9. Excel公式 提取文件路径后缀

    我们在代码中获取一个文件路径的后缀,是一个很简单的事. 如C#中,可以通过new FileInfo(filePath).Extension,或者Path.GetExtension(filePath)获 ...

随机推荐

  1. Orchard Core 中数据库使用postgresql-10

    在配置好Startup.cs后,运行程序: 首先需要设置一些基本信息.这里我试着配置如下,数据库使用postgresql,连接字符串像这样: Host=192.168.0.111;UserName=u ...

  2. Spring对Bean装配详解

    1.Spring提供了三种装配bean的方式: 2.自动装配bean: 3.通过Java代码装配bean 4.通过XML装配bean 前言:创建对象的协作关系称为装配,也就是DI(依赖注入)的本质.而 ...

  3. shell日志分析进阶篇

    前面我们说了shell分析日志常用指令,现在我们随ytkah一起看看shell日志分析进阶篇,假设日志文件为ytkah.log //统计不重复抓取数量 cat ytkah.log | awk '{pr ...

  4. MySQL无损复制(转)

    MySQL5.7新特性:lossless replication 无损复制 https://dev.mysql.com/doc/refman/5.7/en/replication-semisync.h ...

  5. wx:Textctrl

    import wx class Mywin(wx.Frame): def __init__(self, parent, title): super(Mywin, self).__init__(pare ...

  6. php合并数组并保留键值的方法

    答案:使用 + 连接两个数组,替换array_merge()函数. php合并数组,一般会使用array_merge方法. array_merge — 合并一个或多个数组 array array_me ...

  7. 263A

    #include<stdio.h> #include<stdlib.h> int main() { int i, j; int temp; int t_i, t_j; int ...

  8. iot-hub运行在虚拟上

    ng  build gradlew build java -jar iot-hub-0.0.1-SNAPSHOT.jar 后台运行  nohup java -jar iot-dm-0.0.1-SNAP ...

  9. 前端获取的数据是undefined

    var id = $("id1").val(); var username = $("username1").val(); var password = $(& ...

  10. 34.js----JS 开发者必须知道的十个 ES6 新特性

    JS 开发者必须知道的十个 ES6 新特性 这是为忙碌的开发者准备的ES6中最棒的十个特性(无特定顺序): 默认参数 模版表达式 多行字符串 拆包表达式 改进的对象表达式 箭头函数 =&> ...