어제 새벽에 너무 감사하게도 여기 갤러분들께서 친절하게 잘 알려주셔서 덕분에 제가 과제 발표를 너무 잘했습니다.

오랫동안 저를 괴롭히던 과제였는데 여기 계신 고수님들 덕분에 잘 끝낼 수 있었습니다 ㅠㅠㅠ 진짜 기프트콘이라도 보내드리고 싶은 심정이예요ㅜㅜ 

그런데 오늘 발표를 너무 잘해서 (모두 어제 한 수 가르쳐주셨던 갤러분들 덕분이었습죠) 저희 조만 과제를 하나 더 부여받았는데요, 오늘 저희 나름대로 공부를 해봤는데 안풀리는 부분이 있어서 질문 드립니다...어제에 이어 염치없지만ㅠㅠ 한 수 가르침 부탁드립니다. 코드 전문 올릴게요

좀 깁니다 미리 ㅈㅅㅈㅅ ㅠㅠ일단 실행해보면 마우스 왼쪽 버튼을 클릭! 했을 때 물감이 찍힙니다. 그리고 마우스를 이동하면 점들이 연속해서 찍힙니다. 가장 이해가 안되는 부분은 마우스 이동 시 찍히는 점들 간의 간격 조절이 안된다는 것입니다. (아, 참고로 이 코드의 특징은 시간이 지날수록 물감의 색이 흐려지는 것입니다)


float sizInc = 0.72;            //밖으로 퍼지는 물감의 두께입니다

float splatSizDec = 0.4;        // 얘도 물감 두께 같습니다...코드 ㅈㄴ 이상함요...; 제가 변수를 잘못 해석했을 수도 있지만

float minSpeed = 20;            // 흘러내리는 물감의 속도 같습니다.

float maxOffset = 1;            // 물감이 찍힐 때 물감들 끼리 모이는 정도? 밀도? 라고 할 수 있을듯합니다.

float maxSiz = 20;              // 퍼지는 부분 말고 마우스로 찍었을 때 찍히는 그 가운데 원의 두 (말로 설명이 되나요ㅠㅠㅠ)

float maxHay = 500;             // 얘네가 문제입니다....Hay  Tay Var  가 뭔지 모르겠음 ㅠㅠ

float maxTay = 500;            

float maxVar = 300;

float mousX = 3;                //   얘네에 대해서 궁금한 점은 밑에 적도록 하겠습니다.               

float prevMousX;                // 그 이전에 있던 마우스 위치를 말합니다.

float mousY = 3;                // 후...ㅅㅂ 얘도 모르겠어요 ......

float prevMousY;                // 마찬가지로 그 이전에 있던 마우스의 Y좌표입니다

float mousVX;                   // 마우스의 이동 거리? 간격?을 말합니다. 결국 찍힌 물감과 그 다음으로 찍힌 물감의 간격이죠.

float mousVY;                   // 위와 같습니다.

float time = 0; 

ArrayList paintDots;

  

void setup()

{

  background(255);

  fill(0);

  size(480, 800);

  smooth();

  paintDots = new ArrayList();

}

 

void draw() {

  updateAll(); 

  fade();

  time += 0.01;

}

 

void fade()

{

  if(time > 10)    // 마우스 오른쪽 버튼을 눌렀을 때 흰색 솔리드가 계솓 덮히면서 화면을 덮어나가는 속도입니다.

  {

    noStroke();

    fill(255,255,255,30);

    rect(0,0,700,500);

    time = 0;

  }

  if(mousePressed && (mouseButton == RIGHT))

  {

    for(int i = paintDots.size()-1; i >= 0; i--)

    {  paintDots.remove(i);  }

    fill(255,255,255);

    rect(0,0,700,500);

  }

}

 

void updateAll()

{

  prevMousX = mousX;

  prevMousY = mousY;

  mousX = mouseX;

  mousY = mouseY;

  mousVX = mousX - prevMousX;

  mousVY = mousY - prevMousY;

  if(mousePressed && (mouseButton == LEFT))

  {  

  // 제가 해석한 바로는 여기가 물감과 그 다음 찍힌 물감간의 거리를 조절하는 부분이란 말이죠?

mousVX = mousX - prevMousX; (마우스가 이동한 간격 = 마우스의 현재 위치- 마우스의 이전 위치) 니까. 여기서 마우스 클릭에 따라 생겨나는 점들의 간격/거리 도 정해지는 거잖아요? 그래서 저희가 간격을 줄여보고자 이 부분에 -100 까지도 해봤는데 간격이 줄어들 생각을 안합니다. 왜일까요? 불쌍한 디자인과 학생 돕는다고 생각하시고 제발 한번만 도와주십셔 ㅠㅠ 어제도 정말 감사했었습니다.

  mousVY = mousY - prevMousY;




      float Tay = random(30,50);

      float Hay = random(30,50);

      float Var = random(0,maxVar);


      {

        paintDots.add(new paintDot(mousX, mousY, Tay,Hay,Var));

      }

   }

   updateDots();

}

 

void updateDots()

{

    print(paintDots.size());

    for (int i = paintDots.size()-1; i >= 0; i--)

    {

      paintDot drop = (paintDot)paintDots.get(i);// An ArrayList doesn't know what it is storing so we have to cast the object coming out

      drop.update();

      drop.display();

      if (drop.finished())

      {

        paintDots.remove(i);

      }

    }

}

 

class paintDot {

  float x, y, vx, vy, siz, prevx,prevy, slow, sizDec,life,vectorVar,vectorTay,vectorHay;

  int r,g,b;

  boolean dripping;

  paintDot (float moux, float mouy, float vT, float vH, float vV) {

    r = (int)random(70,80);

    g = (int)random(28,3);

    b = (int)random(5,15);

    vectorHay = vH;

    vectorVar = vV;

    vectorTay = vT;


    sizDec = splatSizDec;//random(0,splatSizDec);

    float offsetX = pow(random(0,maxOffset),2);

    float offsetY = pow(random(0,maxOffset),2);

    x = moux + random(-1,1)*offsetX;

    y = mouy + random(-1,1)*offsetY;

    vx = vectorTay + random(-1*vectorVar,vectorVar);

    vy = vectorHay + random(-0.75*vectorVar,vectorVar);

    siz = random(1,maxSiz);

  }

   

  void update() {

    vx *= slow;

    vy *=slow;

    if(dripping == false)


    prevx = x;

    prevy = y;

    x += vx;

    y += vy;

    siz = (siz * sizDec) + sizInc;

    if(dripping)

    {  siz -= (int)(sizInc);  }

    //print("Dot at " + x + ", " + y + " vx = " + vx + " vy = " + vy + " siz = " + siz);

  }

  

   void display()

  {

    stroke(r,g,b,240);

    strokeWeight((int)siz);

    line(x,y,prevx,prevy);

  }

   

  boolean finished()

  {

    if(vx*vx + vy < minSpeed)

    {

      if(dripping == false)

      {

        dripping = true;



         vx = 0;

         vy = pow(random(0,1.5),2);

         return false;  }

      else{

        return true;

      }

    }

    else

    {

      return false;

    }

  }

}





 마우스 클릭을 통해 점1을 찍음- 마우스는 클릭한채 이동하면 점2가 새로 찍힘 - 그게 반복되면서 마우스가 이동한 모양대로 그림이 그려지는 그런 코드입니다. 근데 그 이동 간격을 줄이고 싶은데 제 생각엔  mousVX = mousX - prevMousX; mousVY = mousY - prevMousY; 여기가 간격 조절 부분인데 아무리 조절해도 바뀌는게 없어요 ㅠㅠㅠㅠ 정말 아무것도 모르는 디자인과 구제 좀 부탁드립니다 컴공과 학도분들/ 전지전능하신 전문가님들 ㅠㅠㅠ