51 nod 1298 圆与三角形 【计算几何】
来源:互联网 发布:一键4g网络解锁助手 编辑:程序博客网 时间:2024/06/05 00:19
#include <iostream>#include <cstdio>using namespace std;typedef long long ll;typedef struct { ll x, y;} Point;Point A, B, C, O;ll r;ll distance(Point *p_1, Point *p_2) { return (p_1->x - p_2->x) * (p_1->x - p_2->x) + (p_1->y - p_2->y) * (p_1->y - p_2->y);}int segOnCircle(Point *p_1, Point *p_2) { ll a, b, c, dist_1, dist_2, angle_1, angle_2; // ax + by + c = 0; if (p_1->x == p_2->x) { // 当x相等 a = 1, b = 0, c = -p_1->x; } else if (p_1->y == p_2->y) { // 当y相等 a = 0, b = 1, c = -p_1->y; } else { a = p_1->y - p_2->y; b = p_2->x - p_1->x; c = p_1->x * p_2->y - p_1->y * p_2->x; } dist_1 = a * O.x + b * O.y + c; dist_1 *= dist_1; dist_2 = (a * a + b * b) * r * r; if (dist_1 > dist_2) { return 0; } angle_1 = (O.x - p_1->x) * (p_2->x - p_1->x) + (O.y - p_1->y) * (p_2->y - p_1->y); angle_2 = (O.x - p_2->x) * (p_1->x - p_2->x) + (O.y - p_2->y) * (p_1->y - p_2->y); if (angle_1 > 0 && angle_2 > 0) { return 1; } return 0;// 判断是否相交,相交返回1,否则返回0}int intersect() { ll distA = distance(&O, &A); // OA^2 ll distB = distance(&O, &B); // OB^2 ll distC = distance(&O, &C); // OC^2 ll r2 = r * r; // r^2 if (distA < r2 && distB < r2 && distC < r2) { // 圆包含三角形 return 0; } else if (distA > r2 && distB > r2 && distC > r2) { // 三点都在圆外 return segOnCircle(&A, &B) || segOnCircle(&A, &C) || segOnCircle(&B, &C); // 都不相交返回0,反之,返回1 } return 1;}int main() { int t; scanf("%d", &t); while (t--) { scanf("%lld%lld%lld%lld%lld%lld%lld%lld%lld", &O.x, &O.y, &r, &A.x, &A.y, &B.x, &B.y, &C.x, &C.y); printf("%s\n", intersect() ? "Yes" : "No"); } return 0;}
阅读全文
0 0
- 【51Nod】1298 - 圆与三角形(计算几何)
- 51Nod 1298 圆与三角形 (计算几何)
- 51nod 1298 圆与三角形(计算几何)
- 51nod 1298 圆与三角形(计算几何)
- 51Nod 1298:圆与三角形(计算几何)
- 51 nod 1298 圆与三角形 【计算几何】
- 51nod 1298 圆与三角形(基础题,计算几何)
- 51nod oj 1298 圆与三角形 【数学几何】
- 1298 圆与三角形(计算几何)
- 计算几何类型,圆与三角形的距离 51Nod1298
- 51nod 1298 圆与三角形
- 51Nod 1298 圆与三角形
- [51nod]1298 圆与三角形
- 51nod 1298 圆与三角形
- 51nod 1298 圆与三角形
- 51nod--1298 圆与三角形
- 51nod 1298 圆与三角形
- 51NOD 1298 圆与三角形
- Javafx FXMLLoader的一个坑
- 多进程和多线程的比较
- <10/9>打卡随笔
- 用代码获取unity打包安卓apk的md5值
- UVa 120 Stacks of Flapjacks 摞煎饼
- 51 nod 1298 圆与三角形 【计算几何】
- mysql的8小时空闲,断开连接的问题
- YOLO论文翻译(待续)
- XTU 1273 set
- RHEL7CentOS7 精简操作指令
- ctguoj--考新郎(排列组合+错排公式)
- 例题8-1:煎饼
- 由冒泡排序想到的
- 例题8-2:联合国大楼