Advertisement
daniil897

metka

Feb 22nd, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.00 KB | None | 0 0
  1. int metka(int x1,int y1,int x2,int y2,int x3,int y3,int x4,int y4,int x5,int y5){//возвращает угл поворота (0-метка вверхб по часовой)
  2.   struct point{
  3.     int x;
  4.     int y;
  5.   };
  6.   point points[5];
  7.   points[0].x=x1;points[0].y=y1;
  8.   points[1].x=x2;points[1].y=y2;
  9.   points[2].x=x3;points[2].y=y3;
  10.   points[3].x=x4;points[3].y=y4;
  11.   points[4].x=x5;points[4].y=y5;
  12.   struct dli{
  13.     int x1; int y1;
  14.     int x2; int y2;  
  15.     double s;
  16.   };
  17.   dli dlin[20];
  18.   int k=0;
  19.   for(int i=0;i<5;i++){
  20.     for(int g=0;g<5;g++){
  21.       if(i!=g){
  22.         dlin[k].x1=points[i].x;
  23.         dlin[k].x2=points[g].x;
  24.         dlin[k].y1=points[i].y;
  25.         dlin[k].y2=points[g].y;
  26.         dlin[k].s=sqrt((dlin[k].x2-dlin[k].x1)*(dlin[k].x2-dlin[k].x1)+(dlin[k].y2-dlin[k].y1)*(dlin[k].y2-dlin[k].y1));
  27.         k++;
  28.       }
  29.     }
  30.   }
  31.   bool flag =true;
  32.   while (flag) {
  33.     flag=false;
  34.     for(int i=0;i<19;i++){
  35.       if(dlin[i].s<dlin[i+1].s){
  36.         flag=true;
  37.         dli vrem=dlin[i];
  38.         dlin[i]=dlin[i+1];
  39.         dlin[i+1]=vrem;
  40.       }
  41.     }
  42.   }
  43.   dli vector;
  44.   dli lin[2];
  45.   lin[0]=dlin[0];
  46.   for (int i=1;i<4;i++){
  47.     if (((dlin[i].x1==lin[0].x1 && dlin[i].y1==lin[0].y1 && dlin[i].x2==lin[0].x2 && dlin[i].y2==lin[0].y2) || (dlin[i].x1==lin[0].x2 && dlin[i].y1==lin[0].y2 && dlin[i].x2==lin[0].x1 && dlin[i].y2==lin[0].y1)) ==false){
  48.       lin[1]=dlin[i];
  49.       break;
  50.     }
  51.   }
  52.  
  53.  
  54.   struct liny{
  55.     int x;int y;
  56.   };
  57.   liny mass[4];
  58.   liny tochk[2];
  59.   mass[0].x=lin[0].x1;mass[0].y=lin[0].y1;
  60.   mass[1].x=lin[0].x2;mass[1].y=lin[0].y2;
  61.   mass[2].x=lin[1].x1;mass[2].y=lin[1].y1;
  62.   mass[3].x=lin[1].x2;mass[3].y=lin[1].y2;
  63.   for (int i=0;i<4;i++){
  64.     for (int g=0;g<4;g++){
  65.       if (i!=g){
  66.         if (mass[i].x==mass[g].x && mass[i].y==mass[g].y){
  67.           vector.x2=mass[i].x;vector.y2=mass[i].y;
  68.         }
  69.       }
  70.     }
  71.   }
  72.   int k1=0;
  73.   for(int i=0;i<4;i++){
  74.     if (mass[i].x!=vector.x2 && mass[i].y!=vector.y2){
  75.       tochk[k1].x=mass[i].x;tochk[k1].y=mass[i].y;k1++;
  76.     }
  77.   }
  78.   vector.x1=(tochk[0].x+tochk[1].x)/2;
  79.   vector.y1=(tochk[0].y+tochk[1].y)/2;
  80.   bool flak;
  81.   if (vector.x2<vector.x1){ flak=true;/*первая половина*/}else{flak=false;/*вторая половина*/}
  82.     Serial.print(vector.x1);Serial.print(" ");
  83.     Serial.print(vector.y1);Serial.print(" ");
  84.     Serial.print(vector.x2);Serial.print(" ");
  85.     Serial.print(vector.y2);Serial.println(" ");
  86.     double s=sqrt((vector.x2-vector.x1)*(vector.x2-vector.x1)+(vector.y2-vector.y1)*(vector.y2-vector.y1));
  87.     vector.x1=vector.x2-vector.x1;
  88.     vector.y1=vector.y2-vector.y1;
  89.     int chislitel=vector.x1*0+vector.y1*10;
  90.     double alpha=acos(chislitel/(s*10));
  91.     double ug=(alpha*180/3.1415926535897932384626433832795);
  92.     double res=0;
  93.     if (flak){
  94.       res=360-ug;
  95.     }else{
  96.       res=ug;
  97.     }
  98.     return res;
  99. }
  100.  
  101. void setup() {
  102.  Serial.begin(9600);
  103.  Serial.print(metka(0,0,3,0,6,0,3,5,3,8));
  104. }
  105.  
  106.  
  107.  
  108. void loop() {
  109.  
  110.  
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement