Aranyalma2

angry birds

Oct 10th, 2020
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.12 KB | None | 0 0
  1. /************************
  2.  * Author: Nemeth Balint
  3.  * Last Mod: 2020.10.04
  4.  * name: amgry birbs
  5.  ***********************/
  6.  
  7. #include <stdio.h>
  8. #include <math.h>
  9.  
  10. #define gravity 9.81 // m/s2
  11. #define PI 3.141592654
  12. #define rMadar 0.1 // m
  13. #define rMalac 0.1 // m
  14. #define hMadar 3 //m
  15. #define hMalac 7 // m
  16.  
  17.  
  18. double palya(int x, double alfa, int v0);
  19. double Ytransformer(double input);
  20. int Xtransformer(int input);
  21. void background(FILE *fp);
  22.  
  23. int main() {
  24.     FILE *fp;
  25.     fp = fopen("angry.svg","w");
  26.     //FILE
  27.     if (fp != NULL){
  28.         int distanceSTART = 30;
  29.         int difference = hMalac-hMadar;
  30.         double distanceEND, posY;
  31.  
  32.         //FIRST LINE
  33.         fprintf(fp, "<svg width=\"%d\" height=\"%d\" xmlns=\"http://www.w3.org/2000/svg\" "
  34.                     "version=\"1.1\">\n", 850, 250);
  35.         //BACKGROUND
  36.         background(fp);
  37.  
  38.         //MAIN
  39.         printf("Talalthoz szukseges ertekek: \n");
  40.         for(int v0 = 10; v0 <= 30; v0++) {
  41.             for (int alfa = 0; alfa <= 60; alfa += 5){
  42.                 posY = palya(distanceSTART, alfa/(180/PI), v0);
  43.                 distanceEND = sqrt(pow(posY-difference,2));
  44.  
  45.                 if(distanceEND < (rMadar + rMalac)){
  46.                     printf("Kezdo sebesseg: %d m/s || Szog: %d fok \n", v0, alfa);
  47.                     for(int posX = 0; posX <= 30; posX++){
  48.                         posY = palya(posX, alfa/(180/PI), v0);
  49.                         fprintf(fp, "   <circle cx=\"%d\" cy=\"%lf\" r=\"%d\" "
  50.                                     "stroke=\"black\" fill=\"black\" />"
  51.                                     "\n", Xtransformer(posX), Ytransformer(posY+hMadar), 1);
  52.                     }
  53.                 }
  54.             }
  55.         }
  56.         //LAST LINE
  57.         fprintf(fp, "</svg>");
  58.         //CLOSE THE FILE
  59.         fclose(fp);
  60.     }
  61.  
  62.     else {
  63.         perror("A fajl letrehozasa sikertelen");
  64.     }
  65.  
  66.     return 0;
  67. }
  68.  
  69. double palya(int x, double alfa, int v0){
  70.     //x szerinti pálya y
  71.     double posY = x*tan(alfa) - (gravity* pow(x,2))/(2*pow(v0,2)*pow(cos(alfa),2));
  72.     return posY;
  73. }
  74. void background(FILE *fp){
  75.     fprintf(fp, "   <rect width=\"850\" height=\"225\" fill=\"lightblue\"/>\n"); //háttér
  76.     fprintf(fp, "   <circle cx=\"0\" cy=\"0\" r=\"40\" fill=\"yellow\"/>\n"); //nap
  77.     fprintf(fp, "   <rect y=\"230\" width=\"850\" height=\"20\" fill=\"#5a2800\"/>\n"); //föld
  78.     fprintf(fp, "   <rect y=\"225\" width=\"850\" height=\"5\" fill=\"green\"/>\n"); //fű
  79.  
  80.     fprintf(fp, "   <circle cx=\"%d\" cy=\"%lf\" r=\"%lf\" stroke=\"green\""
  81.                 " fill=\"green\" />\n", Xtransformer(30), Ytransformer(hMalac), rMalac*25); //malac
  82.     fprintf(fp, "   <circle cx=\"%d\" cy=\"%lf\" r=\"%lf\" stroke=\"red\" "
  83.                 "fill=\"red\" />\n", 50, Ytransformer(hMadar), rMadar*25); //madár
  84. }
  85.  
  86. //Y COORD pozícionálás
  87. double Ytransformer(double input){
  88.     int sizeMultiplier = 25;
  89.     return input*sizeMultiplier*(-1)+10*sizeMultiplier;
  90. }
  91.  
  92. //X COORD pozícionálás
  93. int Xtransformer(int input){
  94.     int sizeMultiplier = 25;
  95.     int shiftR = 50;
  96.     return input*sizeMultiplier + shiftR;
  97. }
Add Comment
Please, Sign In to add comment