-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
108 lines (78 loc) · 3.57 KB
/
script.js
File metadata and controls
108 lines (78 loc) · 3.57 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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
var planet;
var starsX = [];
var starsY = [];
var planet1XposTrack = [];
var planet1YposTrack = [];
var planet2XposTrack = [];
var planet2YposTrack = [];
function setup() {
createCanvas(2000, 800);
background(0);
for (var i = 0; i < 1000; i++) {
starsX.push(random(0, width));
}
for (var i = 0; i < 1000; i++) {
starsY.push(random(0, height));
}
planet1 = new Body(6.34 * Math.pow(10, 21), 300, 210, 70, 70);
planet2 = new Body(9.572 * Math.pow(10, 21), 1200, 490, 70, 70);
}
function draw() {
planet1XposTrack.push(planet1.xPos);
planet2XposTrack.push(planet2.xPos);
planet1YposTrack.push(planet1.yPos);
planet2YposTrack.push(planet2.yPos);
background(0);
for (var i = 0; i < 1000; i++) {
fill(255);
ellipse(starsX[i], starsY[i], 2, 2)
}
for(var i = 0; i < planet1XposTrack.length;i++){
strokeWeight(0);
fill(0,255,0);
ellipse(planet1XposTrack[i], planet1YposTrack[i], 5,5);
fill(0,255,0);
ellipse(planet2XposTrack[i], planet2YposTrack[i], 5,5);
}
fill(0, 0, 150);
ellipse(planet1.xPos, planet1.yPos, planet1.r1, planet1.r2);
fill(195, 0, 0);
ellipse(planet2.xPos, planet2.yPos, planet2.r1, planet2.r2);
if(dist(planet1.xPos, planet1.yPos, planet2.xPos, planet2.yPos) < planet2.r1){
noLoop();
}
if (planet2.xPos > planet1.xPos) {
planet1.xPos = 2.2 + planet1.xPos + velocityX(1);
planet2.xPos = -0.5 + planet2.xPos - velocityX(2);
} else {
planet1.xPos = 2.2 + planet1.xPos - velocityX(1);
planet2.xPos = -0.5 + planet2.xPos + velocityX(2);
}
if (planet2.yPos > planet1.yPos) {
planet2.yPos = planet2.yPos - velocityY(2);
planet1.yPos = planet1.yPos + velocityY(1);
} else {
planet2.yPos = planet2.yPos + velocityY(2);
planet1.yPos = planet1.yPos - velocityY(1);
}
}
function velocityX(nPlanet) {
var angulo = 0;
if (nPlanet == 1) {
angulo = acos((Math.abs(planet1.xPos - planet2.xPos)) / dist(planet1.xPos, planet1.yPos, planet2.xPos, planet2.yPos));
return cos(angulo) * ((6.67408 * Math.pow(10, -8) * planet2.mass) / (dist(planet1.xPos, planet1.yPos, planet2.xPos, planet2.yPos) * dist(planet1.xPos, planet1.yPos, planet2.xPos, planet2.yPos) * 100000 * 100000));
} else {
angulo = acos((Math.abs(planet1.xPos - planet2.xPos)) / dist(planet1.xPos, planet1.yPos, planet2.xPos, planet2.yPos));
return cos(angulo) * ((6.67408 * Math.pow(10, -8) * planet1.mass) / (dist(planet1.xPos, planet1.yPos, planet2.xPos, planet2.yPos) * dist(planet1.xPos, planet1.yPos, planet2.xPos, planet2.yPos) * 100000 * 100000));
}
}
function velocityY(nPlanet) {
var angulo = 0;
if (nPlanet == 1) {
angulo = acos((Math.abs(planet1.xPos - planet2.xPos)) / dist(planet1.xPos, planet1.yPos, planet2.xPos, planet2.yPos));
return sin(angulo) * ((6.67408 * Math.pow(10, -8) * planet2.mass) / (dist(planet1.xPos, planet1.yPos, planet2.xPos, planet2.yPos) * dist(planet1.xPos, planet1.yPos, planet2.xPos, planet2.yPos) * 100000 * 100000));
} else {
angulo = acos((Math.abs(planet1.xPos - planet2.xPos)) / dist(planet1.xPos, planet1.yPos, planet2.xPos, planet2.yPos));
return sin(angulo) * ((6.67408 * Math.pow(10, -8) * planet1.mass) / (dist(planet1.xPos, planet1.yPos, planet2.xPos, planet2.yPos) * dist(planet1.xPos, planet1.yPos, planet2.xPos, planet2.yPos) * 100000 * 100000));
}
}