mPEC Forum

ถามโจทย์ปัญหา => ถามปัญหาคณิตศาสตร์ => Topic started by: FogRit on December 27, 2010, 02:05:38 PM



Title: Barnsley_fern
Post by: FogRit on December 27, 2010, 02:05:38 PM
เร็วๆ นี้ผมลองทำเพิ่มอีกดูๆ ไปแล้วเหมือนใบมันผอมไปหน่อยครับ
ใครเคยทำแล้วใบมันผอมๆ บ้างไหมครับ ?


http://en.wikipedia.org/wiki/Barnsley_fern
Code:
int main()
{ double a,b,c,d,e,f,x=0,y=0,p;
int i,n=100000;
long seed = 1;
for(i=0;i<n;i++){
p = ran2(&seed);
if(p<0.01){ //f1
a = b = c = e = f = 0;
d = 0.16;
}
else if((0.01<=p)&&(p<=0.08)){ //f3
a = 0.2; b = -0.26; c = 0.23;
d = 0.22; e = 0 ; f = 1.6;
}
else if((0.08<=p)&&(p<=0.15)){ //f4
a = -0.15; b = 0.28; c = 0.26;
d = 0.24; e = 0 ; f = 0.44;
}
else if(0.15<p){ //f2
a = 0.85; b = 0.04; c = -0.04;
d = 0.85; e = 0   ; f = 1.6;
}
x = a*x + b*y + e;
y = c*x + d*y + f;
printf("%f\t%f\n",x,y);
}
return 0;
}


Title: Re: Barnsley_fern
Post by: psaipetc on December 27, 2010, 10:56:07 PM
ผมว่าแกน x มันคนละสเกลกับแกน y เลยทำให้ใบดูผอมไปหรือเปล่าครับ


Title: Re: Barnsley_fern
Post by: FogRit on December 28, 2010, 03:33:21 PM

ขอบคุณสำหรับคำแนะนำครับอ.พงศกร
แก้ได้แล้วครับ ศึกษาจาก source code คนอื่น ปรากฏว่าเป็นปัญหาทางเทคนิคการเขียนโปรแกรมครับ
ผมต้องทำตัวแปรเพิ่มคือ
Code:
newx = a*x + b*y + e;
newy = c*x + d*y + f;
x = newx;
     y = newy;

เข้าไปด้วยครับ
Code:
if(p<0.01){ //f1
a = b = c = e = f = 0;
d = 0.16;
newx = a*x + b*y + e;
newy = c*x + d*y + f;
x = newx;
     y = newy;

}
else if((0.01<=p)&&(p<=0.08)){ //f3
a = 0.2; b = -0.26; c = 0.23;
d = 0.22; e = 0 ; f = 1.6;
newx = a*x + b*y + e;
newy = c*x + d*y + f;
x = newx;
     y = newy;
}
else if((0.08<=p)&&(p<=0.15)){ //f4
a = -0.15; b = 0.28; c = 0.26;
d = 0.24; e = 0 ; f = 0.44;
newx = a*x + b*y + e;
newy = c*x + d*y + f;
x = newx;
     y = newy;
}
else if(0.15<p){ //f2
a = 0.85; b = 0.04; c = -0.04;
d = 0.85; e = 0  ; f = 1.6;
newx = a*x + b*y + e;
newy = c*x + d*y + f;
x = newx;
     y = newy;
}
printf("%f\t%f\n",x,y);
}


Title: Re: Barnsley_fern
Post by: psaipetc on December 28, 2010, 07:04:00 PM
เฟิร์นดูอ้วนแล้วครับ   :)


Title: Re: Barnsley_fern
Post by: FogRit on December 28, 2010, 08:24:20 PM
 ;D