Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstring>
- #include <windows.h>
- #include <tchar.h>
- #include <conio.h>
- #include <strsafe.h>
- #include "Particle.h"
- #include <cstdlib>
- #include <vector>
- #include <random>
- #include <cmath>
- #include <ctime>
- using namespace std;
- void run(vector<Particle> particles, double interval){
- bool counting = true;
- time_t timer;
- double f = 0;
- time_t startTime = time(&timer);
- while (true){
- for (unsigned int i = 0; i < particles.size(); i++){
- double yAcceleration = 0;
- double xAcceleration = 0;
- for (unsigned int j = 0; j < particles.size(); j++){
- if (j != i){
- double distance = sqrt(pow(particles[j].getX() - particles[i].getX(), 2) + pow(particles[j].getY() - particles[i].getY(), 2));
- if (distance > 5){
- double acceleration = 5 * particles[j].getMass() / pow(distance, 2);
- double angle = atan((particles[j].getY() - particles[i].getY()) / ((particles[j].getX() - particles[i].getX())));
- if (particles[j].getY() - particles[i].getY()<0 && particles[j].getX() - particles[i].getX()<0){
- yAcceleration -= sin(angle) * acceleration;
- xAcceleration -= cos(angle) * acceleration;
- }if (particles[j].getY() - particles[i].getY()>0 && particles[j].getX() - particles[i].getX()>0){
- yAcceleration += sin(angle) * acceleration;
- xAcceleration += cos(angle) * acceleration;
- }
- if (particles[j].getY() - particles[i].getY()>0 && particles[j].getX() - particles[i].getX()<0){
- yAcceleration -= sin(angle) * acceleration;
- xAcceleration -= cos(angle) * acceleration;
- }
- if (particles[j].getY() - particles[i].getY()<0 && particles[j].getX() - particles[i].getX()>0){
- yAcceleration += sin(angle) * acceleration;
- xAcceleration += cos(angle) * acceleration;
- }
- }
- else{
- particles[i].inverseDirection();
- particles[j].inverseDirection();
- }
- }
- }
- particles[i].countAcceleration(xAcceleration, yAcceleration, interval);
- }
- for (unsigned int i = 0; i < particles.size(); i++){
- particles[i].move(interval);
- }
- f++;
- if (time(&timer) - startTime>0){
- cout << "q/t = " << f / (time(&timer) - startTime) << endl;
- }
- }
- }
- int main(){
- SetConsoleTitle(_T("Titleusan, what are you doing?"));
- int particleAmount;
- cin >> particleAmount;
- static double interval = 0.1;
- vector<Particle> particles;
- for (int i = 0; i < particleAmount; i++){
- particles.push_back(Particle((rand() % 924) + 50, (rand() % 668) + 50, (rand() % 5) + 1));
- }
- run(particles, interval);
- }
Advertisement
Add Comment
Please, Sign In to add comment