|

楼主 |
发表于 2024-9-4 19:40:22
|
显示全部楼层
以下内容放在主函数
for (float x = 0; x < 0.5; x += 0.17)
{
for (float y = -1; y < 1; y += 0.1)
{
Julia(x, y);
}
}
以下是子函数
void Julia(float real_c, float img_c)
{
float comp_real, comp_img;
float c_real, c_img;
u8 flag;
printf("cls BLACK\xff\xff\xff");
for (u32 i = 0; i < 200*200; i++)
{
//初始数值生成
flag = 1;
float comp_real = (i % 200) / 100.0 - 1.0;
float comp_img = (i / 200) / 100.0 - 1.0;
//计算不动点
float real = comp_real, img = comp_img;
float img_, real_;
for (u32 n = 0; n < 20; n++)
{
//Z = Z*Z + C
//C = 0.4 + c * 1j
real_ = 0;
real_ += real * real;
real_ -= img * img;
real_ += real_c;
img_ = 0;
img_ += 2 * real * img;
img_ += img_c;
img = img_;
real = real_;
//|Z|>1 抛弃该点
if(img_ * img_ + real_ * real_ > 1.0)
{
flag = 0;
break;
}
}
//Julia集绘制
if (flag)
{
u32 x = comp_real * 100 + 120;
u32 y = comp_img * 100 + 160;
printf("line %d,%d,%d,%d,%d\xff\xff\xff", x, y, x, y, 255);
}
}
} |
|