2013-11-25 2 views
0

나는 직선이있는 xy 플롯을 가지고 있습니다. mouseX 및 mouseY 값을 사용하여 선을 드래그 할 수 있지만 커브에 대해이 작업을 수행하려고합니다.가공에서 커브를 끌는 방법

먼저 점에 대한 좌표 만있는 경우 어떻게 곡선을 만들고 어떻게 끌 수 있습니까?

+0

어떤 프레임 워크인가? – MadProgrammer

+0

http://processing.org/ Java를 기반으로 한 처리 – gizgok

+2

http://processing.org/tutorials/curves/ –

답변

1

@Petros에 의해 언급 된 첫 번째 읽기 링크 다음 제어 포인트에 대한 좌표를 계산하여 줄에 놓아야합니다. 그런 다음 드래그 포인트에 대한 마우스 이벤트를 구현해야합니다. 이 기본 예에서 영감을 얻을 수 있습니다.

float[] p = { 50, 100, 80, 100, 150, 100, 180, 100 }; 
int point = 0; 

boolean locked = false; 

void setup() { 
    size(300, 200); 
    smooth();  
} 

void draw() { 
    background(255); 

    stroke(0); 
    noFill(); 
    //Here you can just change from bazier to spline curve 
    //curve(p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7]); 
    bezier(p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7]); 

    noStroke(); 
    fill(255, 0, 0); 
    ellipse(p[0], p[1], 3, 3); 
    ellipse(p[6], p[7], 3, 3); 
    fill(0, 0, 255, 192); 
    ellipse(p[2], p[3], 3, 3); 
    ellipse(p[4], p[5], 3, 3); 


} 

void mousePressed() { 
    if(overPoint(mouseX, mouseY)) { 
    locked = true; 
    } else { 
    locked = false; 
    } 
} 

void mouseDragged() { 
    if(locked) { 
    p[point] = mouseX; 
    p[point+1] = mouseY; 
    } 
} 

void mouseReleased() { 
    locked = false; 
} 

boolean overPoint(float x, float y){ 
    for(point = 0; point < 7; point += 2){ 
    if(p[point] + 2 > x && p[point] - 2 < x){ 
     if(p[point+1] + 2 > y && p[point+1] - 2 < y){   
     return true; 
     } 
    } 
    } 
    return false; 
}