输入4个点三维坐标,如果是六面体,则输出内切球的球心坐标和半径。

点pi对面的面积为si,点a,b,c组成的面积=|ab叉乘ac|/2。

内心为a,公式:

s0=s1+s2+s3+s4

a.x=∑si*pi.x/s0

a.y=∑si*pi.y/s0

a.z=∑si*pi.z/s0

n为p1、p2、p3的法向量,n=p1p2叉乘p1p3

半径=p1a点乘n/|n|

#include <cstdio>
#include <cmath>
#define dd double
struct point{
dd x,y,z;
int input(){
return scanf("%lf%lf%lf",&x,&y,&z);
}
point operator -(const point &b) const
{
return (point){x-b.x,y-b.y,z-b.z};
}
dd operator *(const point &b)const
{
return x*b.x+y*b.y+z*b.z;
}
point operator ^(const point &b)const
{
return (point){y*b.z-b.y*z,b.x*z-x*b.z,x*b.y-b.x*y};
}
}p[];
dd sqr(dd x){
return x*x;
}
dd area(const point &o,const point &s,const point &e,point &n){
point a=s-o,b=e-o;
n=a^b;
return sqrt(sqr(n.x)+sqr(n.y)+sqr(n.z))/;
}
int main() {
while(~p[].input()){
for(int i=;i<=;i++)
p[i].input();
dd s[];
point n,l=p[]-p[];;
s[]=area(p[],p[],p[],n);
if(l*n==){
puts("O O O O");
continue;
}
s[]=area(p[],p[],p[],n);
s[]=area(p[],p[],p[],n);
s[]=area(p[],p[],p[],n);
dd x=,y=,z=,down=;
for(int i=;i<=;i++){
down+=s[i];
x+=s[i]*p[i].x;
y+=s[i]*p[i].y;
z+=s[i]*p[i].z;
}
point a=(point){x/down,y/down,z/down};
point b=a-p[];
dd r=fabs(b*n)/s[]/;
printf("%.4f %.4f %.4f %.4f\n",a.x,a.y,a.z,r);
}
}

  

【HDU 5733】tetrahedron的更多相关文章

  1. 【数位dp】【HDU 3555】【HDU 2089】数位DP入门题

    [HDU  3555]原题直通车: 代码: // 31MS 900K 909 B G++ #include<iostream> #include<cstdio> #includ ...

  2. 【HDU 5647】DZY Loves Connecting(树DP)

    pid=5647">[HDU 5647]DZY Loves Connecting(树DP) DZY Loves Connecting Time Limit: 4000/2000 MS ...

  3. -【线性基】【BZOJ 2460】【BZOJ 2115】【HDU 3949】

    [把三道我做过的线性基题目放在一起总结一下,代码都挺简单,主要就是贪心思想和异或的高斯消元] [然后把网上的讲解归纳一下] 1.线性基: 若干数的线性基是一组数a1,a2,a3...an,其中ax的最 ...

  4. 【HDU 2196】 Computer(树的直径)

    [HDU 2196] Computer(树的直径) 题链http://acm.hdu.edu.cn/showproblem.php?pid=2196 这题可以用树形DP解决,自然也可以用最直观的方法解 ...

  5. 【HDU 2196】 Computer (树形DP)

    [HDU 2196] Computer 题链http://acm.hdu.edu.cn/showproblem.php?pid=2196 刘汝佳<算法竞赛入门经典>P282页留下了这个问题 ...

  6. 【HDU 5145】 NPY and girls(组合+莫队)

    pid=5145">[HDU 5145] NPY and girls(组合+莫队) NPY and girls Time Limit: 8000/4000 MS (Java/Other ...

  7. 【hdu 1043】Eight

    [题目链接]:http://acm.hdu.edu.cn/showproblem.php?pid=1043 [题意] 会给你很多组数据; 让你输出这组数据到目标状态的具体步骤; [题解] 从12345 ...

  8. 【HDU 3068】 最长回文

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=3068 [算法] Manacher算法求最长回文子串 [代码] #include<bits/s ...

  9. 【HDU 4699】 Editor

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=4699 [算法] 维护两个栈,一个栈放光标之前的数,另外一个放光标之后的数 在维护栈的同时求最大前缀 ...

随机推荐

  1. 如何在CTF中当搅屎棍

    论如何在CTF比赛中搅屎 0×00 前言 不能搅屎的CTF不是好CTF,不能搅屎的题目不是好题目. 我很赞成phithon神的一句话,"比赛就是和他人竞争的过程,通过各种手段阻止对手拿分我觉 ...

  2. Android Fragment 你应该知道的一切

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/42628537,本文出自:[张鸿洋的博客] 很久以前写过两篇Fragment的介绍 ...

  3. Spring JPA Junit 关闭自动回滚

    因为用了JPA配合Hibernate ,采用注解默认是开启了LayzLoad也就是懒加载,所以不得不在Junit的单元测试上加上@Transactional注解 这样Spring会自动为当前线程开启S ...

  4. Oracle多表连接,提高效率,性能优化 (转)

    执行路径:ORACLE的这个功能大大地提高了SQL的执行性能并节省了内存的使用:我们发现,单表数据的统计比多表统计的速度完全是两个概念.单表统计可能只要0.02秒,但是2张表联合统计就可能要几十表了. ...

  5. 转- android硬件传感器

    纯属转载:http://dev.10086.cn/cmdn/bbs/thread-41843-1-1.html 1.传感器入门 自从苹果公司在2007年发布第一代iPhone以来,以前看似和手机挨不着 ...

  6. linux系统root密码遗忘的情况下的解决办法

    机房一台centos系统的服务器,由于这台服务器的系统装了好长时间,且root密码中间更新过几次,后面去机房现场维护时,登陆密码遗忘了,悲催啊~ 没办法,只能开机进入“单用户模式”进行密码重置了. 下 ...

  7. Hibernate总结4之HQL

    一,HQL特点 与SQL相似,SQL中的语法基本上都可以直接使用. SQL查询的是表和表中的列:HQL查询的是对象与对象中的属性. HQL的关键字不区分大小写,类名与属性名是区分大小写的. SELEC ...

  8. CSS3 Media Queries 片段

    CSS3 Media Queries片段 在这里主要分成三类:移动端.PC端以及一些常见的响应式框架的Media Queries片段. 移动端Media Queries片段 iPhone5 @medi ...

  9. 为什么我们的web前端变的越来越复杂

    前端发展了也有些年头了,曾记得很多年前,聊起前端,都觉得是很简单,那个时候都没有前端工程师这个职位.可现在,前端已经逆袭了,已经不是原来的样子了,各种技术层出不穷,显的越来越高深莫测了.前端真的变得那 ...

  10. List<T>与Dictionary<string,T>频繁检索的性能差距

    一直对LINQ简洁高效的语法青睐有加,对于经常和资料库,SQL语法打交道的C#开发者来说,LINQ无疑是一个非常不错的选择,当要在List<T>(T为一个普通对象)集合中查找满足某些条件的 ...