It's winter! It's cold!
Since it's cold, why don't you want to see fireworks to feel warm?
So let's implement fireworks!
Install Processing!
Processing is a programmable vector drawing tool. The contents are made of Java, and the grammar is also Java.
That spark of fireworks? As part of, let's create a Particle class. Here is the function you want to implement.
--Sparks? I want you to draw a parabola and move. The laws of physics
For the time being, create a Particle class.
class Particle {
}
Next, we want the laws of physics, so we define the required members as position, velocity, and acceleration.
class Particle {
PVector location;
PVector velocity;
PVector acceleration;
Particle (float xpos, float ypos, float xsp, float ysp) {
this.location = new PVector(xpos, ypos); //Initial position
this.velocity = new PVector(xsp, ysp); //Initial velocity
this.acceleration = new PVector(0, 0.001); //Gravitational acceleration guy
}
}
Now, next is the method to move according to the laws of physics. The contents are simple. I just defined that famous law of physics.
class Particle {
//...
void update () {
this.velocity.add(this.acceleration);
this.location.add(this.velocity);
}
}
And sparks? Write a method for drawing.
class Particle {
//...
void display () {
pushMatrix();
resetMatrix();
translate(this.location.x, this.location.y);
ellipse(0, 0, 10, 10); //Draw a circle
popMatrix();
}
}
spark? It is a class to scatter. The following functions are required!
--Sparks? Randomly scatter 360 degrees
class Firework {
}
spark? Let's give the members the position of the fireworks.
class Firework {
PVector location;
ArrayList<Particle> particles;
Firework (float xpos, float ypos) {
this.location = new PVector(xpos, ypos);
this.particles = new ArrayList<Particle>();
}
}
After that, sparks? Let's write a method to scatter. By the way, even drawing.
class Firework {
//...
//Spread
void explode () {
for (int i = 0; i < 400; i++) {
float theta = random(0, TWO_PI);
particles.add(new Particle(
this.location.x, this.location.y, //Install sparks at the position of fireworks
cos(theta), sin(theta) //Set the initial velocity to any of 360 degrees
));
}
}
//Physical calculation of sparks
void update () {
for (int i = 0; i < 400; i++) {
particles.get(i).update();
}
}
//Drawing of sparks
void display () {
fill(255); //I tried to make the spark white
for (int i = 0; i < 400; i++) {
particles.get(i).display();
}
}
}
Fireworks? Prepare for: When you're done, do it!
Firework firework;
void setup () {
size(600, 600); //Build a 600x600 campus
firework = new Firework(width/2, height/2); //Set up fireworks
firework.explode(); //Sprinkle sparks
}
void draw () {
background(0); //The background is Black
firework.update();Fireworks calculation
firework.display(); //Fireworks drawing
}
e? What is shoboi? Isn't it such a firework?
Ugh, fine I will do it~
Now this!
This is a program I made when I was in the first year of college. Is it about two years ago? It's super fun to experience programming for the first time since I entered university! It was a time when I was writing the code while thinking about it. Of course I still write it.
I couldn't think of anything, so I tried this.
The source code is dirty, but here it is. https://github.com/RyosukeCla/fireworks