Week05
-----------------------------------------------------------------------------------------------------------------------------
1.畫出一個立體的盒子,可以隨著滑鼠移動
void setup(){
size(400,400,P3D);//Processing的3D功能
}
void draw(){
background(#FFFFF2);
pushMatrix();//備份矩陣
translate(mouseX,mouseY);
box(100);//3D的盒子、方塊
popMatrix();//還原矩陣
}
void setup(){
size(400,400,P3D);//Processing的3D功能
}
void draw(){
background(#89BEE5);
pushMatrix();//備份矩陣
translate(mouseX,mouseY);//移動
rotateY(radians(mouseX));//對Y軸轉動
fill(#F7F378);
box(100);//3D的盒子、方塊
noFill();//面不要填
scale(2);//放大2倍
box(100);//雖然是100的盒子,但上面有放大,他就放大了
popMatrix();//還原矩陣
}
size(400,400,P3D);
beginShape();
fill(255,0,0);
vertex(200,0);
fill(0,255,0);
vertex(0,400);
fill(0,0,255);
vertex(400,400);
endShape(CLOSE);
ArrayList<PVector> pt;//大的資料結構ArrayList
void setup(){
size(400,400,P3D);
pt=new ArrayList<PVector>();
}//初始化,把大的資料結構準備好(裡面放小的資料結構)
void draw(){
background(#FFFFF2);
for(PVector p:pt){//特殊的for迴圈會得到小的資料結構
ellipse(p.x,p.y,10,10);
}
}
void mousePressed(){
pt.add(new PVector(mouseX,mouseY));
}//大的資料結構裡,加入小的PVector的物件
ArrayList<PVector> pt;//大的資料結構ArrayList
void setup(){
size(400,400,P3D);
pt=new ArrayList<PVector>();
}//初始化,把大的資料結構準備好(裡面放小的資料結構)
void draw(){
background(#89BEE5);
for(PVector p:pt){
ellipse(p.x,p.y,10,10);
}
beginShape();
for(PVector p:pt){
vertex(p.x,p.y);
}
endShape();
}
void mousePressed(){
pt.add(new PVector(mouseX,mouseY));
}//大的資料結構裡,加入小的PVector的物件
ArrayList<PVector> pt;//大的資料結構ArrayList
void setup(){
size(400,400,P3D);
pt=new ArrayList<PVector>();
}//初始化,把大的資料結構準備好(裡面放小的資料結構)
void draw(){
background(#89BEE5);
pushMatrix();
if(mousePressed&&mouseButton==RIGHT){
translate(200,200);
rotateY(radians(frameCount));
translate(-200,-200);
}
for(PVector p:pt){//特殊的for迴圈,得小的資料結構
ellipse(p.x,p.y,10,10);
}
beginShape();
for(PVector p:pt){
vertex(p.x,p.y);
}
endShape();
popMatrix();
}
void mousePressed(){
if(mouseButton==LEFT){
pt.add(new PVector(mouseX,mouseY));
}
}//大的資料結構裡,加入小的PVector的物件
7.根據點擊滑鼠不同按鍵來切換顏色
void setup(){
size(400,400,P3D);
}
void draw(){
background(255);
if(mousePressed&&mouseButton==LEFT) background(255,0,0);
if(mousePressed&&mouseButton==CENTER) background(0,255,0);
if(mousePressed&&mouseButton==RIGHT) background(0,0,255);
}
void mousePressed(){
if(mouseButton==LEFT) println("LEFT");
if(mouseButton==CENTER) println("CENTER");
if(mouseButton==RIGHT) println("RIGHT");
}
8.畫出很多點(?)
ArrayList<PVector> pt;//大的資料結構ArrayList
void setup(){
size(400,400,P3D);
pt=new ArrayList<PVector>();
for(int i=0;i<20;i++){
pt.add(new PVector(i*20,20));
}
}
void draw(){
background(#89BEE5);
for(PVector p:pt){//畫出20個頂點
ellipse(p.x,p.y,10,10);
}
if(ans!=null) ellipse(ans.x,ans.y,15,15);
}
PVector ans=null;
void mousePressed(){
for(PVector p:pt){
if(dist(p.x,p.y,mouseX,mouseY)<5){
ans=p;
}
}
}
9.可以點很多點(?)
ArrayList<PVector> pt;//大的資料結構ArrayList
void setup(){
size(400,400,P3D);
pt=new ArrayList<PVector>();
for(int i=0;i<37;i++){
pt.add(new PVector(random(400),random(400)));
}
}
void draw(){
background(#89BEE5);
for(PVector p:pt){//畫出20個頂點
ellipse(p.x,p.y,10,10);
}
if(ans!=null) ellipse(ans.x,ans.y,15,15);
}
PVector ans=null;
void mouseDragged(){
if(mouseButton==CENTER&&ans!=null){
ans.x=mouseX;
ans.y=mouseY;
}
}
void mousePressed(){
if(mouseButton==LEFT) pt.add(new PVector(mouseX,mouseY));
else if(mouseButton==CENTER){
for(PVector p:pt){
if(dist(p.x,p.y,mouseX,mouseY)<5){
ans=p;
}
}
}
}
ArrayList<PVector> pt;//大的資料結構ArrayList
void setup(){
size(400,400,P3D);
pt=new ArrayList<PVector>();
for(int i=0;i<37;i++){
pt.add(new PVector(random(400),random(400)));
}
}
void draw(){
background(#89BEE5);
for(PVector p:pt){//畫出20個頂點
ellipse(p.x,p.y,10,10);
}
if(ans!=null) ellipse(ans.x,ans.y,15,15);
}
PVector ans=null;
void mouseDragged(){
if(mouseButton==CENTER&&ans!=null){
ans.x=mouseX;
ans.y=mouseY;
}
}
void mousePressed(){
if(mouseButton==LEFT) pt.add(new PVector(mouseX,mouseY));
else if(mouseButton==CENTER){
for(PVector p:pt){
if(dist(p.x,p.y,mouseX,mouseY)<5){
ans=p;
}
}
}else if(mouseButton==RIGHT){//右鍵要刪掉,要用傳統的for迴圈
for(int i=0;i<pt.size();i++){
PVector p=pt.get(i);
if(dist(p.x,p.y,mouseX,mouseY)<5){//找到夠近的一點
pt.remove(i);//就把第i個點刪掉,山的時候會把大資料結構右邊的都左疑義格
}
}
}
}

沒有留言:
張貼留言