문제
나는 내 처리 코드 중 일부를 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 ()의 첫 번째 명령이어야한다는 것을 반복하는 것을 기억합니다. 따라서 배경 () 호출을 내려가는 것이 도움이 될 수 있습니다. 어쨌든 다칠 수 없었습니다.