겨울이지만 불꽃 놀이가 싶어? ? 그렇다면 구현해야합니다.
12173 단어 processing불꽃자바
춥기 때문에 따뜻한 기분을 맛보기 위해 불꽃 놀이를보고 싶지 않습니까?
그렇다면 불꽃 놀이를 구현하자!
불꽃 놀이 만드는 법
준비
처리을 설치하십시오!
Processing은 프로그래머블 벡터 드로우 툴입니다. 내용은 Java로 되어 있고, 문법도 Java입니다.
Particle 클래스 만들기
불꽃놀이 그 불꽃? 의 부분으로, Particle 클래스를 만들어 보자. 구현하고 싶은 기능은 이쪽입니다.
우선 Particle 클래스를 만듭니다.
class Particle {
}
그런 다음 물리적 법칙을 원하기 때문에 필요한 멤버로 위치, 속도 및 가속도를 정의합니다.
class Particle {
PVector location;
PVector velocity;
PVector acceleration;
Particle (float xpos, float ypos, float xsp, float ysp) {
this.location = new PVector(xpos, ypos); // 初期位置
this.velocity = new PVector(xsp, ysp); // 初速
this.acceleration = new PVector(0, 0.001); // 重力加速度的なやつ
}
}
이제 다음은 물리적 법칙에 따라 움직이는 방법입니다. 내용은 간단합니다. 그 유명한 물리 법칙을 정의했을 뿐입니다.
$$a =\frac{dv}{dt}, v =\frac{dx}{dt} $$
class Particle {
//...
void update () {
this.velocity.add(this.acceleration);
this.location.add(this.velocity);
}
}
그리고 불꽃? 그리기 위한 메서드를 작성합니다.
class Particle {
//...
void display () {
pushMatrix();
resetMatrix();
translate(this.location.x, this.location.y);
ellipse(0, 0, 10, 10); // 円を描画
popMatrix();
}
}
Firework 클래스 만들기
불꽃? 뿌려 놓는 클래스입니다. 필요한 것은 다음 기능!
class Firework {
}
불꽃? 와 불꽃의 위치를 멤버에게 갖게합시다.
class Firework {
PVector location;
ArrayList<Particle> particles;
Firework (float xpos, float ypos) {
this.location = new PVector(xpos, ypos);
this.particles = new ArrayList<Particle>();
}
}
후에는 불꽃? 을 뿌리는 방법을 쓰자. 이어서 그리기까지도.
class Firework {
//...
// 撒き散らす
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, // 花火の位置に火花を設置
cos(theta), sin(theta) // 360度のどれかに初速を設定
));
}
}
// 火花の物理計算
void update () {
for (int i = 0; i < 400; i++) {
particles.get(i).update();
}
}
// 火花たちの描画
void display () {
fill(255); // 火花を白色にしてみた
for (int i = 0; i < 400; i++) {
particles.get(i).display();
}
}
}
음, 준비 완료!
불꽃놀이 발사? 위해 다음을 위해 준비! 끝나면 실행이다!
Firework firework;
void setup () {
size(600, 600); // 600x600のキャンパスを作る
firework = new Firework(width/2, height/2); // 花火をセットアップ
firework.explode(); // 火花を撒き散らす
}
void draw () {
background(0); // 背景はBlack
firework.update(); 花火の計算
firework.display(); // 花火の描画
}
그래? 어쩌면? 이런 불꽃이 아니야?
어쩔 수 없어~
마지막으로, 조금 불꽃 놀이와 함께
이렇게 되었습니다!
마지막으로
이것은 대학 1학년 때 만든 프로그램입니다. 2년 정도 전일까?
대학에 들어가고 처음으로 프로그래밍에 접해, 프로그래밍 슈퍼 재미 잖아! 라고 생각하면서 어쨌든 코드 쓰던 시기입니다. 물론 지금도 쓰고 있습니다만.
재료가 생각나지 않았기 때문에 이것으로 해 보았습니다.
소스 코드는 더럽지만 여기가됩니다.
htps : // 기주 b. 코 m / 료스케 C / 푹신한 rks
Reference
이 문제에 관하여(겨울이지만 불꽃 놀이가 싶어? ? 그렇다면 구현해야합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/RyosukeCla/items/e014d1a6a3d0b102f301텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)