Porządkowanie punktów

0

Programowanie w cpp (wykorzystanie opencv).

Jest ktoś w stanie pomóc? :)

1

Oezu.

  1. Gdybyś tych punktów miał 50 to także robiłbyś ctrl+c ctrl+v? Wykorzystaj pętlę.
  2. Pozwól mi zacząć:
Point input[3]; // punkty wejściowe (Twoje "p")
Point output[3]; // punkty wyjściowe (posortowane)

/* ... */

double distances[3];

Zacznij od zrobienia tak, aby w tablicy distances znajdowały się odległości tych trzech punktów od środka układu współrzędnych. Wykorzystaj pętlę for.

1

Polecam inne podejście: http://ideone.com/B3vK8K

#include <stdio.h>
#include <math.h>

typedef struct Point { int x,y; } Point;
typedef int CMP(const void *a,const void *b);

int cmpA(const Point *a,const Point *b)
  {
   double A=hypot(a->x,a->y),B=hypot(b->x,b->y);
   return ((A)>(B))-((A)<(B));
  }

int cmpB(const Point *a,const Point *b)
  {
   return  ((a->y)>(b->y))-((a->y)<(b->y));
  }
  
int cmpC(const Point *a,const Point *b)
  {
   return ((a->x)>(b->x))-((a->x)<(b->x));
  }
  
int main()
  {
   Point p[4]={{500,662},{921,660},{495,149},{839,421}};
   qsort(p+0,4,sizeof(Point),(CMP*)&cmpA);
   qsort(p+1,3,sizeof(Point),(CMP*)&cmpB);
   qsort(p+2,2,sizeof(Point),(CMP*)&cmpC);
   for(size_t i=0;i<4;++i) printf("(%d,%d)\n",p[i].x,p[i].y);
   return 0;
  }

1 użytkowników online, w tym zalogowanych: 0, gości: 1