HDU 5733 tetrahedron(计算几何)
题目链接
题目大意
输入一个四面体求其内心,若不存在内心则输出“O O O O”
解题思路
其实这道题思路很简单,只要类推一下三角形内心公式就可以了。
至于如何判断无解,计算一下体积若V<=0则无解
Code
#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-8;
struct point{
double x, y, z;
point (double xx = 0, double yy = 0, double zz = 0){
x = xx;
y = yy;
z = zz;
}
friend point operator - (const point &a, const point &b){
return point(a.x - b.x, a.y - b.y, a.z - b.z);
}
} p[4];
double cross(point p1, point p2){
return sqrt(pow(p1.y * p2.z - p1.z * p2.y, 2) + pow(-(p1.x * p2.z - p1.z * p2.x), 2) + pow(p1.x * p2.y - p1.y * p2.x, 2));
}
double vol(point p1, point p2, point p3){
return fabs((p2.y * p3.z - p2.z * p3.y) * p1.x - (p2.x * p3.z - p2.z * p3.x) * p1.y + (p2.x * p3.y - p2.y * p3.x) * p1.z);
}
int main(){
while (~scanf("%lf%lf%lf", &p[0].x, &p[0].y, &p[0].z)){
for (int i = 1; i < 4; i++) scanf("%lf%lf%lf", &p[i].x, &p[i].y, &p[i].z);
double V = vol(p[1] - p[0], p[2] - p[0], p[3] - p[0]);
if (V <= eps){
printf("O O O O\n");
continue;
}
V = V / 6;
double s1 = 0.5 * cross(p[1] - p[0], p[2] - p[0]);
double s2 = 0.5 * cross(p[1] - p[0], p[3] - p[0]);
double s3 = 0.5 * cross(p[2] - p[0], p[3] - p[0]);
double s4 = 0.5 * cross(p[1] - p[2], p[3] - p[2]);
double S = s1 + s2 + s3 + s4;
double r = V * 3 / S;
double x = (p[0].x * s4 + p[1].x * s3 + p[2].x * s2 + p[3].x * s1) / S;
double y = (p[0].y * s4 + p[1].y * s3 + p[2].y * s2 + p[3].y * s1) / S;
double z = (p[0].z * s4 + p[1].z * s3 + p[2].z * s2 + p[3].z * s1) / S;
printf("%.4f %.4f %.4f %.4f\n", x, y, z, r);
}
return 0;
}
HDU 5733 tetrahedron(计算几何)的更多相关文章
- HDU #5733 tetrahedron
tetrahedron 传送门 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) P ...
- hdu 5733 tetrahedron 四面体内切球球心公式
tetrahedron Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total ...
- HDU 4998 Rotate (计算几何)
HDU 4998 Rotate (计算几何) 题目链接http://acm.hdu.edu.cn/showproblem.php?pid=4998 Description Noting is more ...
- hdu 4643 GSM 计算几何 - 点线关系
/* hdu 4643 GSM 计算几何 - 点线关系 N个城市,任意两个城市之间都有沿他们之间直线的铁路 M个基站 问从城市A到城市B需要切换几次基站 当从基站a切换到基站b时,切换的地点就是ab的 ...
- HDU 5839 Special Tetrahedron 计算几何
Special Tetrahedron 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5839 Description Given n points ...
- 【HDU 5733】tetrahedron
输入4个点三维坐标,如果是六面体,则输出内切球的球心坐标和半径. 点pi对面的面积为si,点a,b,c组成的面积=|ab叉乘ac|/2. 内心为a,公式: s0=s1+s2+s3+s4 a.x=∑si ...
- hdu 5726 tetrahedron 立体几何
tetrahedron/center> 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5726 Description Given four p ...
- HDU 1174 爆头(计算几何)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1174 解题报告:就是用到了三维向量的点积来求点到直线的距离,向量(x1,y1,z1)与(x2,y2,z ...
- hdu 1086(计算几何入门题——计算线段交点个数)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1086 You can Solve a Geometry Problem too Time Limit: 2 ...
随机推荐
- request response cookie session
request 1. url传递参数 1)参数没有命名, 如: users/views def weather(request, city, year): print(city) print(year ...
- nrf开发笔记一开发软件
nrf52810 的开发环境,比较主流的可以使用keil,iar亦可.sdk中,使用的是pca10040e,s112.虽然开发板共用一个型号(pca10040) keil5中,cmsis 需要4.5. ...
- 笔记-python-urllib
笔记-python-urllib 1. 简介 PYTHON3中将urllib,urllib2整合到URLLIB中 包括以下模块 urllib.request 请求模块(核心) urllib. ...
- MySQL-状态Waiting on empty queue引申
MySQL 事件调度器示例演示 我们大家都知道MySQL 事件调度器是在 MySQL 5.1 中新生的一个较为特殊的功能,其可以作为定时任务调度器,来取代部分原先只能用操作系统任务调度器才能完成的定时 ...
- foreach ($users as $key=>$value)
1: foreach(array_name as $value) { statement; } 这里的array_name是你要遍历的数组名,每次循环中,array_name数组的当前元素的值被赋给$ ...
- Objective-C中的一些特殊的数据类型
nil nil和C语言的NULL相同,在objc/objc.h中定义.nil表示一个Objctive-C对象,这个对象的指针指向空(没有东西就是空). Nil 首字母大写的Nil和nil有一点不一样 ...
- python算法-汉诺塔问题
汉诺塔问题 初始状态: 思考:当盘子的个数是3的时候,大家写出移动顺序 移动的步骤: 3个盘子,从a到c 1.前面两个盘子,从a到b 1)把前面一个盘子,从a到c a->c 2)把第二个盘子 ...
- MyBatis配置文件中报错:URI is not registered(Settings | Languages & Frameworks | Schemas and DTDs)
如下错误: 解决办法: 在file->Settings中添加如下图所示: URI为出现红色部分的地址 点击OK后会发现: 这样就解决了!
- python - 数据驱动测试 - ddt
# -*- coding:utf-8 -*- ''' @project: jiaxy @author: Jimmy @file: study_ddt.py @ide: PyCharm Communit ...
- [linux time命令学习篇] time 统计命令执行的时间
注意: 命令后面一定要有分号; http://codingstandards.iteye.com/blog/798788 用途说明 time命令常用于测量一个命令的运行时间,注意不是用来显示和修改系统 ...