Tumgik
junihyonga · 5 years
Video
vimeo
ENCODED MATTER from JUNIHYONGA on Vimeo.
2 notes · View notes
junihyonga · 9 years
Photo
Tumblr media
0 notes
junihyonga · 9 years
Video
vimeo
IMAGE BASED_FRACTAL(TRIANGULAR) from JUNIHYONGA on Vimeo.
0 notes
junihyonga · 9 years
Video
vimeo
Tri-Hex Structure from JUNIHYONGA on Vimeo.
0 notes
junihyonga · 9 years
Photo
Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media
0 notes
junihyonga · 10 years
Video
vimeo
DIGITAL FABRICATION _ WAFFLE STRUCTURE FROM ISOCURVE from JUNIHYONGA on Vimeo.
예시와 같은 형태의 모델은 XY축에의한 와플링으로 표현하기에는 한계가 있습니다. 따라서 서피스 자체가 가진 ISOCURVE를 추출(EXTRACTISOCURVE)하고, 이를 서피스노말(법선)방향으로 오프셋(OFFSETNORMAL) 시킨후 로프트하여 스트럭쳐를 구현합니다.
0 notes
junihyonga · 10 years
Photo
Tumblr media Tumblr media
0 notes
junihyonga · 10 years
Video
vimeo
BRICK STACKING OPTIMIZATION from JUNIHYONGA on Vimeo.
0 notes
junihyonga · 10 years
Video
vimeo
REGENERATIVE ARCHITECTURE: GROWING LOCOMOBILE CITY
0 notes
junihyonga · 10 years
Video
vimeo
IMAGE CITIES CIRCUS : REDRAWING THE MAP from JUNIHYONGA on Vimeo.
2014 SPRING MARIO GOODEN STUDIO
0 notes
junihyonga · 10 years
Video
vimeo
ADAPTIVE COMPONENT ORIGAMI FOLDING PANEL from artchijun on Vimeo.
0 notes
junihyonga · 10 years
Video
vimeo
DIVA EXPOSURE ANALYSIS + CHAMELEON AC CONNECTION from artchijun on Vimeo.
0 notes
junihyonga · 10 years
Video
vimeo
CHAMELEON GEOMETRY TRANSGER + KANGAROO FORM FINDING from artchijun on Vimeo.
0 notes
junihyonga · 10 years
Video
vimeo
Hy-Fi
0 notes
junihyonga · 10 years
Video
vimeo
SEARCH: ADVANCED ALGORITHMIC DESIGN_Physics Based Simulation
  import traer.physics.*;
import controlP5.*;
import peasy.*;
import processing.opengl.*;
import ComputationalGeometry.*;
import java.util.Collections;
  ParticleSystem physics;
Particle[][] particles;
Spring[] sps = new Spring[0];
Spring sp;
int gridSize = 25;
  float SPRING_STRENGTH=0.2;
float SPRING_DAMPING =0.1;
float GRAVITY = 0.1;
float GRAVITYZ = 0.0;
float DRAGVALUE = 0.001;
float Strength;
float Restlength;
float Skeleton;
float Joint;
PVector pv1, pv2;
      boolean KILL = false;
boolean Bake = false;
boolean keystate;// = false;
float KILLLENGTH;
boolean state = false;
  //Constructing the IsoSkeleton
IsoSkeleton skeleton = new IsoSkeleton(this);
  //MOUSE FUNCTION
float mx;
float my;
boolean overparticle = false;
boolean lock = false;
float range=40;  //MOUSEPICK RANGE
float particleX;
float particleY;
Boolean locked=false;
Particle Cparticle;  //PICKED PARTICLE
  //P5
PeasyCam cam;
PeasyDragHandler RotateDragHandler;
PeasyDragHandler PanDragHandler;
ControlP5 cp5;
int buttonValue=1;
int sliderValue = 100;
  float PG;
  void setup() {
  size(1200, 1200, P3D);//, OPENGL);
  smooth();
  fill(0);
  colorMode(HSB, 255);
    //P5
  cam = new PeasyCam(this, width/2, height/2, 0, 1000);
  RotateDragHandler = cam.getRotateDragHandler();
  PanDragHandler = cam.getPanDragHandler();
  cam.setCenterDragHandler(RotateDragHandler);
  cam.setRightDragHandler(PanDragHandler);
  cam.setLeftDragHandler(null);
    cp5 = new ControlP5(this);
  cp5.addToggle("KILL").setPosition(50, 50).setSize(100, 15);
  cp5.addSlider("GRAVITY").setPosition(50, 100).setSize(100, 15).setRange(0, 0.2).setValue(0.05);
  cp5.addSlider("DRAGVALUE").setPosition(50, 120).setSize(100, 15).setRange(0, 0.05).setValue(0.02);
  cp5.addSlider("KILLLENGTH").setPosition(50, 140).setSize(100, 15).setRange(0, 3).setValue(0.1);
  cp5.addSlider("Strength").setPosition(50, 180).setSize(100, 15).setRange(0.05, 0.25).setValue(0.15);
  cp5.addSlider("Restlength").setPosition(50, 200).setSize(100, 15).setRange(1, 30).setValue(20);
  cp5.addToggle("Bake").setPosition(50, 240).setSize(100, 15);
  cp5.addSlider("Skeleton").setPosition(50, 280).setSize(100, 15).setRange(0, 2).setValue(0.8);
  cp5.addSlider("Joint").setPosition(50, 300).setSize(100, 15).setRange(0, 1).setValue(0.1);
  cp5.setAutoDraw(false);
    //PHYSICS
  physics = new ParticleSystem(0, 0, 0.1, 0.05);  // GRAVITY/DRAG
  particles = new Particle[gridSize][gridSize];
    float gridStepX = (float) ((width / 2) / gridSize);
  float gridStepY = (float) ((height / 2) / gridSize);
    for (int i = 0; i < gridSize; i++) {
    for (int j = 0; j < gridSize; j++) {
      particles[i][j] = physics.makeParticle(0.2, j * gridStepX + (width / 4), i * gridStepY + (height / 4), 0.0);
      if (j > 0)
      { 
        sp = physics.makeSpring(particles[i][j - 1], particles[i][j], SPRING_STRENGTH, SPRING_DAMPING, gridStepX);
        sps = (Spring[]) append(sps, sp);
      }
    }
  }
    for (int j = 0; j < gridSize; j++) {
    for (int i = 1; i < gridSize; i++) {
      sp = physics.makeSpring(particles[i - 1][j], particles[i][j], SPRING_STRENGTH, SPRING_DAMPING, gridStepY) ;
      sps = (Spring[]) append(sps, sp);
    }
  }
    //FIXED PARTICLE
  for (int i = 0; i < gridSize; i++) {
    particles[0][0].makeFixed();
    particles[gridSize-1][gridSize-1].makeFixed();
    particles[0][gridSize-1].makeFixed();
    particles[gridSize-1][0].makeFixed();
  }
}
  void draw() {
    physics.tick();
  physics.setGravity(0, 0, GRAVITY);
  physics.setDrag(DRAGVALUE);
      noFill();
  background(0);
  stroke(255);
  float diff=0;
  if (frameCount%5==0) {
    state=true;
  }
    IntList li=new IntList();
  for (int k=0;k<sps.length;k++ ) {
    li.append(k);
  }
  li.shuffle();
  for (int j=0;j<li.size();j++)
  {
    int i=li.get(j);
    Spring s = sps[i];
    s.setStrength( Strength );
    s.setRestLength( Restlength );
    float currentLength = s.currentLength(); 
    float restLength = s.restLength();
    diff = abs(currentLength - restLength);
    if (state) {
      if (diff < KILLLENGTH  && KILL ) { 
        physics.removeSpring(s);
        state=false;
      }
    }
  }
    for (int j=0; j< physics.numberOfSprings(); j++) {
    Spring cs = physics.getSpring( j );
    float currentLength = cs.currentLength(); 
    float restLength = cs.restLength();
    diff = abs(currentLength - restLength);
    stroke( 100 + diff*5, 255, 255); 
    Particle a = cs.getOneEnd();
    Particle b = cs.getTheOtherEnd();
    line( a.position().x(), a.position().y(), a.position().z(), b.position().x(), b.position().y(), b.position().z());
    if (!keystate) {
      if (Bake) {
        pv1=new PVector(a.position().x(), a.position().y(), a.position().z());
        pv2=new PVector(b.position().x(), b.position().y(), b.position().z());
        skeleton.addEdge(pv1, pv2);
      }
    }
  }
    keystate=true;
    if (!Bake) {
    skeleton.clear();
    keystate=false;
  }
  fill(150);
  stroke(200);
  skeleton.plot(Skeleton, Joint); // Thickness as parameter
    //MOUSE PICKER
  if (locked==false) {
    overparticle=false;
      float smallestDistance = MAX_FLOAT;
    int col = 0;
    int row = 0;
      for (int j = 0; j < gridSize; j++) {
      for (int i = 0; i < gridSize; i++) {
        particleX = particles[i][j].position().x(); 
        particleY = particles[i][j].position().y();
        float  particleZ = particles[i][j].position().z();
          float screenPosX = screenX(particleX, particleY, particleZ);
        float screenPosY = screenY(particleX, particleY, particleZ); 
        float disMouse = dist(mouseX, mouseY, screenPosX, screenPosY);
        if (disMouse < smallestDistance) {
          smallestDistance = disMouse;
          col = i;
          row = j;
        }
      }
    }
      if (smallestDistance < range) {
      particleX = particles[col][row].position().x(); 
      particleY = particles[col][row].position().y();
      float  particleZ = particles[col][row].position().z();
      overparticle = true;
      fill(0);
      pushMatrix();
      translate(particleX, particleY, particleZ);
      sphere(2);
      popMatrix();
      Cparticle = particles[col][row];
    }
  }
    if (mousePressed) {
    locked=true;
    if (overparticle==true) {
      Cparticle.position().set(mouseX, mouseY, 0);
      Cparticle.velocity().clear();
    }
  }
  else
  {
    locked=false;
  }
  if (keyPressed) {
    if (key == 'w' || key == 'W') {
      Cparticle.makeFree();
    }
    if (key == 'q' || key == 'Q') {
      Cparticle.makeFixed();
    }
  }
  // Plotting 
  fill(50);
  gui();
}
  void gui() {
  hint(DISABLE_DEPTH_TEST);
  cam.beginHUD();
  cp5.draw();
  cam.endHUD();
  hint(ENABLE_DEPTH_TEST);
}
1 note · View note
junihyonga · 11 years
Text
상황주의 [ Situationalism , 狀況主義 ]
 고도로 이론적인 입장을 취하는 상황주의는 서구 사회에 대한 자기분석으로부터 출발하였다.
 그들은 공적인 활동에 활발히 참여하는 시민들을,탈정치적인 대중매체가 제공하는 볼거리를 수동적으로 구경하기만 하는 무기력한 소비자로 전락시킨 책임이자본주의에 있다고 비판했다. 
상황주의의 이러한 관점은 1967년에 출간된 드보르Guy Debord의 저서 《구경거리의 사회Society of Spectacle》에서 정확하게 지적되었는데, 그의 견해에 따르면,현대 세계가 모든 시적인 능력을 억압하고 미술을 장식품으로 만들어 버림으로써 잘못된 표상만을 보여준다는 것이다.
기존 질서에 대해 격렬한 문제의식을 제기하였던 상황주의의 활동은영화, 기고 그리고 직접적인 행동에 의해 정치, 관습, 사회에 대한 비평의 차원에서 이루어졌다. 
그 기원은 인습에 얽매인 부르주아적인 삶을 철저히 붕괴시키고자 했던 초현실주의로 거슬러 올라갈 수 있다.
사실 상황주의는 초현실주의 미술의 전후(戰後) 양식으로 간주될 수 있다.
하지만 초현실주의가 심리학적 무의식을 강조했다면,상황주의는 방향전환(détournement), 표류(dérive), 통합된 도시 생활(urbanisme unitaire)과 같은 개념에 관심을 기울였다는 점이 다르다고 할 수 있다.
한 예로 요른Asger Jorn(1914~1973)은 부분적으로 파괴된 싸구려 복제품 위에 그림을 그려 방향전환된 작품을 전시함으로써독창성과 원작자의 가치에 질문을 던졌다.
한편 통합된 도시 생활에는 개별 미술 영역을 넘어서는 작품-예를 들면 빌딩보다 큰 그림-이나 또 의미있는 사회적 상호작용 혹은 상황이 벌어지는 장소로서의 도시환경을 창조하는 것이 필수적이다.
 이렇게 이론적인 측면에 대한 관심은 지적인 기반을 공유하면서 미술에서의 다양한 접근방식으로 발현되었지만,공통적인 상황주의 양식이 있었던 것은 아니다.
1960년대 중반에 이르면서 상황주의 작가들은 실제로 미술 작품을 제작하기보다는 이론적 저술이나 정치조직 활동에 치중했다.상황주의 사상은 1968년 5월 프랑스에서 총파업이 일어나는 데에 큰 영향을 주었고, 이 사건은 좌파 학생들의 주장을 구체화한 상황주의 포스터와 만화로 기록되었다. 
상황주의자 인터내셔널은 내부 불화로 인해 1972년에 해체되었으나, 1989년에는 파리의 퐁피두센터에서 <비교적 짧은 시간 동안 소수 사람들이 통과하는 길에서On the Passages of a Few People through a Rather Brief Moment in Time>라는 제목으로 대규모 상황주의 전시회가 개최되었다.
이 전시회는 미술 작품과 역사적인 증거물 등을 통해 상황주의라는 고도로 정치화된 운동을 조명하고자 시도함으로써 많은 논란을 불러 일으켰다. 상황주의는 영국의 펑크 아트의 발달에 중요한 영향을 주었고,개념 미술과 아르테 포베라에 영감을 제공했다. 
또한 광고의 시각적 언어를 전복시킨 크루거Barbara Kruger와 프린스Richard Prince 같은 포스트모더니즘 작가들의 전략을 예견하였다.
0 notes
junihyonga · 11 years
Video
vimeo
23 notes · View notes