2017-11-22 5 views
0

반대 방향으로 움직이는 선 (마우스 뒤를 따르는)으로 채워진 동심원을 만들려고합니다. 선으로 만 채우는 방법을 알아낼 수 없습니다. 선을 만들기 위해 for-loop를 사용했고, 원의 반경을 벗어나 자르고 싶습니다. 기본적으로, 선의 패턴으로 원을 채우려고합니다.for-loop 패턴을 셰이프 안에 머무르게하려면 어떻게합니까? 기본적으로 색상 대신에 패턴으로 도형을 채울 수 있습니까?

float r = 0; 

float startAngle; 

float density; 

float radius; 

void setup() { 

    size(500, 500); 

    background(255); 

    stroke(150, 0, 150); 

} 

void draw() { 

    int[] s = { 

    500, 325, 200, 100, 50, 25 

    }; 

    for (int i = 0; i < 500; i = i+5) { 

    line(0, i, 500, i); 

    if(i > s[0]) { 

     noStroke(); 

    } 

    } 

    translate(width/2, height/2); 

    rotate(r); 

    r = r + .01; 

    fill(0); 

    ellipse(0, 0, s[0], s[0]); 

    fill(50); 

    ellipse(0, 0, s[1], s[1]); 

    fill(100); 

    ellipse(0, 0, s[2], s[2]); 

    fill(150); 

    ellipse(0, 0, s[3], s[3]); 

    fill(200); 

    ellipse(0, 0, s[4], s[4]); 

    fill(255); 

    ellipse(0, 0, s[5], s[5]); 

} 

이 어떤 도움을 주시면 감사하겠습니다 :

이 내 코드입니다!

답변

1

일반적인 "어떻게해야합니까?"라는 질문에 답하기가 어렵습니다. 스택 오버플로는 "X를 시도했는데 Y가 예상되었지만 Z가 대신 입력되었습니다"라는보다 구체적인 질문을 위해 설계되었습니다. 그러나 나는 일반적인 의미로 돕기 위해 노력할 것입니다.

내가 줄 수있는 가장 좋은 조언은 작게 시작하는 것입니다. Break your problem down into smaller pieces 한 번에 하나씩 가져 가십시오.

예를 들어, 여러 개의 원을 표시하는 전체 프로그램으로 시작하는 대신 하나의 원만 표시하는 간단한 예제 프로그램으로 시작하는 것이 어떻습니까? 그 안에 표시 할 패턴을 얻으십시오.

프로그래밍의 모든 것과 마찬가지로 여러 가지 방법이 있습니다.

옵션 1 : 기본 지오메트리 및 트라이 그램을 사용하여 점이 원 위에 있어야하는 위치를 파악한 다음 해당 점을 기준으로 그릴 수 있습니다. cos()sin() 함수는이 방법을 사용하면 편리 할 것입니다.

옵션 2 : 이미지 마스킹 기술을 사용할 수도 있습니다. 예를 들어, 선의 질감을 만든 다음 원형 마스크를 사용하여 선의 곡선을 분리 할 수 ​​있습니다. texture() 함수 또는 PImage#mask() 함수는 여기에 친구가 될 것입니다.

당신이 가장 좋아하는 방법을 시도해보십시오. The Processing reference은 가장 친한 친구입니다. 예를 들어, heretexture() 함수에 대한 참조이고 herePImage#mask() 함수에 대한 참조입니다. 특정 단계를 고수하면 그 단계의 MCVE을 게시 할 수 있습니다. 행운을 빕니다.

관련 문제