문제

나는 내 처리 코드 중 일부를 NetBeans의 일반 Java로 포팅하기 위해 노력하고 있습니다. 지금까지, 대부분의 모든 것은 비 그레이 스케일 색상을 사용할 때를 제외하고는 모두 훌륭합니다.

나선형 패턴을 그리는 스크립트가 있으며 모듈러스 검사를 기반으로 나선형의 색상을 변경해야합니다. 그러나 대본은 매달려있는 것처럼 보이며 왜 그런지 설명 할 수 없습니다.

누군가가 처리와 Java에 대한 경험이 있고, 내 실수가 어디에 있는지 말해 줄 수 있다면 정말 알고 싶습니다.

Peer-Review를 위해 여기 내 작은 프로그램이 있습니다.

package spirals;
import processing.core.*;

public class Main extends PApplet
{
    float x, y;
    int i = 1, dia = 1;

    float angle = 0.0f, orbit = 0f;
    float speed = 0.05f;

    //color palette
    int gray = 0x0444444;
    int blue = 0x07cb5f7;
    int pink = 0x0f77cb5;
    int green = 0x0b5f77c;

    public Main(){}

    public static void main( String[] args )
    {
        PApplet.main( new String[] { "spirals.Main" } );
    }

    public void setup()
    {
        background( gray );
        size( 400, 400 );
        noStroke();
        smooth();
    }

    public void draw()
    {
        if( i % 11 == 0 )
            fill( green );
        else if( i % 13 == 0 )
            fill( blue );
        else if( i % 17 == 0 )
            fill( pink );
        else
            fill( gray );

        orbit += 0.1f; //ever so slightly increase the orbit
        angle += speed % ( width * height );

        float sinval = sin( angle );
        float cosval = cos( angle );

        //calculate the (x, y) to produce an orbit
        x = ( width / 2 ) + ( cosval * orbit );
        y = ( height / 2 ) + ( sinval * orbit );

        dia %= 11; //keep the diameter within bounds.
        ellipse( x, y, dia, dia );
        dia++;
        i++;
    }
}
도움이 되었습니까?

해결책

디버깅 문 (System.out.println)을 추가하고 Java 콘솔을보고있는 것을 고려 했습니까?

엄청난 양의 출력과 결정적인 둔화가있을 수 있지만, 아무 일도 일어나지 않을 때 어떤 일이 일어나는지 볼 수 있습니다.

내가 생각하는 것은 논리 오류는 채우기 if 문입니다. 모든 반복은 반복의 색상을 결정하고 그 색상으로 채 웁니다. i == 11, 13 또는 17의 반복 만 색상으로 채워집니다. 그리고 다음 반복은 그 색으로 회색으로 덮어 씁니다. 나는 그것이 깜박 거리는 경향이 있다고 생각합니다.

당신은 같은 것을 원하지 않았습니다

public class Main extends PApplet
{
  ...

  int currentColor = gray;

  public Main(){}

  ...

  public void draw()
    {
        if( i % 11 == 0 )
           currentColor = green;
        else if( i % 13 == 0 )
           currentColor = blue;
        else if( i % 17 == 0 )
           currentColor = pink;
        else {
           // Use current color
        } 

        fill(currentColor);

        ...
}

이런 식으로 회색으로 시작하고 녹색, 파란색, 분홍색, 녹색, 파란색, 분홍색으로 이동하십시오.

  else if ( i % 19 ) {
    currentColor = gray;
  }

도움이 되었기를 바랍니다.

다른 팁

모든 도움을 주셔서 감사합니다. 그러나 나는 내 최종 목표가 약간 잘못 해석되고 있다고 생각합니다.

다음은 처리 PDE를 사용하여 생성 한 이미지입니다.

http://www.deviantart.com/download/97026288/spiral_render_5_by_ishkur88.png

내 원하는 출력은 나선형의 채색과 일반적인 모양이 다르며, 그와 비슷해 보이는 경향이 있습니다.

이전 포스터에서 언급했듯이 : 11, 13, 17 번째 반복마다 회색이 아닌 색상을 사용하고 있습니다.

이것을 지적 해 주셔서 감사합니다. 그러나 나는 이미 알고 있습니다! 나는 실제로 그것을 그렇게 설계했다!

그 이유는 회색 기본값이 없다면 출력이 미친 듯이 혼란스러워하고 눈에 매우 불쾌하게되기 때문입니다 (적어도 내 눈).

그 원을 완전히 렌더링하는 방법이 있다면, 나는 확실히 더 좋아할 것입니다.

여기에서 무슨 일이 일어나고 있는지 확인하십시오

stroke(255);

무승부의 시작 부분에. 원하는 모든 원이 그리거나 색상이없는 것을 볼 수 있습니다. 이전 포스터에서 언급했듯이 : 11, 13, 17 번째 반복마다 회색이 아닌 색상을 사용하고 있습니다.

귀하의 색상 값이 여기서 주요 문제라고 생각합니다. 참조 페이지에서와 같이

기술적 인 관점에서, 색상은 aaaaaaaaarararggggggggggggggggggggggggggggggggggggggggggbbbbbbb로 주문 된 32 비트의 정보이며, 여기서 a는 알파 값을 포함하고, r은 빨간색/색조 값, g는 녹색/채도이며, b는 파란색/밝기입니다.

값을 보면 알파 값이 매우 낮아 배경과 구별하기가 불가능할 수 있습니다.

여전히 문제가 있는지 확실하지 않습니다. 당신은 교수형을 언급합니다. 그것은 어둠 속에서 샷이지만, 나는 그 크기 () 호출이 setup ()의 첫 번째 명령이어야한다는 것을 반복하는 것을 기억합니다. 따라서 배경 () 호출을 내려가는 것이 도움이 될 수 있습니다. 어쨌든 다칠 수 없었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top