2025年2月27日 星期四

電腦圖學week02

  week02-1

先畫四格

size(400,400);

background(255);

fill(238);

noStroke();

rect(0, 0, 20, 20);

rect(0, 40, 20, 20);

rect(0, 80, 20, 20);


week02-2

有格子了

size(400,400);

background(255);

fill(238);

noStroke();

float s = 400/14;

for(int i=0;i<14;i++){

  for(int j=0;j<14;j++){

    //rect(0,i*s*2,s,s);

    if((i+j)%2==0)rect(j*s,i*s,s,s);

  }

}


week02-3

可以畫圖了

void setup(){
  size(400,400);
  background(255);
  fill(238);
  noStroke();
  float s = 400/14;
  for(int i=0;i<14;i++){
    for(int j=0;j<14;j++){
      //rect(0,i*s*2,s,s);
      if((i+j)%2==0)rect(j*s,i*s,s,s);
    }
  }
}

void draw(){
  stroke(255,0,0);
  if(mousePressed) line(mouseX,mouseY,pmouseX,pmouseY);
}


week02-4

把圖片變成半透明

PImage img;
void setup(){
  size(400,400);
  img=loadImage("cute.png");
}
void draw(){
  background(img);
  fill(255,mouseX);
  println(mouseX);
  rect(0,0,400,400);
}
week02-5a

要描圖卻出錯

PImage img;
void setup(){
  size(400,400);
  img=loadImage("cute.png");
}
void draw(){
  background(img);
  fill(255,170);
  rect(0,0,400,400);
  
  stroke(255,0,0);
  if(mousePressed) line(mouseX,mouseY,pmouseX,pmouseY);
}
week02-5b

可以描圖了 但是不能斷線

ArrayList<Integer> x=new ArrayList<Integer>();
ArrayList<Integer> y=new ArrayList<Integer>();
PImage img;
void setup(){
  size(400,400);
  img=loadImage("cute.png");
}
void draw(){
  background(img);
  fill(255,170);
  rect(0,0,400,400);
  for(int i=1;i<x.size();i++){
    line(x.get(i),y.get(i),x.get(i-1),y.get(i-1)); 
  }
}
void mouseDragged(){
  x.add(mouseX);
  y.add(mouseY);
}
week02-6

可以把線分開了

ArrayList<Integer> x,y;
ArrayList<ArrayList<Integer>> xx =new ArrayList<ArrayList<Integer>>();
ArrayList<ArrayList<Integer>> yy =new ArrayList<ArrayList<Integer>>();
PImage img;
void setup(){
  size(400,400);
  img=loadImage("cute.png");
}
void draw(){
  background(img);
  fill(255,170);
  rect(0,0,400,400);
  for(int I=0;I<xx.size();I++){
    ArrayList<Integer> x = xx.get(I);
    ArrayList<Integer> y = yy.get(I);
    for(int i=1;i<x.size();i++){
      line(x.get(i),y.get(i),x.get(i-1),y.get(i-1)); 
    }
  }
}
void mouseDragged(){
  x.add(mouseX);
  y.add(mouseY);
}
void mousePressed(){
  x = new ArrayList<Integer>(); xx.add(x);
  y = new ArrayList<Integer>(); yy.add(y);
}
week02-7

畫完可以存檔了

ArrayList<Integer> x,y;
ArrayList<ArrayList<Integer>> xx =new ArrayList<ArrayList<Integer>>();
ArrayList<ArrayList<Integer>> yy =new ArrayList<ArrayList<Integer>>();
PImage img;
void setup(){
  size(400,400);
  img=loadImage("cute.png");
}
void draw(){
  background(img);
  fill(255,170);
  rect(0,0,400,400);
  for(int I=0;I<xx.size();I++){
    ArrayList<Integer> x = xx.get(I);
    ArrayList<Integer> y = yy.get(I);
    for(int i=1;i<x.size();i++){
      line(x.get(i),y.get(i),x.get(i-1),y.get(i-1)); 
    }
  }
}
void keyPressed(){
  if(key=='s' || key=='S'){
    for(int I=0;I<xx.size();I++){
      ArrayList<Integer> x = xx.get(I);
      ArrayList<Integer> y = yy.get(I);
      println("beginShape();");
      for(int i=1;i<x.size();i++){
        println("  vertex(" + x.get(i) + ", " + y.get(i) + ");" ); 
      }
      println("endShape();");
    }
  }
}
void mouseDragged(){
  //println("vertex(mouseX,mouseY);
  //println("vertex(" + mouseX + ", " + mouseY + ");" );
  x.add(mouseX);
  y.add(mouseY);
}
void mousePressed(){
  x = new ArrayList<Integer>(); xx.add(x);
  y = new ArrayList<Integer>(); yy.add(y);
}
















沒有留言:

張貼留言