POJ-4042(简单几何)(Regular Convex Polygon )
来源:互联网 发布:java工程师证书考试 编辑:程序博客网 时间:2024/05/15 16:48
【转载自】http://blog.ac521.org/?p=135&replytocom=24
【题目描述】
给你三个顶点,这三个点是一个正多边形上的顶点,问这个正多边形最少有多少个边?
【解题思路】
三个点,三角形–>外接圆–>必定也是该凸多边形的外接圆-
我们可以把三个点当做一个三角形放在它的外接圆上,然后求出每个角的度(即三角形分的三个弧度所对应的圆周角),设顶点数为n,我们只需计算,三角形任意两点所对应的圆心角是否是2PI/n的倍数就可以了、、、并且i很小,可以枚举。
【题目描述】
给你三个顶点,这三个点是一个正多边形上的顶点,问这个正多边形最少有多少个边?
【解题思路】
三个点,三角形–>外接圆–>必定也是该凸多边形的外接圆-
我们可以把三个点当做一个三角形放在它的外接圆上,然后求出每个角的度(即三角形分的三个弧度所对应的圆周角),设顶点数为n,我们只需计算,三角形任意两点所对应的圆心角是否是2PI/n的倍数就可以了、、、并且i很小,可以枚举。
在计算圆心角是否是2PI/n的倍数的时候,有一个小技巧,具体看代码
bool zero(double n){return n < EPS && n > -EPS;}double dis(double x1, double y1, double x2, double y2){ return sqrt((x2-x1) * (x2-x1) + (y2-y1) * (y2-y1));}double angle(double a, double b, double c){return acos((a * a + b * b - c * c) / (2 * a * b));}bool check(double n){return zero(n-(int)(n + 0.5));}int main() {double x[3], y[3], a, b, c, A, B, C;while (scanf("%lf%lf", &x[0], &y[0]) ) {scanf("%lf%lf", &x[1], &y[1]); scanf("%lf%lf", &x[2], &y[2]);a = dis(x[0], y[0], x[1], y[1]);b = dis(x[1], y[1], x[2], y[2]);c = dis(x[2], y[2], x[0], y[0]);A = angle(a, b, c) / MY_PI;B = angle(b, c, a) / MY_PI;C = angle(c, a, b) / MY_PI;int i;for (i = 3; i <= 1000; i++)if (check(A * i) && check(B * i) && check(C * i))break; cout<<i<<endl;}return 0;}
- POJ-4042(简单几何)(Regular Convex Polygon )
- hdu6055 Regular polygon(简单计算几何)
- HDU 4195 Regular Convex Polygon(正多边形)
- uva 12300 - Smallest Regular Polygon(几何)
- HDU 6055 Regular polygon(几何)
- hdu 4033 Regular Polygon (几何题 二分答案)
- uva 12300 Smallest Regular Polygon(计算几何)
- HDU 6055 Regular polygon(几何数学)(多校2)
- Regular polygon(2017多校联赛2。 计算几何)
- HDU 6055 Regular polygon (计算几何 + 国家队论文结论)
- hdoj 4195 Regular Convex Polygon(余弦定理+正凸多边形性质)
- Regular polygon 数学几何
- poj 2007 Scrambled Polygon(计算几何)
- POJ-2007 Scrambled Polygon(计算几何)
- hdu - 4159 - Regular Convex Polygon - 精度问题
- Regular polygon(HDU 6055)
- HDU6055 Regular polygon(思路)
- HDU 6055 Regular polygon【几何】
- 视觉中常见坐标系
- SUSE上装svn客户端(svn client)
- Android设置横屏显示
- 关于(javascript) "if"关键字的一个疑惑的地方
- WPF开发示例,详细操作步骤
- POJ-4042(简单几何)(Regular Convex Polygon )
- QTP 怎么判断一个文件是否存在
- MFC使用Skin++
- OGR根据FID删除矢量中的某个要素(多边形)
- gpg学习
- Java根据word模板生成word文档之总结
- Android学习札记7:ProgressBar水平进度条的颜色设置
- 错误消息:'events' 为空或不是对象
- c++ 容器类 概括性介绍