Willkommen auf unserem Seminar-Blog

Immer auf dem aktuellen Stand bleiben

Dieser Seminar-Blog befindet sich noch im Aufbau und wird in den kommenden Tagen entsprechend verfeinert.

Member Login

Lost your password?

Registration is closed

Sorry, you are not allowed to register by yourself on this site!

You must either be invited by one of our team member or request an invitation by email at viad.info {at} zhdk {dot} ch.

Übung 6: von Punkten und Strichen

18. November 2010

Diese Aufgabe bestand einerseits darin einen Vector zu zeichnen, indem man zwei mal mit der Maus auf das Feld klickt und auf dem sich anschliessend eine Kugel hin und her bewegt. Anderseits, als Abänderung des Programms, sollte man mit der Maus auf das Feld klicken, ziehen, die Maus wieder loslassen,sodass man auf diese Weise einen Vector zeichnen kann. Die Kugel wanderet auch hier wieder hin und her.
 

PVector     startPos = new PVector();
PVector     endPos = new PVector();
int         curTime = 0;
int         animSpeed = 10;
int         animTime = 2000;
boolean     drawFlag=false;

void setup()
{
  size(640, 480);
  smooth();
}

void draw()
{
  background(51);

  // calc. the anim time
  curTime += animSpeed;
  if(curTime >= animTime || curTime < 0)
     //curTime = 0;
     animSpeed=animSpeed*-1;

  // calc. the current time in the animation
  float normTime = curTime * 1.0 / animTime;

  if(drawFlag)
  {
    stroke(255);
    line(startPos.x,startPos.y,
         endPos.x,endPos.y);

    // calculate the position of the circle on the line
    PVector dir = PVector.sub(endPos,startPos);

    PVector pos = PVector.add( startPos , PVector.mult(dir,normTime));
    ellipse(pos.x,pos.y, 20,20);
  }

}

void mousePressed()
{
  drawFlag = true;
  curTime = 0;
  startPos.set(mouseX,mouseY,0);
  endPos = startPos.get();
}

void mouseDragged()
{
  endPos.set(mouseX,mouseY,0);
}

void mouseReleased()
{
  drawFlag = true;
  println("released");
}


PVector     startPos = new PVector();
PVector     endPos = new PVector();
int         curTime = 0;
int         animSpeed = 10;
int         animTime = 2000;
boolean     drawFlag=false;
boolean     secondClick=false; 

void setup()
{
  size(640, 480);
  smooth();
}

void draw()
{
  background(51);

  // calc. the anim time
  curTime += animSpeed;
  if(curTime >= animTime || curTime < 0)
     //curTime = 0;
     animSpeed=animSpeed*-1;

  // calc. the current time in the animation
  float normTime = curTime * 1.0 / animTime;

  if(drawFlag)
  {
    stroke(255);
    line(startPos.x,startPos.y,
         endPos.x,endPos.y);

    // calculate the position of the circle on the line
    PVector dir = PVector.sub(endPos,startPos);

    PVector pos = PVector.add( startPos , PVector.mult(dir,normTime));
    ellipse(pos.x,pos.y, 20,20);
  }

}

void mousePressed()
{
  if(!secondClick)
  {
    startPos.set(mouseX,mouseY,0);
    secondClick=true;
    drawFlag = false;    
  }
  else
  {
    endPos.set(mouseX,mouseY,0);
    secondClick=false;
    drawFlag = true;
  } 
  curTime = 0;
}

/*void mouseDragged()
{
  endPos.set(mouseX,mouseY,0);
}

void mouseReleased()
{
  drawFlag = true;
  println("released");
}
*/