intro Fab(B)

つい最近足つぼマッサージに行った。

肝臓が悪いと言われた。
確かに前日お酒を飲み過ぎた。

実際に足は第二の心臓と言われている。
足つぼは自身の健康管理にとって重要ではないのか。
もし仮に自分の悪いところや押してもらいたいところを自分で調節できたら...

「足つぼプリンター」は自分の押してもらいたいところや悪い部分を自分で面積や高さを変えることができ、その場で自身オリジナルの足つぼマットが完成する。








 10/9 <Processing 2D>
今回はプロセッシングを用いてフラクタルを再現しようと考えた。
そこで取り上げたのはフラクタルの代表でもあるシダの葉を再現しようと考えた。

まずwikiでシダの葉がどのような計算式から成り立っているのかを検索し数式を確認。
http://ja.wikipedia.org/wiki/%E5%8F%8D%E5%BE%A9%E9%96%A2%E6%95%B0%E7%B3%BB

だが数式を見てもさっぱりわからない。
そこで数学の得意な友人の力とサンプルコードを駆使し、これをプロセッシングでいうところの何かを聞きながら書き進めた。


しかし、PDFはでたのものの内容が0キロバイトでPDFが開けなかった。。。
理由としては動画での再現をしたためPDFとして保存出来なかった。



そこでProcessingで作った動画をPDF化するプログラムを探し、コピペしてくっつけてみたが、エラーがでてしまい結局PDF化出来なかった。

http://www.atnr.net/processing%E3%81%A7%E4%BD%9C%E3%81%A3%E3%81%9F%E3%82%A2%E3%83%8B%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%E3%83%BC%E3%82%92pdf%E5%87%BA/


以下プログラミング内容↓

import processing.pdf.*;

boolean EXPORT = false;
boolean dosave = false;

float x = 0;
float y = 0;
final int RATIO = 59;

void setup() {
  size(600, 600);
  background(0);
  stroke(255, 255, 128, 255);
}

void draw() {
    beginRecord(PDF , "line.pdf");
   
     if(dosave) {
  
    PGraphicsPDF pdf = (PGraphicsPDF)beginRaw(PDF, "pdf_complex_out.pdf");

    pdf.strokeJoin(MITER);
    pdf.strokeCap(SQUARE);
    pdf.fill(0);
    pdf.noStroke();
    pdf.rect(0,0, width,height);
  }
 
  float sw;
  float tx = 0, ty = 0; 
  int i;


  for (i = 0; i < 100; i++) {
    tx = 0;
    ty = 0;

    point(( x * RATIO) + width / 2 - 50, height - y * RATIO);
    point(0, 0);

    sw = random(100);
    if (sw > 15) {
      tx = 0.85 * x + 0.04 * y;
      ty = -0.04 * x + 0.85 * y + 1.6;
    }
    else if (sw > 8) {
      tx = -0.15 * x + 0.28 * y;
      ty = 0.26 * x + 0.24 * y + 0.44;
    }
    else if (sw > 1) {
      tx = 0.2 * x - 0.26 * y;
      ty = 0.23 * x + 0.22 * y + 1.6;
    }
    else {   
      tx = 0;
      ty = y * 0.16;
    }

    x = tx;
    y = ty;
   
    if(EXPORT == true){
      endRecord();
      exit();
     
      if(dosave) {
    endRaw();
    dosave=false;
  }
  }
}
}

void keyPressed() {
  if (key == 's') {
    dosave=true;
  }
}




=====================



10/16
<3D Processing>


最初はパラメーターをいじると多面体の数が変化する立法体を作ろうとしたが、プログラムの書き方がわからず、またProcessingの不具合もあり、スクエアーがランダムに動き回るものしか作れなかった。

実際に3Dをやってみて前回の課題とは比べ物にならないほど難しい気がした。



//controlP5
import controlP5.*;
ControlP5 controlP5;
Textfield tfUserName;
String txts = "";
int sliderA;

import javax.swing.*;

import unlekker.data.*;
import unlekker.geom.*;
public STL stl;
public FaceList poly;


String getFile;
String setFile;
String [] txtarray = null;
String txt = null;


int FIELD_SIZE = 50;
int FIELD_STEP =  10;


public void setup() {
  size(400, 400, P3D);
  colorMode(RGB, 0);
  frameRate(60);
  fill(0, 0);

  controlP5 = new ControlP5(this);
  controlP5.addButton("savefile", 1, 100, 45, 80, 19);
  controlP5.addSlider("sliderA", -100, 100, 0,50, 70, 200, 20);
  smooth();
}

public void draw() {
  background(0, 100);


  if (setFile != null) {
    beginRaw("unlekker.data.STL", setFile+".stl");
    println("start :"+setFile);
  }

  pushMatrix();
 
 
  translate(width/2,height/2);
  rotateX(mouseX/2);
  rotateY(mouseY/2);

  noStroke();
  lights();
  translate(58, 48, 0);
  sphere(28);

 
  popMatrix();


  if (setFile !=null) {
    endRaw();  
    setFile = null;
    println("end");
  }

  controlP5.draw();
}


public void savefile(int theValue) {
  setFile = setFileName();
}

public void sliderA(int v) {
  sliderA = v;
}


==========================



10/23

Processing 3D

今回は前回出来なかった多面体がどんどん増えていく3Dプログラミングを書いた
。自分の書きたいものが麻子の前回書いたプログラミングと類似していたため参考にさせてもらった。

//controlP5
import controlP5.*;
ControlP5 controlP5;
Textfield tfUserName;
String txts = "";
int slider2;

// Import
import javax.swing.*;

// Unlekker
import unlekker.data.*;
import unlekker.geom.*;
public STL stl;
public FaceList poly;

// File IO
String getFile;
String setFile;
String [] txtarray = null;
String txt = null;

// Field
int FIELD_SIZE = 50;
int FIELD_STEP =  10;


public void setup() {
  size(400, 400, P3D);
  colorMode(RGB, 250);
  frameRate(60);
  fill(0, 0);

  controlP5 = new ControlP5(this);
  controlP5.addButton("savefile", 1, mouseX, mouseY, 500, 500);
  controlP5.addSlider("slider2",0,100,128,40,20,100,10);
  smooth();
}

public void draw() {
  background(0, 100);

  // STL書き出し
  if (setFile != null) {
    beginRaw("unlekker.data.STL", setFile+".stl");
    println("start :"+setFile);
  }

  pushMatrix();
 
  translate(width/2,height/2,0);
  rotateX(mouseX/100);
  rotateY(mouseY/100);
  background(200);
  stroke(255, 50);
  rotateX(mouseY * 0.1);
  rotateY(mouseX * 0.1);
  //fill(mouseX * 2, 0, 160);
  sphereDetail(mouseX / 8);
  sphere(slider2);
 
  popMatrix();

    if (setFile !=null) {
    endRaw();  
    setFile = null;
    println("end");
  }

  controlP5.draw();
}


public void savefile(int theValue) {
  setFile = setFileName();
}

public void slider2(int v) {
  slider2 = v;
}



==============================
10/30

processing3D

最後のプロセッシングということでComputational FabricationにのせてあるNeedlizeを行おうとしたが思った以上に難しく、今回の授業に間に合わなかった。

A16 Soundneedlize

なので前回の作品の完成度を高めるという上で、マウスではなく今日中にP5で大きさ、回転、面数を制御できるようにしたいと思う。



=======================================


12/11
Grasshoppoer<Chair>


Eames Walnut Stool(イームズ ウォルナットスツール)

今回は真ん中のイスを出す。
が。。球体と円錐のサーフェイスを変化させるコマンドがわからなかった。
下が実際に出力したもの。





0 件のコメント:

コメントを投稿