[프로세싱] 다각형으로 파도 표현

이런



69행의 「stroke(255);」의 때와 「noStroke();」의 2 종류의 영상

선이 들어가면 사각형이 묶여 있음을 알 수 있습니다.
앞에서 안쪽으로 띠가 흔들리고 있습니다.

프로그램



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가지

해설.java
if(隣のSeaSellが登録されてる){
  隣のSeaSellの位置に向かって移動する
}
else{ //隣のSeaSellが登録されていない場合
  上下に動く //←映像の一番右下で上下してるやつ
}

이전 투고한 「 [Processing] 클릭 포인트를 저장하고 아트 작품 그리기 」로부터 참고로 제어해 보았습니다

좋은 웹페이지 즐겨찾기