processing으로 깨끗한 방정식을 시각화
1636 단어 processing
세상에는 다양한 수식이 존재하고 그 중 하나에 Clifford Attractor라는 것이 있습니다
xn+1 = sin(a yn) + c cos(a xn)
yn+1 = sin(b xn) + d cos(b yn)
매우 간단하지만 계산을 반복하면 매우 깨끗한 수식입니다.
넷등에서 sourcecode가 있는지 조사해 보았습니다만 되어 있었으므로(만약 있으면 있으면 죄송합니다...)
식을 해석하고 썼습니다. 독학이므로이 해석이 정답인지는 모릅니다.
clifford_attractor.pde
int count=40000;
float x=1;
float y=1;
float z=1;
float a=1.4;
float b=1.6;
float c=1;
float d=1.7;
float xn;
float yn;
float zn;
float rotate_x;
float rotate_y;
float [][] points=new float[3][count];
void setup(){
size(750,400,P3D);
//xn+1= sin(a*yn)-c*cos(a*xn)
//yn+1= sin(b*xn)-d*cos(d*yn)
//zn+1= sin(xn)
for(int i=0;i<count;i++){
xn= sin(a*y)-c*cos(a*x);
yn= sin(b*x)-d*cos(d*y);
zn= sin(x);
x=xn;
y=yn;
z=zn;
points[0][i]=x*100;
points[1][i]=y*50;
points[2][i]=z*100;
}
}
void draw(){
background(#000000);
fill(#FFFFFF);
translate(width/2,height/2);
rotateX(rotate_x);
rotateY(rotate_y);
for(int i=0;i<count;i++){
pushMatrix();
beginShape(POINTS);
vertex(points[0][i],points[1][i],points[2][i]);
endShape();
stroke(#FFFFFF);
popMatrix();
}
rotate_x+=0.03;
rotate_y+=0.03;
}
덧붙여서 Z 좌표의 식 zn=sin(x)는 깊이를 내고 싶었기 때문에 제가 적당히 쓴 것입니다
100 줄이 없으므로 복사하여 사용하십시오.
PVector 클래스나 셰이더 등 사용해 애니메이션 시키면 재미있을지도 네요~.
참고 사이트
h tp : // 파우 l 보우 r 케. 네 t / f 등 c ls / c ぃふぉ rd /
Reference
이 문제에 관하여(processing으로 깨끗한 방정식을 시각화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kenji_5884/items/32d4512bab119c6c1188텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)