[프로세싱] 다각형으로 파도 표현
13290 단어 processing컴퓨터 그래픽
이런
69행의 「stroke(255);」의 때와 「noStroke();」의 2 종류의 영상
선이 들어가면 사각형이 묶여 있음을 알 수 있습니다.
앞에서 안쪽으로 띠가 흔들리고 있습니다.
프로그램
Wavers.javaPShape Ball;
class SeaSell{
SeaSell prev; //位置をマネする対象
float x;
float y;
float z;
float siner = 0;
SeaSell(float x , float Z){
this.x = x;
z = Z;
}
void Draw(){
if(prev != null)y = prev.y;
else y += sin(siner += 0.05f);
vertex(x,y,z);
}
}
SeaSell sells[][] = new SeaSell[100][100];
void setup(){
size(1800,800,P3D);
frameRate(30);
Ball = createShape(SPHERE,100);
Ball.setTexture(loadImage("Ball.png"));
Ball.setStrokeWeight(0);
//Sea sellの間隔
int distribution = 15;
//波打つ帯を横に並べてる
for(int i=0;i<sells.length;i+=2){
for(int j=0;j<sells[i].length;j++){
sells[i][j] = new SeaSell(i * distribution -distribution,j * distribution); //位置登録
sells[i+1][j] = new SeaSell(i * distribution +distribution,j * distribution); //位置登録
}
}
for(int i=0;i<sells.length;i++){
for(int j=0;j<sells[i].length;j++){
if(j != sells[i].length-1){ //jが端じゃない時、同列の隣のセルをprevにいれる
sells[i][j].prev = sells[i][j+1];
}
else if(i != sells.length-1){ //jが端だけどiが端じゃない時、隣の列のセルを入れる
sells[i][j].prev = sells[i+1][j];
}
}
}
}
void draw(){
background(0);
lights();
perspective();
pushMatrix();
translate(5,0,-1500);
rotateX(-PI/6f);
fill(50,50,200);
//stroke(255);
noStroke();
for(int i=0;i<sells.length;i+=2){
beginShape(QUAD_STRIP); //帯状の波
for(int j=0;j<sells[i].length;j++){
sells[i][j].Draw();
sells[i+1][j].Draw();
}
endShape();
}
pushMatrix();
translate(sells[50][50].x,sells[50][50].y,sells[50][50].z);
translate(0,-30,0); shape(Ball);
popMatrix();
popMatrix();
}
간단히 설명
SeaSell이라는 좌표와 인접한 SeaSell을 보관 유지하는 클래스가 등간격으로 배치됩니다
동작은 2가지
해설.javaif(隣のSeaSellが登録されてる){
隣のSeaSellの位置に向かって移動する
}
else{ //隣のSeaSellが登録されていない場合
上下に動く //←映像の一番右下で上下してるやつ
}
이전 투고한 「 [Processing] 클릭 포인트를 저장하고 아트 작품 그리기 」로부터 참고로 제어해 보았습니다
Reference
이 문제에 관하여([프로세싱] 다각형으로 파도 표현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/NekoCan/items/52b858fea330f6257082
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Wavers.java
PShape Ball;
class SeaSell{
SeaSell prev; //位置をマネする対象
float x;
float y;
float z;
float siner = 0;
SeaSell(float x , float Z){
this.x = x;
z = Z;
}
void Draw(){
if(prev != null)y = prev.y;
else y += sin(siner += 0.05f);
vertex(x,y,z);
}
}
SeaSell sells[][] = new SeaSell[100][100];
void setup(){
size(1800,800,P3D);
frameRate(30);
Ball = createShape(SPHERE,100);
Ball.setTexture(loadImage("Ball.png"));
Ball.setStrokeWeight(0);
//Sea sellの間隔
int distribution = 15;
//波打つ帯を横に並べてる
for(int i=0;i<sells.length;i+=2){
for(int j=0;j<sells[i].length;j++){
sells[i][j] = new SeaSell(i * distribution -distribution,j * distribution); //位置登録
sells[i+1][j] = new SeaSell(i * distribution +distribution,j * distribution); //位置登録
}
}
for(int i=0;i<sells.length;i++){
for(int j=0;j<sells[i].length;j++){
if(j != sells[i].length-1){ //jが端じゃない時、同列の隣のセルをprevにいれる
sells[i][j].prev = sells[i][j+1];
}
else if(i != sells.length-1){ //jが端だけどiが端じゃない時、隣の列のセルを入れる
sells[i][j].prev = sells[i+1][j];
}
}
}
}
void draw(){
background(0);
lights();
perspective();
pushMatrix();
translate(5,0,-1500);
rotateX(-PI/6f);
fill(50,50,200);
//stroke(255);
noStroke();
for(int i=0;i<sells.length;i+=2){
beginShape(QUAD_STRIP); //帯状の波
for(int j=0;j<sells[i].length;j++){
sells[i][j].Draw();
sells[i+1][j].Draw();
}
endShape();
}
pushMatrix();
translate(sells[50][50].x,sells[50][50].y,sells[50][50].z);
translate(0,-30,0); shape(Ball);
popMatrix();
popMatrix();
}
간단히 설명
SeaSell이라는 좌표와 인접한 SeaSell을 보관 유지하는 클래스가 등간격으로 배치됩니다
동작은 2가지
해설.javaif(隣のSeaSellが登録されてる){
隣のSeaSellの位置に向かって移動する
}
else{ //隣のSeaSellが登録されていない場合
上下に動く //←映像の一番右下で上下してるやつ
}
이전 투고한 「 [Processing] 클릭 포인트를 저장하고 아트 작품 그리기 」로부터 참고로 제어해 보았습니다
Reference
이 문제에 관하여([프로세싱] 다각형으로 파도 표현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/NekoCan/items/52b858fea330f6257082
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
if(隣のSeaSellが登録されてる){
隣のSeaSellの位置に向かって移動する
}
else{ //隣のSeaSellが登録されていない場合
上下に動く //←映像の一番右下で上下してるやつ
}
Reference
이 문제에 관하여([프로세싱] 다각형으로 파도 표현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/NekoCan/items/52b858fea330f6257082텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)