Skip to content

Make Processing

조회 수 7417 추천 수 0 댓글 5
Atachment
첨부파일 '1'
?

단축키

Prev이전 문서

Next다음 문서

+ - Up Down Comment Print
?

단축키

Prev이전 문서

Next다음 문서

+ - Up Down Comment Print

이재중 선생님, 잘 지내고 계시나요?

전 만리타국에서 영어로 프로세싱 수업 들으려니까 진짜 미춰버릴 것 같아요...

선생님께서 해주신 수업 너무 재밌게 잘 들었는데, 여기오니까 재미가 확 반감되네요.

정말 거의 반쯤 울면서 과제 하다가 도저히 모르겠어서 여기에 질문 드려요. ㅜㅜ 


아래는 보로노이 다이어그램을 시각화 시킨 코드인데요, 점이 랜덤으로 찍히고 그걸 기준으로 선이 그려지게 되어 있어요. 

저는 지금 그걸 csv 파일에 있는 데이터 1, 2열에 있는 수를 array로 불러와서 그 수치 대로 x,y 점이 찍히고 그걸 기준으로 보로노이 라인이 그려지게 하고 싶은데요. 어떤 부분을 고쳐야 제가 원하는 결과를 얻을 수 있을까요? 


// MeshLibDemo.pde - Demo of Lee Byron's Mesh library for

// calculating and drawing Voronoi, Delaunay and Convex Hull 

// diagrams. 


// Uses a set of random points to calculate all 

// three diagrams, with one point responding to the mouse

// position. Press space to reset points, press '1', '2' and 

// '3' to toggle display of the different diagrams.

// 

// The library is included in this sketch, see the "libraries"

// subfolder See http://leebyron.com/else/mesh/ for more

// information about the library.

//

// Marius Watz - http://workshop.evolutionzone.com/


import megamu.mesh.*;


Voronoi myVoronoi;

Delaunay myDelaunay;

Hull myHull;


float[][] points;

float[][] myEdges;

MPolygon myRegions[],myHullRegion;

int col[];


float startX,startY,endX,endY;

float[][] regionCoordinates;


boolean showVoronoi=true;

boolean showDelaunay=false;

boolean showHull=false;


void setup() {

  size(500,250);

  

  // initialize points and calculate diagrams

  initMesh();

  smooth();

}


void draw() {

  background(200);

  if(myRegions==null) return;


  // draw Voronoi

  if(showVoronoi) {

    strokeWeight(1);

    stroke(0);

    for(int i=0; i<myRegions.length; i++) {

      fill(col[i]); // use random color for each region

      regionCoordinates = myRegions[i].getCoords();

      myRegions[i].draw(this); // draw this shape

    }

  }

  

  // draw Voronoi as lines

  if(showDelaunay) {

    strokeWeight(2);

    stroke(255,0,0);

    for(int i=0; i<myEdges.length; i++) {

      startX = myEdges[i][0];

      startY = myEdges[i][1];

      endX = myEdges[i][2];

      endY = myEdges[i][3];

      line(startX, startY, endX, endY);

    }

  }

  

  // draw Hull in semi-transparent yellow

  if(showHull) {

    strokeWeight(1);

    stroke(0);

    fill(255,255,0, 150);

    myHullRegion.draw(this);

  }

}


void initMesh() {

  // is points array is null then initialize it

  if(points==null) initPoints();

  

  // save the current number of regions, so that

  // we can check if it's the same after the Voronoi

  // has been recalculated.

  int oldlength=0;

  if(myRegions!=null) oldlength=myRegions.length;


  myVoronoi = new Voronoi( points );

  myHull = new Hull( points );

  myDelaunay = new Delaunay( points );


  myRegions = myVoronoi.getRegions();

  myHullRegion = myHull.getRegion();

  myEdges = myDelaunay.getEdges();


  // if the number of regions is different than

  // before then recalculate the random colors

  if(oldlength!=myRegions.length) {

    col=new int[myRegions.length];

    for(int i=0; i<myRegions.length; i++) {

      float prob=random(100);

      if(prob>60) col[i]=color(random(30,100));    

      else col[i]=color(random(200,255));   

    }

//    col[0]=color(255,0,0);

  }

}


void initPoints() {

    points = new float[(int)random(5,30)][2];


  for(int i=0; i<points.length; i++) {

    points[i][0] = random(width); // first point, x

    points[i][1] = random(height); // first point, y

  }


}


  • profile
    너무 개인 적인 내용으로 올린것 같아서 보로노이드에 대한 설명 링크합니다.
    다른 분들도 한번 보세요~~

    http://tnmeschool.com/40167826908

    --------------------------------------------------------------------------

    지원씨...미국에서 잘(?)지내고시 있으시군요..^^;;
    완전 공대 감성 느낌이 나는 군요~~
    csv 파일은 loadString 으로 값을 받아 올수 있고요~ 소스 코드는 크게 수정하는것 없이 포인트를 생성해주는 부분만 수정하면 될것 같습니다.

    void initPoints()
    {
        points = new float[(int)random(5,30)][2];  // 생성되는 점의 개수
        for(int i=0; i<points.length; i++)
       {
           points[i][0] = random(width); // first point, x   // 가로 점의 위치(랜덤으로 생성)
           points[i][1] = random(height); // first point, y  // 세로 점의 위치(랜덤으로 생성)
        }
    }

    이부분에서 생성되는 점의 개수를 csv 파일의 전체 길이 값을 구해오면 되고요.
    그 데이터중에서 2열과 3일의 데이터를 받아 들이면 됩니다.

    소스 코드는

    void initPoints()
    {
      String [] lines = loadStrings("data3.csv");   // csv 파일로드
      points = new float[lines.length-1][2];   // -1은 데이터 없는 상단의 타이틀 셀을 빼기 위해
      for (int i=1; i<points.length; i++)
      {
        String[] pieces = split(lines[i], ',');     // csv의 각 셀은 쉼표','로 구분 됩니다.
        points[i-1][0] = int(pieces[1]); // first point, x  // 쉼표로 구분돈 배열값을 넣어 줍니다.
        points[i-1][1] = int(pieces[2]); // first point, y
      }
    }


    print 문으로 각 단계의 값을 출력해 보시면 이해가 될 겁니다.

    글로 적는데는 한계가 있는것 같네요...^^

    참고로 좌표가 지금 스케치 사이즈보다 크기 때문에.

    스케치 크기를 size(600, 600)으로 조정해 주세요~~

     화이팅!!!


    결과이미지는 아래와 같네요.ㅋ

    screenshot_216.png
  • ?
    마리오 2013.09.29 21:24

    보로노이 굉장히 흥미로운 부분이네요ㅎㅎ
    좋은 정보 감사합니다~
    그리고 죄송하지만 Voronoi 클래스부분 소스도 볼 수 있을까요?

  • profile
    smileblue 2013.09.30 02:14
    별도의 클래스는 없고 라이블러리 입니다.^^ 고마우신 분들이 만들어주셨죠..^^ 링크겁니다..
    http://leebyron.com/else/mesh/
    여기서 다운받아서 설치하시고 해보시면 될거예요~~
  • ?
    마리오 2013.09.30 09:46

    라이브러리 다운받아서 임포트했는데 안되네융 ㅠ

    영어를 못해서리.. 오늘은 이 문제해결을 목표로 공부하겟습니다ㅎㅎ

  • profile
    음..압축 풀면 나오는  mesh  폴더 자체를 도큐멘트 > processing > libraries 에 넣어주시고 프로세싱 다시 시작하시면 됩니다.~~
    이미지 첨부합니다.~

    screenshot_217 copy.png

Q&A

질문하는 공간입니다. 회원이면 누구나 질문/답변 할 수 있습니다.

List of Articles
번호 제목 글쓴이 날짜 조회 수
300 Video 관련 하여 질문드립니다. 2 s8848m 2013.09.06 17451
299 Max/Msp 에서 OSC externals 파일들을 넣는 곳이 어딘지 궁금해서 질문드립니다. 1 file beautyfullcastle 2013.08.30 17121
298 아두이노 관련 질문드립니다. 7 망고 2013.10.09 10791
297 프로세싱 폰트관련 질문입니다. 1 방보람 2012.06.01 9628
296 프로세싱 캠에 대해 문의좀 해보려구요 ,, 4 조아진 2012.06.04 9620
295 감사합니다 ㅎ 3 방보람 2012.06.03 9292
294 프로세싱문의요 1 file 조아진 2012.06.04 8964
293 움직이는 오브제를 정지시키고 프린터로 출력.. 1 오후세시 2011.10.26 8565
292 프로세싱 시리얼통신에 관련하여 질문드립니다^^ 3 file songyun114 2013.06.12 8293
291 필터 이미지를 넣는 부분에서 문제가 . 4 file 조아진 2012.06.06 8278
290 키넥트 관련 질문드립니다 4 songyun114 2013.07.15 8117
289 processing 외부 txt 파일 한글 깨짐문제 1 biclen 2013.07.27 7886
288 사용자가 직접 타이핑 하기. 3 오후세시 2011.10.15 7711
287 processing과 vvvv 2 맨땅 2013.10.05 7579
286 다시올립니다 급해요 ㅜ 1 file 조아진 2012.10.12 7435
» 이재중 선생님께 질무운~ 5 file 망고 2013.09.27 7417
284 [질문] 프로세싱 2.0 b8에서 스탠드 얼론의 형태로 어플리케이션 생성시 오류가 납니다. 2 file soundnscape 2013.04.28 7147
283 한 번 더 질문 드릴게요 4 file 유구르트 2012.12.20 7005
282 이재중 선생님께, 프로세싱 워크샵 질문~ 2 file 망고 2013.06.18 6708
281 안녕하세요 :) 3 yuriri 2012.06.14 6637
Board Pagination ‹ Prev 1 2 3 4 5 6 7 8 9 10 ... 15 Next ›
/ 15

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소

Designed by sketchbooks.co.kr / sketchbook5 board skin

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Copyright (c) 2012 Make Processing. All Right Reserved.

smileblue

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소