Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int metka(int x1,int y1,int x2,int y2,int x3,int y3,int x4,int y4,int x5,int y5){//возвращает угл поворота (0-метка вверхб по часовой)
- struct point{
- int x;
- int y;
- };
- point points[5];
- points[0].x=x1;points[0].y=y1;
- points[1].x=x2;points[1].y=y2;
- points[2].x=x3;points[2].y=y3;
- points[3].x=x4;points[3].y=y4;
- points[4].x=x5;points[4].y=y5;
- struct dli{
- int x1; int y1;
- int x2; int y2;
- double s;
- };
- dli dlin[20];
- int k=0;
- for(int i=0;i<5;i++){
- for(int g=0;g<5;g++){
- if(i!=g){
- dlin[k].x1=points[i].x;
- dlin[k].x2=points[g].x;
- dlin[k].y1=points[i].y;
- dlin[k].y2=points[g].y;
- 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));
- k++;
- }
- }
- }
- bool flag =true;
- while (flag) {
- flag=false;
- for(int i=0;i<19;i++){
- if(dlin[i].s<dlin[i+1].s){
- flag=true;
- dli vrem=dlin[i];
- dlin[i]=dlin[i+1];
- dlin[i+1]=vrem;
- }
- }
- }
- dli vector;
- dli lin[2];
- lin[0]=dlin[0];
- for (int i=1;i<4;i++){
- 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){
- lin[1]=dlin[i];
- break;
- }
- }
- struct liny{
- int x;int y;
- };
- liny mass[4];
- liny tochk[2];
- mass[0].x=lin[0].x1;mass[0].y=lin[0].y1;
- mass[1].x=lin[0].x2;mass[1].y=lin[0].y2;
- mass[2].x=lin[1].x1;mass[2].y=lin[1].y1;
- mass[3].x=lin[1].x2;mass[3].y=lin[1].y2;
- for (int i=0;i<4;i++){
- for (int g=0;g<4;g++){
- if (i!=g){
- if (mass[i].x==mass[g].x && mass[i].y==mass[g].y){
- vector.x2=mass[i].x;vector.y2=mass[i].y;
- }
- }
- }
- }
- int k1=0;
- for(int i=0;i<4;i++){
- if (mass[i].x!=vector.x2 && mass[i].y!=vector.y2){
- tochk[k1].x=mass[i].x;tochk[k1].y=mass[i].y;k1++;
- }
- }
- vector.x1=(tochk[0].x+tochk[1].x)/2;
- vector.y1=(tochk[0].y+tochk[1].y)/2;
- bool flak;
- if (vector.x2<vector.x1){ flak=true;/*первая половина*/}else{flak=false;/*вторая половина*/}
- Serial.print(vector.x1);Serial.print(" ");
- Serial.print(vector.y1);Serial.print(" ");
- Serial.print(vector.x2);Serial.print(" ");
- Serial.print(vector.y2);Serial.println(" ");
- double s=sqrt((vector.x2-vector.x1)*(vector.x2-vector.x1)+(vector.y2-vector.y1)*(vector.y2-vector.y1));
- vector.x1=vector.x2-vector.x1;
- vector.y1=vector.y2-vector.y1;
- int chislitel=vector.x1*0+vector.y1*10;
- double alpha=acos(chislitel/(s*10));
- double ug=(alpha*180/3.1415926535897932384626433832795);
- double res=0;
- if (flak){
- res=360-ug;
- }else{
- res=ug;
- }
- return res;
- }
- void setup() {
- Serial.begin(9600);
- Serial.print(metka(0,0,3,0,6,0,3,5,3,8));
- }
- void loop() {
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement