图像识别出了9个点,那么如何进行排序呢?
下面写出的代码是我项目真实应用的,然后使用了
三角形辨别 和 线性规划的知识
感觉还是有点高端的,拿出来与大家分享
#include <iostream>
using namespace std;
/*
P结构体存原数据
res结构体存排序后的数据
测试数据:
400 450
380 500
600 620
450 820
350 810
350 790
600 326
750 486
860 593
*/
#define nums 9
struct pos1{
int x;
int y;
int flag;
}P[10];
struct pos2{
int x;
int y;
}res[10];
int max_y(){
int max = 0,flag=0,pos;
for(int i=0;i<nums;i++){
if(P[i].flag){
if(P[i].y>max){
max = P[i].y;
pos = i;
}
}
}
P[pos].flag = 0;
return pos;
}
int min_x(){
int min = 99999999,flag=0,pos;
for(int i=0;i<nums;i++){
if(P[i].flag){
if(P[i].x<min){
min = P[i].y;
pos = i;
}
}
}
P[pos].flag = 0;
return pos;
}
int main(){
int max,pos,min;
for(int i=0;i<nums;i++){
cin>>P[i].x>>P[i].y;
P[i].flag = 1;
}
// 第一个点,找X最大的
max = 0;
for(i=0;i<nums;i++){
if(P[i].x>max){
max = P[i].x;
pos = i;
}
}
res[0].x = P[pos].x;
res[0].y = P[pos].y;
P[pos].flag = 0; //表示已经被用了
//第三个点,找Y轴最小的
min = 999999999;
for(i=0;i<nums;i++){
if(P[i].flag){