输入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. sublime text2安装package control的方法

    Package Control 方法一:在线安装,首先打开 Ctrl + ~,输入如下的代码: import urllib2,os; pf='Package Control.sublime-packa ...

  2. Mysql LIMIT如何正确对其进行优化

    Mysql LIMIT如何正确对其进行优化 2010-05-17 17:09 佚名 博客园 字号:T | T 我们今天主要和大家分享的是Mysql LIMIT简单介绍以及如何进行优化的相关内容的描述, ...

  3. Apache Rewrite 拟静态配置

    1.mod_rewrite 简介和配置 Rewirte主要的功能就是实现URL的跳转和隐藏真实地址,基于Perl语言的正则表达式规范.平时帮助我们实现拟静态,拟目录,域名跳转,防止盗链等 2.mod_ ...

  4. usb驱动开发22之驱动生命线

    我们总是很喜欢高潮,不是吗?那就好好对待她哦.我们来看一下linux中的高潮部分设备是怎么从Address进入Configured的. usb_set_configuration函数的代码就不贴了,可 ...

  5. 【C#】【MySQL】C#获取存储过程的Output输出参数值

    创建存储过程 Create PROCEDURE MYSQL @a int, @b int, @c int output AS Set @c = @a + @b GO 通过以下方法可以获得储存过程的输出 ...

  6. 15个nosql数据库

    1.MongoDB 介绍 MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.主要解决的是海量数据的访问效率问题,为WEB应用提供可扩展的高性能数据存储解决方案.当数据量达到50GB以上 ...

  7. NET WebApi OWIN 实现 OAuth 2.0

    NET WebApi OWIN 实现 OAuth 2.0 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和 ...

  8. 在linux下运行java工程

    在linux 服务器上运行JAVA工程需注意.1: 在linux 上: /etc/profile  设置classpath 配置正确的jar 路径.2:  把本地JAVA工程做成一个jar包.如:1. ...

  9. struts2: config-browser-plugin 与 convention-plugin 学习

    struts2被很多新手诟病的一个地方在于“配置过于复杂”,相信不少初学者因为这个直接改投Spring-MVC了.convention-plugin. config-browser-plugin这二个 ...

  10. ASP.MVC EASY UI 入门之 —— Tree & ComboTree

    1.常规的EASY UI的tree和comboTree代码基本是官方的DEMO都有的,虽然很简单,但是还是要实践的做一次,才能更清晰的了解和使用它!先上效果图 因为用的是code first,所以数据 ...