Subscribed unsubscribe Subscribe Subscribe

関係性と個体について

風が吹けば桶屋が儲かる

風、砂、盲人、三味線、猫、ネズミ、桶、桶屋

この例は、全ての事物には因果性、関係性があるという例えだと思っていたが、00年代以降の現代思想(ポストポスト構造主義(?))をあたると、
関係性なんてものはなく、各々の事物は各々が自由気ままに振舞っているだけでその結果生まれている状況を見て、
存在しない因果性、関係性を見出してしまっているだけ、誤認しているだけという捉え方が多い。


ポストポスト構造主義として取り上げられる思弁的実在論(Speculative Realism(SR))という一派について。
主要メンバーは、レイ・ブラシエ、イアン・ハミルトン・グラント、グレアム・ハーマン、クァンタン・メイヤスーの4人である。
それぞれの姿勢は異なるが、イマヌエル・カント以来の哲学や、相関主義(Correlationism)を乗り超えようとするという点で共通している。


千葉雅也や星野太の解説を借りると、

メイヤスーは、思弁的唯物論(マヌエル・デランダもこの言葉を使う)として、
極端な偶然性の哲学を提示していて、この世界はある時突然、偶然性により何の理由もなく発生したとしている。
(このことにより、因果性、関係性などは、偶然に起こった状況に対して後付けされるものでしかないといえる(?))

ハーマンは、オブジェクト指向存在論(Object-Oriented Ontology(OOO))として、絶対にバラバラでありながら、関係もしているというオブジェクトについての理論を組み立てる。

絶対にバラバラでありながら、関係もしているというオブジェクトをハーマンの説明を借りると、
あるオブジェクト全体を、統一オブジェクトと呼び、
統一オブジェクトの中には、感覚的オブジェクト(というレベル?)があり、
その下に実在的オブジェクト(のレベル?)がある。
そして、感覚的オブジェクトが、実在的オブジェクトの存在を魅惑、暗示している。
(魅惑:allure / 暗示:allusion)

関係しているように見えるオブジェクトAとオブジェクトBがあるとを仮定すると、
AとBは、感覚的オブジェクト(のレベル?)では、相互に「関係」し、
AとBは、実存的オブジェクト(のレベル?)では、絶対的に「孤立」、独立している。

このようにハーマンは、オブジェクト同士は、関係しつつ孤立しているという立場をとる。




00年代以降の新しい哲学の流れとしての、SR的、OOO的なうまい解釈を探してみる。


例えば、ハンマーと釘。
ハンマーと釘の、打つもの打たれるものという関係は、人間側の誤認的な、勝手な決めつけな決めつけであって、実際はハンマーと釘、そのもの以外なにものでもない。

従来の分析哲学や、大陸哲学では、ハンマーは打つもの、釘は打たれるもの、というように、オブジェクトそのものではなく、それらに対する人間のアクセスのみの関心を向けていると、ハーマンらは批判している。
(アクセスを中心に考えることは、人間を主体(Subject)とし、そのほかを、客体もしくは対象(Object)としてとらえている)

ハーマンの魅惑の考えを使って説明すると、ハンマーは打つもの、釘は打たれるものという感覚的オブジェクトを持っていて、それらを見た人間は、何の関係のない2つの間にも関係性を誤認させられてしまう(?)。




別の例をあげれば、大きな木と、その木陰で休む人間がいる風景。
そのとき、木と人間の間には関係性はあるのか。
木は光を浴びようと葉を広げるだけで自由気ままに振舞っていて、人間は日光をさえぎる何かを求めて振舞う。
自由気ままに振舞うそれぞれの固体が、偶然に同じ場所に存在している結果、それを見た人間が勝手に関係性を見出してしまっているだけ誤認しているだけではないか。

一つの状況のなかで、それぞれ個体の振る舞いを外から見た人間が、繋がりを勝手に想像しているだけで、因果性、関係性なんてものはこの世に存在しなくて、気ままに振る舞う個体たちが存在している、とされる。
言い方を変えると、それぞれオブジェクトの、感覚的オブジェクトを外から見た人間が関係性を勝手に想像しているだけで、オブジェクトそのもの同士に関係性なんてものは存在しない、とされる。



以下、引用

(3つのインスタレーションについて)それぞれの要素は直接的な結び付きを持っているわけではないが、
同時刻、同じ場所に存在することによって、因果関係が生まれているように見える。
このことから言えるのは、私たちが普段見出している関係性の束は、
すべて事後的に見出されたものであるということである。
おのおのの個体の関係性について、
ツリーであるとかセミラティスであるといったことは、事後的に説明できるかもしれないが、
実際にそこにあるのは、関係性ではなくそれぞれの個体である。
(新建築 2015年07月 i saw a girl with a telescope についての永田康祐のテキストより)


また、関係性と建築について、
建築家・平田晃久は、自身の建築理論「からまりしろ」を説明するときに子持ち昆布の例を出す。
以下の引用部分であげられる、他者性と階層性について、
結果的に他者の間で、関係性、階層構造が発生していると触れられている。
ここまで触れている関係性と個体の捉え方とまったく逆の意味としてとっている。

以下、引用

こうしたことを考えているうちに思い至ったのが「からまりしろ」の原理です。
空間の内部をコントロールするという20世紀的な建築概念ではなく、
何かがからまっていく余地やきっかけを作ることを建築の根本的な概念に据え、
新しい建築の原理をつくれないかという問題意識からスタートした考えです。
生き物の世界に目を向けると、木の枝に鳥の巣がからまっていたりするように、
あるものが別のものにからまっていることが多いことに気づかされます。
子持ち昆布もそのひとつで、よく見ると魚の卵が海底の海藻にからまっており、
その海藻も海底のデコボコした岩にからまっていて、さらにこの岩も下の地層にからまっている。
ここで重要なのは、「他者性」と「階層性」の2点です。
先ほどの樹と人の関係の話と同様、魚と卵、昆布と海底もまた、
もともとは他者だけれども結果的に関係性が発生したものとなっています。
さらに、「魚の卵」「昆布」「岩」の間には階層構造があります。
特にこの階層性は非常に建築的な原理だといえるのではないかと思っています。
私の建築はこの図式にほぼ縮訳されると言うことすらできます
(10+1 ウェブサイト「切断」の哲学と建築──非ファルス的膨らみ/階層性と他者/多次元的近傍性 4P目 平田プレゼンより)


同様に、平田は、飛行機から見下ろしたアルプス山脈とその山脈に沿う雲について、[アルプス/雲]として、階層構造を持つ関係性を表現する。
そして、一見複雑に見えることの成り立ちでも1番単純なところは簡単な階層構造からなるとしている。


上での引用の平田の挙げた例えについて、前半で触れているSRのような捉え方で表現してみる。

永田の表現にならって書くと、
直接的に結び付きを持っているわけではない(他者性を持つ)昆布とニシンが、同じ時刻の同じ場所に存在し、それぞれ自由気ままに振る舞った結果、子持ち昆布という状況が生まれる。
その状況に対して、事後的にツリー(階層構造)という関係性を見出すことができるが、実際そこにあるのは、昆布とニシン、それぞれの個体である。





まとめ(?)
OOOやSRなど、ポストポスト構造主義的な流れをきちんと理解しているわけではないが、
いくつか資料に当たったので書いてみた。
切断というのは平田のテキストよりも、同じ10+1記事内の門脇耕三のエレメント主義と近いのかもしれない。
だらだらと書いてみたが、設計に対してどう使っていくのかだろうか。
いろいろ行き来しすぎて落としどころがわからなくなってしまった。。。


参照
現代思想 2015年06年 特集=新しい唯物論
第一哲学としての美学 グレアム・ハーマンの存在論 星野太(現代思想2015年1月号 特集=現代思想の新展開2015より)
動きすぎてはいけない 千葉雅也
ポストドゥルーズ実在論を探る(https://www2.chuo-u.ac.jp/philosophy/info/web.pdf
建築のオブジェクトをめぐって 平野利樹(http://toshiki-hirano.com/menu/network_object/?lang=ja
新建築 2015年07月号
10+1 ウェブサイト「切断」の哲学と建築──非ファルス的膨らみ/階層性と他者/多次元的近傍性(http://10plus1.jp/monthly/2016/12/issue-01.php
建築とはからまりしろをつくることである 平田晃久

G-code 3D Printing

161203 at ICTCO
金田さんワークショップ

普通にSTLをスライスするのとはまったく違う、
らせん状の、一筆書きのような、G-codeでプリントする。

G-code生成用のプログラムが用意されており、
いくつかのパラメータを設定すると、G-codeが作られる。
当日は金田さん所有のデルタ式プリンタで出力した。
(当日の写真は後で貼る)

Repetier-Hostで読めるG-codeができていたので、
お店のRepetier-Host対応の3Dプリンタ、Cubisで出力を試みるも、
デルタ式プリンタの座標体系でG-codeが作られていたので造形範囲に収まらなかった。
G-codeのテキストをgrasshopperを使って、X座標Y座標の修正をする。
f:id:ysok_na:20161227184915j:plain

間違えた場所など。
f:id:ysok_na:20161227184937j:plain
全部で63817行、作業完了。
f:id:ysok_na:20161227184951j:plain


後日、3DプリンタCubisにて出力した。
Gコード自体は問題なく、プリンターもきちんと動いたが、
送り出すフィラメントの量、ノズル径など、
プリンタのパラメータの調整がうまくいかず、造形はうまくいかなかった。
f:id:ysok_na:20161227184813j:plain
一筆書きの様子がわかる。
f:id:ysok_na:20161227184809j:plain
動きはいいんだけど積層が全然ダメ
www.youtube.com

Remove all ads

「動きすぎてはいけない ジル・ドゥルーズと生成変化の哲学」千葉雅也

https://images-na.ssl-images-amazon.com/images/I/31IeNpANaiL._SX346_BO1,204,203,200_.jpg


「切断」の哲学と建築
──非ファルス的膨らみ/階層性と他者/多次元的近傍性
千葉雅也(哲学者)+平田晃久(建築家)+門脇耕三(建築家)+コメンテーター:松田達(建築家)+モデレーター:平野利樹(東京大学大学院隈研吾研究室)

10plus1.jp

Remove all ads

多様性を持つ建築or多様な感受を包容する建築

ものの潜在性、もののポテンシャルについて考えていた時に見つけた平野利樹の論考より。

ハイデガーのハンマーの話、ハーマンのハンマーの話、メイヤスーの相関主義への批判などをちら見しながら、10+1の記事を再び読む。

テキスト自体はわからないわけでもないが、挙げられる建築作品が特殊すぎて、建築としての解釈が理解しがたい。

まま、2つの映画の登場人物の、2人目の例えは良く分からない…本人に意識がないのに包容している、と言えるの…?という風にいう人もいた。


ここで挙げられる建築
O-14 by Reiser+Umemoto
https://www.google.co.jp/search?q=O-14+reiser+umemoto&ie=UTF-8&oe=UTF-8&hl=en-jp&client=safari



(以下10+1の記事脚注より引用)

「建築自体が多様性を持っている」と「多様な感受を包容すること」の違いに関連して、ジェシー・ライザーと梅本奈々子が興味深い考察をしている。
このニューヨークを拠点に活動する建築家は、自身の設計した《O-14》について書いた論考の中で、ウッディ・アレンピーター・セラーズの映画を次のように比較し、自身の追求する建築のあり方を説明する。
ウッディ・アレンの映画『カメレオンマン』(原題:Zelig)での主人公ゼリグは、彼の置かれた状況に対応して彼自身も変貌する。例えば、インディアンと接触しているときはインディアンに、ニュルンベルクではナチスの親衛隊に同化してしまう。
一方、ピーター・セラーズの『チャンス』(原題:Being There)の主人公で、知的障害をもつ庭師であるチャンスは、何気ない発言を周囲の人間に好意的に曲解される存在だ。チャンスは単に庭の手入れの話をしているだけなのに、実業家には経済政策についての示唆的な暗喩と受け取られるといった具合である。そしてライザーと梅本は、《O-14》をチャンス的なものと位置付けている。
ゼリグは、置かれた状況に応じて変化するという点でコンテクスチュアリズム的であり、たしかに自身は多様性を持っている。しかし、ひとつの場所につきひとつの感受しか許容しない。これに対してチャンスは、ゼリグのように自身は変化しないものの、周囲の人々による多様な感受を包容する存在である。

以下を参照。Reiser + Umemoto, O-14: Projection and Reception, AA Publications, 2012, pp.40-41.

引用元
スペキュラティヴ・デザインの奇妙さ、モノの奇妙さ──建築の「わかりやすさ」を越えて
平野利樹(東京大学建築学専攻博士課程)
http://10plus1.jp/monthly/2016/04/issue-02.php

Remove all ads

UE4

買ってみた。

https://images-na.ssl-images-amazon.com/images/I/519Erig0BtL._SX386_BO1,204,203,200_.jpg

ガラスのマテリアルを当てた内観
f:id:ysok_na:20161113185022p:plain

水のブループリント
f:id:ysok_na:20161113185033p:plain

Remove all ads

shell 3d print by replicator mini

球をインフィルを下げ、1層のシェルで3Dプリントテスト

元データ
f:id:ysok_na:20161027191505j:plain

replicator mini + maker bot desktop

quality : standard

raft : on
support : on
shell : 1
infill : 0%
layer resolution : 0.3



途中でもじゃった
f:id:ysok_na:20161027192044j:plain
f:id:ysok_na:20161028135357j:plain
f:id:ysok_na:20161028135400j:plainf:id:ysok_na:20161028135358j:plain


Pythonでのパネリング

RhinoScriptSyntax.AddLine(PtA , PtB)
Rhino.Geometry.Line(PtA , PtB)
たぶん同じ結果??

# input type - unum , vnum : int

import Rhino.Geometry as rg

a = []
b = []

for i in range(unum):
    for j in range(vnum):
        
        pt11 = surf.PointAt(i/unum, j/vnum)
        pt12 = surf.PointAt((i+1)/unum, j/vnum)
        pt22 = surf.PointAt((i+1)/unum, (j+1)/vnum)
        pt21 = surf.PointAt(i/unum, (j+1)/vnum)
        
        # line1 = rs.AddLine(pt11,pt22)
        # line2 = rs.AddLine(pt12,pt21)

        line1 = rg.Line(pt11,pt22)
        line2 = rg.Line(pt12,pt21)
        
        a.append(line1)
        b.append(line2)
Remove all ads

Python vs C#

”重い処理は、C#で書くと軽くなって処理が早い”
kuma事務所からの噂を、50x50x50の点オブジェクトを作る処理で実験。

grasshopperとghPythonとC#など

f:id:ysok_na:20161022195610j:plain


写真上から
grasshopper : 330ms (2%)

ghPython : 10.9s (85%)

C# : 1.2s (9%)

(grasshopperのところは他にもseriesなどのコンポーネントもあるので、もう少しかかる(ほぼゼロに近いが))



結果として、今回の作業だと、C#は、Pythonよりもはやいが、
grasshopperのコンポーネントで直接やったほうが早かった。


以下、そーす

Python

import rhinoscriptsyntax as rs

a = []

for i in range(x):
    for j in range(x):
        for k in range(x):
            point = rs.AddPoint(i,j,k)
            a.append(point)

C#

  private void RunScript(int x, ref object A)
  {
    List<Point3d> pts = new List<Point3d>();

    for (int i = 0; i < x; i++){
      for (int j = 0; j < x; j++){
        for (int k = 0; k < x; k++){
          Point3d tempPt = new Point3d(i, j, k);
          pts.Add(tempPt);
        }
      }
    }
    A = pts;
  }
Remove all ads

how to use UP Plus2

connect usb

3d print > initialize

file > open
open STL file

Move
Scale
Rotate

Auto Placement!!!

(3d print > table heat)

3d print > print > ok

Remove all ads

pushMatrix() / popMatrix()

pushMatirx()
pushMatrix() \ Language (API) \ Processing 2+
popMatrix()
popMatrix() \ Language (API) \ Processing 2+

record (0,0) and pull (0,0)Understanding pushMatrix() and popMatrix() requires understanding the concept of a matrix stack.

pushMatrix() function saves the current coordinate system to the stack
popMatrix() restores the prior coordinate system.

pushMatrix() and popMatrix() are used in conjuction
with the other transformation functions
and may be embedded to control the scope of the transformations.

background(255);
line(0,10,width,10);
line(10,0,10,height);
noStroke();
translate(10,10);

fill(255,0,0,127);
rect(0,0,50,50); // red


pushMatrix(); // record (0,0)

translate(30,30);
fill(0,255,0,127); // green
rect(0,0,50,50);

popMatrix(); // pull (0,0)


fill(0,0,255,127);
rect(2,2,50,50); // blue
Remove all ads

lights()

lights()
lights() \ Language (API) \ Processing 2+
Sets the default ambient light,directional light, falloff, and specular values.

The defaults are ambientLight(128, 128, 128) and directionalLight(128, 128, 128, 0, 0, -1), lightFalloff(1, 0, 0), and lightSpecular(0, 0, 0).

Lights need to be included in the draw() to remain persistent in a looping program.

Placing them in the setup() of a looping program will cause them to only have an effect the first time through the loop.

size(100,100,P3D);
background(0);
noStroke();

// sets the default ambient
// and directonnal light
lights();

translate(20,50,0);
sphere(30);

translate(60,0,0);
sphere(30);
void setup(){
  size(100,100,P3D);
  background(0);
  noStroke();
}

void draw(){
  // Include lights() at the beginning
  // of draw() to keep them persisitent
  
  lights();
  translate(20,50,0);
  sphere(30);
  translate(60,0,0);
  sphere(30);
}
Remove all ads

Rotate camera with mouse Dragging

マウス操作によるカメラ移動 with Processing : 東京工業大学 ロボット技術研究会

class MouseCamera {
  
  float eyeX, eyeY, eyeZ;
  float centerX, centerY, centerZ;
  float upX, upY, upZ;
  float radius;
  float[][] matrix;
  PVector preVector;
  
  MouseCamera(float radius) {
    this(radius, width/2.0, height/2.0, (height/2.0)/tan(PI*30.0/180.0), width/2.0, height/2.0, 0, 0, 1, 0);
  }
  MouseCamera(float radius,
              float eyeX, float eyeY, float eyeZ,
              float centerX, float centerY, float centerZ,
              float upX, float upY, float upZ) {
    this.radius = radius;
    this.eyeX = eyeX;
    this.eyeY = eyeY;
    this.eyeZ = eyeZ;
    this.centerX = centerX;
    this.centerY = centerY;
    this.centerZ = centerZ;
    this.upX = upX;
    this.upY = upY;
    this.upZ = upZ;
    matrix = getIdentityMatrix();
  }
  
  void update() {
    beginCamera();
    camera(eyeX, eyeY, eyeZ, centerX, centerY, centerZ, upX, upY, upZ);
    
    applyMatrix(matrix[0][0], matrix[0][1], matrix[0][2], matrix[0][3], 
                matrix[1][0], matrix[1][1], matrix[1][2], matrix[1][3], 
                matrix[2][0], matrix[2][1], matrix[2][2], matrix[2][3], 
                matrix[3][0], matrix[3][1], matrix[3][2], matrix[3][3]);
    endCamera();
  }
  
  void mousePressed() {
    switch(mouseButton) {
      case RIGHT:{
        matrix = getIdentityMatrix();
      }
      break;
      
      case LEFT: {
        preVector = mouseOnSphere(mouseX-width/2, mouseY-height/2);
      } 
      break;
      
      case CENTER: {
        preVector = new PVector(mouseX-width/2, mouseY-height/2);
      } 
      break;
    }
  }

  void mouseDragged() {
    switch(mouseButton) {
      
      case LEFT: {
        PVector v = mouseOnSphere(mouseX-width/2, mouseY-height/2);
        matrix = mult(getRotationMatrix(preVector, v), matrix);
        preVector = v;
      } 
      break;
      
      case CENTER: {
        PVector v = new PVector(mouseX-width/2, mouseY-height/2);
        matrix = mult(getTranslationMatrix(preVector, v), matrix);
        preVector = v;
      } 
      break;
    }
  }
  
  void mouseWheel(MouseEvent event) {
    matrix = mult(getScaleMatrix(event.getCount()), matrix);
  }
  
  float[][] getIdentityMatrix() {
    return new float[][] { {1.0, 0.0, 0.0, 0.0}, 
                           {0.0, 1.0, 0.0, 0.0},
                           {0.0, 0.0, 1.0, 0.0},
                           {0.0, 0.0, 0.0, 1.0} };
  }
  
  float[][] getRotationMatrix(PVector v1, PVector v2) {
    PVector v = v1.cross(v2);
    v.normalize();
    v.mult(8.0);
    float c = v1.dot(v2); // cos
    float s = v1.cross(v2).mag(); // sin
    return new float[][] { {c + v.x*v.x*(1-c), v.x*v.y*(1-c) - v.z*s, v.x*v.z*(1-c) + v.y*s, 0.0}, 
                           {v.y*v.x*(1-c) + v.z*s, c + v.y*v.y*(1-c), v.y*v.z*(1-c) - v.x*s, 0.0}, 
                           {v.z*v.x*(1-c) - v.y*s, v.z*v.y*(1-c) + v.x*s, c + v.z*v.z*(1-c), 0.0}, 
                           {0.0, 0.0, 0.0, 1.0}};
  }
  
  float[][] getTranslationMatrix(PVector v1, PVector v2) {
    return new float[][] { {1.0, 0.0, 0.0, v2.x-v1.x}, 
                           {0.0, 1.0, 0.0, v2.y-v1.y}, 
                           {0.0, 0.0, 1.0, v2.z-v1.z}, 
                           {0.0, 0.0, 0.0, 1.0} };
  }
  
  
  float[][] getScaleMatrix(float wheelCount) {
    float temp = 10.0;
    return new float[][] { {exp(-wheelCount/temp), 0.0, 0.0, 0.0},
                           {0.0, exp(-wheelCount/temp), 0.0, 0.0},
                           {0.0, 0.0, exp(-wheelCount/temp), 0.0},
                           {0.0, 0.0, 0.0, 1.0} };
  }


  PVector mouseOnSphere(float x, float y) {
    float _x = x/radius;
    float _y = y/radius;
    PVector res = new PVector(_x, _y, 0.0);
    if (_x*_x + _y*_y > 1.0) {
      res.normalize();
    }
    
    else {
      res.z = sqrt(1.0 - _x*_x - _y*_y);
    }
    return res;
  }

  float[][] mult(float[][] m1, float[][] m2) {
    assert(m1[0].length == m2.length);
    float[][] res = new float[m1.length][m2[0].length];
    for (int i=0; i<m1.length; i++) {
      for (int j=0; j<m2[0].length; j++) {
        float sum = 0;
        for (int k=0; k<m1[0].length; k++) {
          sum += m1[i][k]*m2[k][j];
        }
        res[i][j] = sum;
      }
    }
    return res;
  }
}
//sphere + torus

import processing.opengl.*;
MouseCamera mouseCamera;

void setup() {
  size(800, 800,OPENGL);
  mouseCamera = new MouseCamera
  (800.0, 0, 0, (height/2.0)/tan(PI*30.0/180.0), 0, 0, 0, 0, 1, 0);
}

void draw() {
  mouseCamera.update();
  background(200);
  noFill();
  stroke(0);
  strokeWeight(0.5);
  sphere(100);
  torus(250, 50, 60, 30);
  
  // origin
  strokeWeight(1);
  stroke(0,0,0);
  fill(255);
  box(25);
  
  // x
  // red
  stroke(255,0,0);
  line(0,0,0,200,0,0);
  
  // y
  // green
  stroke(0,255,0);
  line(0,0,0,0,200,0);
  
  // z
  // blue
  stroke(0,0,255);
  line(0,0,0,0,0,200);
}


void torus(float R, float r, int countS, int countT) {
  for (int s=0; s<countS; s++) {
    float theta1 = map(s, 0, countS, 0, 2*PI);
    float theta2 = map(s+1, 0, countS, 0, 2*PI);
    beginShape(TRIANGLE_STRIP);
    // beginShape(QUAD_STRIP);
    
    for (int t=0; t<=countT; t++) {
      float phi = map(t, 0, countT, 0, 2*PI);
      vertex((R+r*cos(phi))*cos(theta1), (R+r*cos(phi))*sin(theta1), r*sin(phi));
      vertex((R+r*cos(phi))*cos(theta2), (R+r*cos(phi))*sin(theta2), r*sin(phi));
    }
    endShape();
  }
}


void mousePressed() {
  mouseCamera.mousePressed();
}
void mouseDragged() {
  mouseCamera.mouseDragged();
}
void mouseWheel(MouseEvent event) {
  mouseCamera.mouseWheel(event);
}
Remove all ads

Rotate camera with mouse location

import processing.opengl.*;

void setup(){
  size(600,600,OPENGL);
  smooth();
}

void draw(){
  background(200);
  
  translate(width*0.5,height*0.5,0);
  rotateY(map(mouseX,0,width,-PI,PI));
  rotateX((map(mouseY,0,height,-PI,PI))*(-1));
  
  // origin
  stroke(0,0,0);
  box(25);
  
  // x
  // red
  stroke(255,0,0);
  line(0,0,0,100,0,0);
  
  // y
  // green
  stroke(0,255,0);
  line(0,0,0,0,100,0);
  
  // z
  // blue
  stroke(0,0,255);
  line(0,0,0,0,0,100);
}
Remove all ads

sphere()

sphere()
sphere() \ Language (API) \ Processing 2+

create sphere on center
centerMode

sphere(radius)

size(100,100,P3D);

noStroke();
lights();
translate(width*0.25,height*0.5,0);
sphere(30);

translate(width*0.5,0,0);
sphere(20);
Remove all ads

「建築の形態言語」ウィリアムミチェル

https://images-na.ssl-images-amazon.com/images/I/51S5f8xghHL._SX358_BO1,204,203,200_.jpg



第1章 建築の記述
第2章 建築形態
第3章 デザイン体系
第4章 批評言語
第5章 デザインにおける推論
第6章 タイプとボキャブラリー
第7章 デザイン演算
第8章 建築の形態言語
第9章 機能
第10章 機能的動機を持つデザイン

Remove all ads