CSDN编程挑战里的题目

一个三角形必然存在它的内切圆与外接圆,求他们的面积比。
考虑到精度问题,我们输出面积比*1000的整数部分(直接下取整)。
输入数据是一个三角形的三个顶点,但这三个顶点在三维空间中,
所以输入是9个整数,分别表示三个顶点(x1,y1,z1) (x2,y2,z2) (x3,y3,z3),
保证三点不共线,每个整数在-1000,+1000范围内。
输出内接圆与外切圆的面积比*1000的整数部分。

这题好搞,图形学我是专业的.

 1 #include <cmath>
 2 #include <cstring>
 3 #include <cstdio>
 4 #include <cfloat>
 5
 6 // 内切圆半径
 7 // 内切圆半径r=2S/(a+b+c),其中S是三角形面积,a、b、c是三角形三边。
 8 // 另外S=根号下p(p-a)(p-b)(p-c),其中p=(a+b+c)/2
 9 float TrinagleInCircle(float xA, float yA, float zA,
10                        float xB, float yB, float zB,
11                        float xC, float yC, float zC)
12 {
13     float ab = (xA - xB)*(xA - xB) + (yA - yB)*(yA - yB) + (zA - zB)*(zA - zB);
14     float bc = (xC - xB)*(xC - xB) + (yC - yB)*(yC - yB) + (zC - zB)*(zC - zB);
15     float ca = (xA - xC)*(xA - xC) + (yA - yC)*(yA - yC) + (zA - zC)*(zA - zC);
16
17     ab = sqrtf(ab);
18     bc = sqrtf(bc);
19     ca = sqrtf(ca);
20
21     float p = (ab+bc+ca)/2;
22
23     float s = p*(p-ab)*(p-bc)*(p-ca);
24     if (s < FLT_EPSILON)
25     {
26         return 0.0f;
27     }
28     s = sqrtf(s);
29
30     if (ab+bc+ca < FLT_EPSILON)
31     {
32         return 0.0f;
33     }
34
35     float r = 2*s/(ab+bc+ca);
36
37     return r;
38 }
39
40 // 外接圆半径
41 // 已知三角形三边长a,b,c ,及其外接圆的半径R
42 // s=a*b*c/(4*R)      (多半用于求外接圆半径 R=a*b*c/(4*s)
43 float TrinagleOutCircle(float xA, float yA, float zA,
44                         float xB, float yB, float zB,
45                         float xC, float yC, float zC)
46 {
47     float ab = (xA - xB)*(xA - xB) + (yA - yB)*(yA - yB) + (zA - zB)*(zA - zB);
48     float bc = (xC - xB)*(xC - xB) + (yC - yB)*(yC - yB) + (zC - zB)*(zC - zB);
49     float ca = (xA - xC)*(xA - xC) + (yA - yC)*(yA - yC) + (zA - zC)*(zA - zC);
50
51     ab = sqrtf(ab);
52     bc = sqrtf(bc);
53     ca = sqrtf(ca);
54
55     float p = (ab+bc+ca)/2;
56
57     float s = p*(p-ab)*(p-bc)*(p-ca);
58     if (s < FLT_EPSILON)
59     {
60         return 0.0f;
61     }
62     s = sqrtf(s);
63
64     float r = ab*bc*ca/(4*s);
65
66     return r;
67 }
68
69 int ratio (int   x1,int   y1,int   z1,int   x2,int   y2,int   z2,int   x3,int   y3,int   z3)
70 {
71     float r = TrinagleInCircle(float(x1), float(y1), float(z1), float(x2), float(y2), float(z2), float(x3), float(y3), float(z3));
72     float R = TrinagleOutCircle(float(x1), float(y1), float(z1), float(x2), float(y2), float(z2), float(x3), float(y3), float(z3));
73     if (R < FLT_EPSILON || r < FLT_EPSILON)
74     {
75         return 0;
76     }
77     return (int)(1000*R*R/r/r);
78 }

转载于:https://my.oschina.net/abcijkxyz/blog/723629

三角形内切圆与外接圆的面积比相关推荐

  1. 关于三角形内切圆、外接圆的数学问题

    关于三角形内切圆.外接圆的数学问题 外接圆: 关于三角形的一些公式:

  2. 三角形内切圆与外接圆

    /*一个三角形必然存在它的内切圆与外接圆,求他们的面积比.考虑到精度问题,我们输出面积比*1000的整数部分(直接下取整). 输入数据是一个三角形的三个顶点,但这三个顶点在三维空间中,所以输入是9个整 ...

  3. 编程挑战之三角形内切圆与外接圆源码

    一个三角形必然存在它的内切圆与外接圆,求他们的面积比.考虑到精度问题,我们输出面积比*1000的整数部分(直接下取整). 输入数据是一个三角形的三个顶点,但这三个顶点在三维空间中,所以输入是9个整数, ...

  4. C语言,求内切圆与外接圆阴影面积

    一,内切圆 求阴影部分面积,其中已知三角形的三条边,内部白色的为该三角形的内切圆 输入 输入第一行一个整数T,代表接下来有T组测试数据. 对于每一组测试数据,输入3个整数a,b,c 数据范围: 数据保 ...

  5. 三角形的内切圆和外接圆--【英雄会】

    这个题目有一段时间了,不过当时正在准备考试,纵使有心刷题,奈何佛脚得抱,后来又被撤了,所以拖至今天... 如题:一个三角形必然存在它的内切圆与外接圆,求他们的面积比. 考虑到精度问题,我们输出面积比* ...

  6. java程序求内切圆_java 求三角形的内切圆,外接圆

    ================================= Triangle.java ============================== import java.awt.geom. ...

  7. java 圆的交点_Java:三角形的内切圆,外接圆

    ================================= Triangle.java ============================== import java.awt.geom. ...

  8. 编程挑战之三角形的内切圆与外接圆

    一个三角形必然存在它的内接圆与外切圆,求他们的面积比.考虑到精度问题,我们输出面积比*1000的整数部分(直接下取整). 输入数据是一个三角形的三个顶点,但这三个顶点在三维空间中,所以输入是9个整数, ...

  9. java 求三角形的内切圆,外接圆

    ================================= Triangle.java ============================== import java.awt.geom. ...

最新文章

  1. CentOS7最小化安装配置IP
  2. ubuntu等linux下自定义设置程序代理工具proxychains简介
  3. django+nginx+uwsgi部署web站点
  4. 不可不知的站群外推方法与技巧
  5. 一文带你读懂单目视觉SLAM数据关联优化
  6. UML学习总结(2)——StartUML 各种类图的例子
  7. python 人脸识别活体检测_基于Python+Keras+OpenCV实现实时人脸活体检测
  8. 篮球计分器软件_SPSS 26 综合性数学统计分析工具
  9. excel函数:VLOOKUP+IF多条件匹配取值(数组函数)
  10. 三菱PLC传送类指令应用
  11. vue-video-player 实现断点续播,currentTime不生效问题。
  12. 创业起步 中小型网吧的组建解决方案(转)
  13. 小霸王其乐无穷~FC红白机游戏600合集(支持mac 12.x系统)
  14. https安全证书过期的原因
  15. 网络环境切换,会导致虚拟机网络地址更换
  16. 凤凰新闻岳建雄:互联网已经成为传统行业
  17. ORA-00933:SQL 命令未正确结束(1)
  18. 小说网站源码开源,支持爬虫和原创双模式,小说自动采集/更新/纠错
  19. 日内趋势票如何把握?
  20. 设置DIV中的select水平垂直居中

热门文章

  1. DP专题--P1796 汤姆斯的天堂梦
  2. Octave在Mac上的下载安装基本使用
  3. js mysql query_nodejs mysql query data
  4. 程序员接私活_程序员接私活必备的11个开源项目!
  5. # Vue 中 JSON 编辑器使用
  6. iOS面向切面的TableView-AOPTableView
  7. 【干货+源码】树莓派实现车牌识别检测系统
  8. @keyframes深层理解
  9. SQL的一对多,多对一,一对一,多对多什么意思?
  10. bugzilla忘记管理员密码怎么办?