圣诞树2
来源:互联网 发布:倪妮牛仔裤知乎 编辑:程序博客网 时间:2024/04/28 23:51
#include<math.h>
#include<stdio.h>
#include<stdlib.h>
#define PI 3.14159265359
float sx,sy;
float sdCircle(float px,float py,float r)
{
float dx=px-sx,dy=py-sy;
return sqrtf(dx*dx+dy*dy)-r;
}
float opUnion(float d1,float d2)
{
return d1<d2?d1:d2;
}
#define T px+scale*r*cosf(theta),py+scale*r*sin(theta)
float f(float px,float py,float theta,float scale,int n)
{
float d=0.0f;
for(float r=0.0f;r<0.8f;r+=0.02f)
d=opUnion(d,sdCircle(T,0.05f*scale*(0.95f-r)));
if(n>0)
for(int t=-1;t<=1;t+=2)
{
float tt=theta+t*1.8f;
float ss=scale*0.9f;
for(float r=0.2df;r<0.8f;r+=0.1f)
{
d=opUnion(d,f(T,tt,ss*0.5f,n-1));
ss*=0.8f;
}
}
return d;
}
int ribbon()
{
float x=(fmodf(sy,0.1f)/0.1f-1.5f)*0.5f;
return sx>=x-0.05f&&sx<=x+0.05f;
}
int main(int argc,char* argv[])
{
int n=argc>1?atoi(argv[1]):3;
float zoom=argc>2?atof(argv[2]):1.0f;
for(sy=0.8f;sy>0.0f;sy-=0.02f/zoom,putchar('\n'))
for(sx=-0.35f;sx<0.35f;sx+=0.01f/zoom)
{
if(f(0,0,PI*0.5f,1.0f,n)<0.0f)
{
if(sy<0.1f)
putchar('.');
else{
if(ribbon())
putchar('=');
else putchar("............................#j&o"[rand()%32]);
}
}
else putchar(' ');
}
}
/*int main(int argc,char* argv[])
{
int n=argc>1?atoi(argv[1]):3;
for(sy=0.8f;sy>0.0f;sy-=0.02f,putchar('\n'))
for(sx=-0.35f;sx<0.35f;sx+=0.01f)
putchar(f(0,0,PI*0.5f,1.0f,n)<0?'*':' ');
getchar();
}*/
/*int main(int argc,char* argv[])
{
int n=argc>1?atoi(argv[1]):4;
for(int j=1;j<=n;j++)
{
int s=1<<j,k=(1<<n)-s,x;
for(int y=s-j;y>=0;j--,putchar('\n'))
{
for(x=0;x<y+k;x++)
printf(" ");
for(x=0;x+y<s;x++)
printf("%c ",'!'^y&x);
for(x=1;x+y<s;x++)
printf("%c ",'!'^y&(s-y-x-1));
}
}
}*/
#include<stdio.h>
#include<stdlib.h>
#define PI 3.14159265359
float sx,sy;
float sdCircle(float px,float py,float r)
{
float dx=px-sx,dy=py-sy;
return sqrtf(dx*dx+dy*dy)-r;
}
float opUnion(float d1,float d2)
{
return d1<d2?d1:d2;
}
#define T px+scale*r*cosf(theta),py+scale*r*sin(theta)
float f(float px,float py,float theta,float scale,int n)
{
float d=0.0f;
for(float r=0.0f;r<0.8f;r+=0.02f)
d=opUnion(d,sdCircle(T,0.05f*scale*(0.95f-r)));
if(n>0)
for(int t=-1;t<=1;t+=2)
{
float tt=theta+t*1.8f;
float ss=scale*0.9f;
for(float r=0.2df;r<0.8f;r+=0.1f)
{
d=opUnion(d,f(T,tt,ss*0.5f,n-1));
ss*=0.8f;
}
}
return d;
}
int ribbon()
{
float x=(fmodf(sy,0.1f)/0.1f-1.5f)*0.5f;
return sx>=x-0.05f&&sx<=x+0.05f;
}
int main(int argc,char* argv[])
{
int n=argc>1?atoi(argv[1]):3;
float zoom=argc>2?atof(argv[2]):1.0f;
for(sy=0.8f;sy>0.0f;sy-=0.02f/zoom,putchar('\n'))
for(sx=-0.35f;sx<0.35f;sx+=0.01f/zoom)
{
if(f(0,0,PI*0.5f,1.0f,n)<0.0f)
{
if(sy<0.1f)
putchar('.');
else{
if(ribbon())
putchar('=');
else putchar("............................#j&o"[rand()%32]);
}
}
else putchar(' ');
}
}
/*int main(int argc,char* argv[])
{
int n=argc>1?atoi(argv[1]):3;
for(sy=0.8f;sy>0.0f;sy-=0.02f,putchar('\n'))
for(sx=-0.35f;sx<0.35f;sx+=0.01f)
putchar(f(0,0,PI*0.5f,1.0f,n)<0?'*':' ');
getchar();
}*/
/*int main(int argc,char* argv[])
{
int n=argc>1?atoi(argv[1]):4;
for(int j=1;j<=n;j++)
{
int s=1<<j,k=(1<<n)-s,x;
for(int y=s-j;y>=0;j--,putchar('\n'))
{
for(x=0;x<y+k;x++)
printf(" ");
for(x=0;x+y<s;x++)
printf("%c ",'!'^y&x);
for(x=1;x+y<s;x++)
printf("%c ",'!'^y&(s-y-x-1));
}
}
}*/
0 0
- 圣诞树2
- 圣诞树成长历程(2)
- 圣诞树
- 圣诞树
- 圣诞树
- 圣诞树
- 打印圣诞树
- 【u228】圣诞树
- 为什么要查“圣诞树”
- 【搜索】【RQNOJ】圣诞树
- HTML5实现圣诞树效果
- 【最长路】圣诞树
- ZJUT 1153 圣诞树
- RQNOJ 172 圣诞树
- 【DFS】rqnoj P172 圣诞树
- 仿真树:仿真圣诞树
- HTML&CSS--圣诞树
- PID172 / 圣诞树(RQNOJ)
- centos下的samba环境详细介绍
- Android api23、api24 抛弃了httpClient,那么还想使用HttpClient怎么办?
- PHP正则贪婪/懒惰匹配模式
- Docker的安装配置及使用详解
- Spoon技术应用于UiAutomator自动化测试
- 圣诞树2
- 命令行运行PHP以及解决 Deprecated: Comments starting with '#' are deprecated
- JQuery控制页面显示与隐藏
- TCP通信多线程网络聊天程序
- 使用Gson解析两种复杂的json数据
- PAT之成绩排名(B)
- HDU5876 Sparse Graph 补图的最短路
- 微软黑科技背后的技术路径 | 极客公园超频之旅
- 搜索二叉树转换为双向链表