请给出C代码,以任意顺序输入任意四边形的四个坐标,按顺时针排列四个坐标
时间: 2023-11-11 14:04:12 浏览: 47
以下是一个简单的 C 代码实现:
```c
#include <stdio.h>
int main() {
float x1, y1, x2, y2, x3, y3, x4, y4;
printf("请输入四边形的四个坐标(x,y):\n");
scanf("%f,%f", &x1, &y1);
scanf("%f,%f", &x2, &y2);
scanf("%f,%f", &x3, &y3);
scanf("%f,%f", &x4, &y4);
// 按顺时针排列四个坐标
float cx = (x1 + x2 + x3 + x4) / 4.0; // 计算中心点坐标
float cy = (y1 + y2 + y3 + y4) / 4.0;
float tmpx, tmpy;
float angle[4];
angle[0] = atan2(y1 - cy, x1 - cx);
angle[1] = atan2(y2 - cy, x2 - cx);
angle[2] = atan2(y3 - cy, x3 - cx);
angle[3] = atan2(y4 - cy, x4 - cx);
for (int i = 0; i < 3; i++) {
for (int j = i + 1; j < 4; j++) {
if (angle[i] > angle[j]) {
tmpx = angle[i];
angle[i] = angle[j];
angle[j] = tmpx;
tmpx = *(float*)((long long)(&x1) + (long long)((&y1 - &x1) * (i + 1)));
tmpy = *(float*)((long long)(&x1) + (long long)((&y1 - &x1) * (j + 1)));
*(float*)((long long)(&x1) + (long long)((&y1 - &x1) * (i + 1))) = tmpy;
*(float*)((long long)(&x1) + (long long)((&y1 - &x1) * (j + 1))) = tmpx;
}
}
}
printf("按顺时针排列后的四个坐标为:\n(%.2f,%.2f), (%.2f,%.2f), (%.2f,%.2f), (%.2f,%.2f)\n", x1, y1, x2, y2, x3, y3, x4, y4);
return 0;
}
```
该程序通过输入四边形的四个坐标,计算出四个点与中心点的夹角,然后按照夹角从小到大排序,最后输出排序后的四个坐标。注意,该程序假设输入的四个点不会共线。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![c](https://img-home.csdnimg.cn/images/20210720083646.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)