51nod 1298:圆与三角形(计算几何)
题目链接
判断圆和三角形是否相交 可以转化为 判断三条线段是否和圆相交
#include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<algorithm> using namespace std; typedef long long LL;const double eps=1e-8;struct point {double x,y;point operator -(const point& rhs){point ret;ret.x=x-rhs.x;ret.y=y-rhs.y;return ret;}double operator *(const point& rhs)//“叉乘” {return x*rhs.y-y*rhs.x;}double operator ^(const point& rhs)//“点乘” {return x*rhs.x+y*rhs.y;} }a[3],o; double r;double dist(point a,point b) //求点a,b的距离 {double x=a.x-b.x,y=a.y-b.y;return sqrt(x*x+y*y); } bool seg_cir(point a,point b) //判断线段ab是否与圆o相交 {if(dist(a,o)<r-eps&&dist(b,o)<r-eps)return false;else if((r-dist(a,o))*(r-dist(b,o))<=eps)return true;else{if(((b-a)^(o-a))<0||((a-b)^(o-b))<0)return false;double h=(a-o)*(b-o)/dist(a,b);h=fabs(h); // printf("%lf %lf\n",(b-a)*(o-a),(a-b)*(o-b)); // cout<<h<<"=========\n";return h<r+eps;} } bool ok() {for(int i=0;i<3;i++)if(seg_cir(a[i],a[(i+1)%3]))return true;return false; }int main() {int T;cin>>T;while(T--){cin>>o.x>>o.y>>r;for(int i=0;i<3;i++)cin>>a[i].x>>a[i].y;if(ok()) puts("Yes");else puts("NO");} }
转载于:https://www.cnblogs.com/Just--Do--It/p/6407443.html
51nod 1298:圆与三角形(计算几何)相关推荐
- 51Nod 1298 圆与三角形
题目链接: 51Nod 1298 圆与三角形 题目描述: 给出圆的圆心和半径,以及三角形的三个顶点,问圆同三角形是否相交.相交输出"Yes",否则输出"No". ...
- 51nod 1298 圆与三角形
1298 圆与三角形 题目来源: HackerRank 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 给出圆的圆心和半径,以及三角形的三个顶点,问圆同三 ...
- 51Nod 1298 圆与三角形相交 计算几何
51Nod-1298-圆与三角形 给出圆的圆心和半径,以及三角形的三个顶点,问圆同三角形是否相交.相交输出"Yes",否则输出"No".(三角形的面积大于0). ...
- (图论)51NOD 1298 圆与三角形
给出圆的圆心和半径,以及三角形的三个顶点,问圆同三角形是否相交.相交输出"Yes",否则输出"No".(三角形的面积大于0). 输入 第1行:一个数T,表示输入 ...
- 51nod 1298 圆与三角形(几何知识)
Description 给出圆的圆心和半径,以及三角形的三个顶点,问圆同三角形是否相交.相交输出"Yes",否则输出"No".(三角形的面积大于0). Inpu ...
- 51nod 1298
1298 圆与三角形 题目来源: HackerRank 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 给出圆的圆心和半径,以及三角形的三个顶点,问圆同三 ...
- 51Nod-1298 圆与三角形
1298 圆与三角形 题目来源: HackerRank 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 给出圆的圆心和半径,以及三角形的三个顶点,问圆同三 ...
- 51Nod 圆与三角形
给出圆的圆心和半径,以及三角形的三个顶点,问圆同三角形是否相交.相交输出"Yes",否则输出"No".(三角形的面积大于0). Input 第1行:一个数T,表 ...
- 51Nod - 1298(点到线段的距离)
链接:51Nod - 1298 题意: 给出圆的圆心和半径,以及三角形的三个顶点,问圆同三角形是否相交.相交输出"Yes",否则输出"No".(三角形的面积大于 ...
最新文章
- UNIX环境高级编程》笔记--getrlimit和setrlimit函数
- 类加载的三个阶段——加载、链接以及初始化,类的主动使用和被动使用
- 整型的赋值超出该类型的取值范围
- Python3赋值运算符
- 辽宁计算机专业院校排名2015,liaoning高校排行榜_辽宁高校排名 2015年辽宁省最佳大学排行榜...
- 用户调用机房收费下机中用到的策略与职责链解析
- latex如何取消自动编号_latex 取消自动编号
- c语言小游戏跳一跳代码及注释,c语言小游戏程序之弹跳小球的实现代码
- 2021年中国消费金融行业贷款情况及发展趋势分析:互联网消费金融放款规模达到20.2万亿[图]
- Ajax访问接口报错NET::ERR_CERT_REVOKED
- wishbone bus
- php访问微信云数据库,第三方服务器php获取微信小程序云开发access_token和云数据库...
- html左侧导航菜单多级,css3多级菜单导航栏、侧边菜单栏
- html5 audio音乐播放,循环播放等9款播放器
- 新的开始,与大学告别
- 认识Python控制流
- 【QT】Windows下QT下载安装
- python编程水上行走_普通人如何水上行走,只要速度足够的快,何愁不能水上漂...
- Android9--android 10.0 去掉未知来源弹窗 默认授予安装未知来源权限
- 浅谈初中计算机机房管理,浅谈高校计算机机房管理.pdf