Guest User

main.cpp

a guest
Dec 6th, 2013
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.55 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3. #include <windows.h>
  4. #include <tchar.h>
  5. #include <conio.h>
  6. #include <strsafe.h>
  7. #include "Particle.h"
  8. #include <cstdlib>
  9. #include <vector>
  10. #include <random>
  11. #include <cmath>
  12. #include <ctime>
  13.  
  14. using namespace std;
  15.  
  16. void run(vector<Particle> particles, double interval){
  17.     bool counting = true;
  18.     time_t timer;
  19.     double f = 0;
  20.     time_t startTime = time(&timer);
  21.     while (true){
  22.         for (unsigned int i = 0; i < particles.size(); i++){
  23.             double yAcceleration = 0;
  24.             double xAcceleration = 0;
  25.             for (unsigned int j = 0; j < particles.size(); j++){
  26.                 if (j != i){
  27.                     double distance = sqrt(pow(particles[j].getX() - particles[i].getX(), 2) + pow(particles[j].getY() - particles[i].getY(), 2));
  28.                     if (distance > 5){
  29.                         double acceleration = 5 * particles[j].getMass() / pow(distance, 2);
  30.                         double angle = atan((particles[j].getY() - particles[i].getY()) / ((particles[j].getX() - particles[i].getX())));
  31.                         if (particles[j].getY() - particles[i].getY()<0 && particles[j].getX() - particles[i].getX()<0){
  32.                             yAcceleration -= sin(angle) * acceleration;
  33.                             xAcceleration -= cos(angle) * acceleration;
  34.  
  35.                         }if (particles[j].getY() - particles[i].getY()>0 && particles[j].getX() - particles[i].getX()>0){
  36.                             yAcceleration += sin(angle) * acceleration;
  37.                             xAcceleration += cos(angle) * acceleration;
  38.                         }
  39.                         if (particles[j].getY() - particles[i].getY()>0 && particles[j].getX() - particles[i].getX()<0){
  40.                             yAcceleration -= sin(angle) * acceleration;
  41.                             xAcceleration -= cos(angle) * acceleration;
  42.                         }
  43.                         if (particles[j].getY() - particles[i].getY()<0 && particles[j].getX() - particles[i].getX()>0){
  44.                             yAcceleration += sin(angle) * acceleration;
  45.                             xAcceleration += cos(angle) * acceleration;
  46.                         }
  47.                     }
  48.                     else{
  49.                         particles[i].inverseDirection();
  50.                         particles[j].inverseDirection();
  51.                     }
  52.                 }
  53.             }
  54.             particles[i].countAcceleration(xAcceleration, yAcceleration, interval);
  55.         }
  56.         for (unsigned int i = 0; i < particles.size(); i++){
  57.             particles[i].move(interval);
  58.         }
  59.         f++;
  60.         if (time(&timer) - startTime>0){
  61.             cout << "q/t = " << f / (time(&timer) - startTime) << endl;
  62.         }
  63.     }
  64. }
  65.  
  66. int main(){
  67.     SetConsoleTitle(_T("Titleusan, what are you doing?"));
  68.     int particleAmount;
  69.     cin >> particleAmount;
  70.     static double interval = 0.1;
  71.     vector<Particle> particles;
  72.     for (int i = 0; i < particleAmount; i++){
  73.         particles.push_back(Particle((rand() % 924) + 50, (rand() % 668) + 50, (rand() % 5) + 1));
  74.     }
  75.     run(particles, interval);
  76. }
Advertisement
Add Comment
Please, Sign In to add comment