给定三角形,求三个两两相切且与三角形的一条边相切的圆的半径。

二分一个半径,可以得出另外两个半径,需要推一推公式(太久了,我忘记了)

#include<cstdio>
#include<cmath>
#define eps (1e-8)
#define sqr(a) (a)*(a)
#define min(a,b) (a)>(b)?(b):(a)
#define dd double
struct point{dd x,y,v,a;//点x,y,v为角度,a为边长
}q[10];
dd r0,r1,r2,r3;
int read(){int f=0;for(int i=0;i<3;i++){scanf("%lf%lf",&q[i].x,&q[i].y);if(q[i].x||q[i].y) f=1;}return f;
}
dd make(dd r,dd a,dd h,dd n){dd t=r-r/tan(h)/tan(n)+a/tan(n);if(t<=eps)return -1;return sqr((sqrt(t)-sqrt(r))*tan(n));
}
void solve(){dd l=0,r=min(q[0].a*tan(q[0].v),q[2].a*tan(q[2].v));while(r-l>eps){r0=(l+r)/2;r1=make(r0,q[0].a,q[0].v,q[1].v);r2=make(r0,q[2].a,q[0].v,q[2].v);if(r1<=eps||r2<=eps||r2/tan(q[2].v)+r1/tan(q[1].v)+2*sqrt(r2*r1)-q[1].a<eps)r=r0;elsel=r0;}
}
int main(){while(read()){for(int i=0;i<3;i++)q[i].a=sqrt(sqr(q[(i+1)%3].x-q[i].x)+sqr(q[(i+1)%3].y-q[i].y));//计算边长for(int i=0;i<3;i++)q[i].v=acos((sqr(q[i].a)+sqr(q[(i+2)%3].a)-sqr(q[(i+1)%3].a))/2/q[i].a/q[(i+2)%3].a)/2;solve();printf("%lf %lf %lf\n",r0,r1,r2);}
}

  

【UVALive 4642】Malfatti Circles(圆,二分)相关推荐

  1. [51Nod](1278)相离的圆 ---- 二分查找

    平面上有N个圆,他们的圆心都在X轴上,给出所有圆的圆心和半径,求有多少对圆是相离的. 例如:4个圆分别位于1, 2, 3, 4的位置,半径分别为1, 1, 2, 1,那么{1, 2}, {1, 3} ...

  2. 51NOD 1278 相离的圆(二分 + 排序 好题)

    平面上有N个圆,他们的圆心都在X轴上,给出所有圆的圆心和半径,求有多少对圆是相离的. 例如:4个圆分别位于1, 2, 3, 4的位置,半径分别为1, 1, 2, 1,那么{1, 2}, {1, 3} ...

  3. 51nod 1278 相离的圆 二分+排序

    1278 相离的圆 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 平面上有N个圆,他们的圆心都在X轴上,给出所有圆的圆心和半径,求有多少对圆是相离的. 例如:4个 ...

  4. Opencv——霍夫变换以及遇到的一些问题

    目录 问题1 :颜色空间转换函数参数问题:CV_BGR2GRAY vs CV_GRAY2BGR 问题2:cvRound().cvFloor().cvCeil()函数用法 霍夫变换的含义 标准霍夫直线变 ...

  5. uni-app 引用地图

    插件市场引用为 https://ext.dcloud.net.cn/plugin?id=615 插件引用后进行了部分修改 目录 index页面 组件页面  [创建nvue文件] 生成高德地图Key i ...

  6. uniapp中进行地图定位

    最近在用uniapp接入地图部分,之前用第三方的高德地图接入,内置浏览器正常显示,但是真机调试及打包测试是发现地图页空白 1.先获取appkey 获取高德地图KEY 2.引入map <map : ...

  7. Opencv C++图像处理(全)

    文章目录 Opencv官方资料 一.入门基础 1.1.头文件说明:#include <opencv2/opencv.hpp> 1.2.头文件说明:#include <opencv2/ ...

  8. 数学术语的英汉对照(权威,全面)

    abbreviation 简写符号:简写 abscissa 横坐标 absolute complement 绝对补集 absolute error 绝对误差 absolute inequality 绝 ...

  9. 数学英语词汇 (1)

    abbreviation 简写符号:简写 abscissa 横坐标 absolute complement 绝对补集 absolute error 绝对误差 absolute inequality 绝 ...

最新文章

  1. 关于知识整理、积累与记忆
  2. 启明云端分享| 在应用启明云端sigmastar SSD201 / SSD202D核心板时,ISP烧录uboot遇到问题怎么解决呢
  3. WebBrowser控件跨域访问页面内容
  4. PAT_B_1053_Java(20分)
  5. 开源一站式移动应用生成平台Jingub系列(0):背景资料介绍
  6. 傅立叶变换系列(四)离散傅立叶变换
  7. Java springboot B2B2C o2o多用户商城 springcloud架构 (六)springboot整合mybatis
  8. 计算机毕业设计ssm图书管理系统
  9. matlab导入vgg16,简单导入VGG16
  10. 接口文档生成工具ApiPost挺好用
  11. 浏览器验证码图片(缩略图)显示不出来问题解决办法
  12. java抽象类和普通类_抽象类和普通类的区别是什么?java类和抽象类的区别
  13. cad文字递增快捷键_Auto CAD2014数字递增复制快捷键是什么呢?
  14. 建议平面设计爱好者要学的软件,和一些CDR常见问题
  15. python判断火车票座位号分布图_火车座位分布图
  16. 解决pycharm终端/cmd运行python脚本报错“ImportError/ModuleNotFoundError:No Module named ...”
  17. 实时风控引擎项目部署
  18. 图书管理系统课设报告(含用例图、通信图、顺序图、状态图、活动图)
  19. 机器学习中最小二乘与梯度下降发的区别
  20. 单系统 台电x80pro_转载:台电X80 Pro Plus 刷Windows10单系统

热门文章

  1. 为什么程序员都不喜欢使用 switch ,而是大量的 if……else if ?
  2. 鱼佬:我的数据挖掘之路!
  3. 基于OpenCV的彩色空间互转
  4. 常用数据增广方法,解决数据单一问题
  5. Colab不好用,有人花两年开发了一个新notebook,支持实时协作还更快
  6. SOTA论文也未必能被接收,谷歌科学家Eric Jang谈顶会审稿标准
  7. 2020年最火本科生专业来了!180所高校新增人工智能专业
  8. 推荐一款常用的IDE插件,越用越喜欢
  9. “2017 和 2019的对比”刷屏!各路高手出招,画风逐渐失控
  10. 自然语言处理(NLP)之使用LSTM进行文本情感分析