-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathparticle.cpp
More file actions
71 lines (52 loc) · 1.32 KB
/
Copy pathparticle.cpp
File metadata and controls
71 lines (52 loc) · 1.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include "particle.h"
#include <random>
#include <ctime>
#include <iostream>
particle::particle(){
}
particle::~particle(){
}
void particle::setPosition(position pos){
_position=pos;
}
void particle::setSpeed(glm::vec2 spd){
_speed=spd;
}
//getters
position particle::getPosition(){
return _position;
}
glm::vec2 particle::getSpeed(){
return _speed;
}
//float particle::getMass(){
// return _mass;
// }
//float particle::getRadius(){
// return _radius;
// }
void particle::generate_random_particle(){
static std::mt19937 randomEngine(time(0));
static std::uniform_real_distribution<float> randomNumber(-1.0,1.0);
setPosition(position(randomNumber(randomEngine),randomNumber(randomEngine),1.0));
setSpeed(glm::vec2(randomNumber(randomEngine)*0.02,randomNumber(randomEngine)*0.02));
}
void particle::calculate_position(){
_position.x= _position.x+_speed.x;
static const double BORDER=0.96667;
if(_position.x<-BORDER)
{_position.x= -BORDER+(-BORDER-_position.x);
_speed.x=-_speed.x;}
if(_position.x>BORDER){
_position.x= BORDER-(_position.x-BORDER);
_speed.x=-_speed.x;
}
_position.y= _position.y+_speed.y;
if(_position.y<-BORDER)
{_position.y= -BORDER+(-BORDER-_position.y);
_speed.y=-_speed.y;}
if(_position.y>BORDER){
_position.y= BORDER-(_position.y-BORDER);
_speed.y=-_speed.y;
}
}