专栏文章
题解:AT_abc197_d [ABC197D] Opposite
AT_abc197_d题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mipv2wy4
- 此快照首次捕获于
- 2025/12/03 18:25 3 个月前
- 此快照最后确认于
- 2025/12/03 18:25 3 个月前
题解:AT_abc197_d [ABC197D] Opposite
看到一堆向量的题解,过来水一篇三角函数的。
1. 题目理解
题目给定一个正 边形( 为偶数),并且给出了两个顶点的坐标: 和 。要求我们求出下一个顶点 的坐标。
2. 解题思路
正 边形的所有顶点均匀分布在以中心为圆心的圆上。因此,我们可以通过旋转的方式来求出其他顶点的坐标。给定一个点 ,绕原点旋转角度 后的新坐标 可以通过以下公式计算:
由于正 边形的中心是 和 的中点,我们可以先求出中心点的坐标:
正 边形的每个顶点之间的旋转角度为 。将 绕中心点旋转 角度,得到 的坐标,这道题就做完啦。
3. 代码实现
CPP#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
double x0, y0, xn2, yn2;
cin >> n >> x0 >> y0 >> xn2 >> yn2;
double cenx = (x0 + xn2) / 2.0;
double ceny = (y0 + yn2) / 2.0;
double theta = 2 * M_PI / n;
double x = x0 - cenx;
double y = y0 - ceny;
double x1 = x * cos(theta) - y * sin(theta);
double y1 = x * sin(theta) + y * cos(theta);
x1 += cenx;
y1 += ceny;
cout << fixed << setprecision(11) << x1 << " " << y1 << "\n";
return 0;
}
直接 水掉哦~
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...