Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void centralFieldManagement()
- {
- PVector grav_atract = new PVector(0, 0);
- float dem = 0, dividerx = 0, dividery = 0, Distance, G_const = 0.6673;
- ArrayList<PVector> reverseGravity = new ArrayList<PVector>(cir.size());
- if (centralAction)
- {
- for (int i = 0; i<cir.size(); i++)
- {
- reverseGravity.add(new PVector(0, 0));
- }
- for (int i = 0; i<cir.size(); i++)
- {
- //Calculation of the mass center
- dem += cir.get(i).mass;
- dividerx += cir.get(i).mass * cir.get(i).point.x;
- dividery += cir.get(i).mass * cir.get(i).point.y;
- for (int j = i + 1; j<cir.size(); j++)
- {
- //calculating distance between object
- PVector lengthFrom_i_to_j = PVector.sub( cir.get(j).point, cir.get(i).point);
- PVector lengthFrom_j_to_i = PVector.sub( cir.get(i).point, cir.get(j).point);
- Distance = lengthFrom_i_to_j.mag();
- lengthFrom_i_to_j.normalize();
- lengthFrom_j_to_i.normalize();
- //adding gravity
- float strength = (G_const * cir.get(i).mass * cir.get(j).mass)/(Distance * Distance);
- lengthFrom_i_to_j.mult(strength);
- lengthFrom_j_to_i.mult(strength);
- reverseGravity.get(j).add(lengthFrom_j_to_i);
- grav_atract.add(lengthFrom_i_to_j);
- }
- grav_atract.add(reverseGravity.get(i));
- cir.get(i).setSpeed(grav_atract);
- grav_atract.mult(0);
- for (int k = 0; k<reverseGravity.size(); k++)
- {
- reverseGravity.get(k).mult(0);
- }
- }
- }
- checkForCollision();
- for (int i = 0; i < cir.size(); i++)
- {
- cir.get(i).drawing();
- fill(50, 0, 255 );
- stroke(255, 0, 50);
- textAlign(CENTER, CENTER);
- text(i, cir.get(i).point.x, cir.get(i).point.y);
- }
- //Drawing a center of mass
- pushMatrix();
- strokeWeight(6);
- fill(50, 0, 255 );
- stroke(255, 0, 50);
- point((dividerx/dem), (dividery/dem));
- popMatrix();
- }
- void homogeneousFieldManagement()
- {
- PVector air_replica = new PVector(0.004, 0.004);
- PVector grav = new PVector(0.00, 9.00);
- PVector air;
- if (homogeneousAction)
- {
- for (int i = 0; i < cir.size(); i++)
- {//Adding gravity
- cir.get(i).setSpeed(grav);
- air = air_replica.copy();
- if (cir.get(i).velocity.x > 0 ||cir.get(i).velocity.y > 0)
- {
- air.mult(-1);
- }
- //adding motion resistance
- cir.get(i).setSpeed(air);
- }
- }
- checkForCollision();
- for (int j = 0; j < cir.size(); j++)
- {
- cir.get(j).drawing();
- strokeWeight(6);
- fill(50, 0, 255 );
- stroke(255, 0, 50);
- textAlign(CENTER, CENTER);
- text(j, cir.get(j).point.x, cir.get(j).point.y);
- }
- }
- void singlePendulumManagement()
- {
- for (int i = 0; i < singlePend.size(); i++)
- {
- if (singleAction)
- {
- singlePend.get(i).update();
- }
- singlePend.get(i).drawing();
- }
- circle(0, 0, 10);
- }
- void dublePendulumManagement()
- {
- for (int i = 0; i < doublePend.size(); i++)
- {
- doublePend.get(i).drowing(i, howManyDoublePen);
- }
- //drawing center ball
- fill(82, 0, 14);
- stroke(153, 0, 26);
- circle(0, 0, 20);
- }
Advertisement
Add Comment
Please, Sign In to add comment