《代码本色》习作实例编程

这篇博客详细介绍了《代码本色》中的编程实践,包括随机游走类的概率分布实现,加速度与Perlin噪声的应用,风力模拟与噪声添加,任意振幅和周期动波的生成,以及粒子系统的破碎效果模拟。通过实例代码展示了如何实现这些功能,涉及鼠标交互、噪声映射、浮力模拟和动态波形等概念。
摘要由CSDN通过智能技术生成

《代码本色》习作实例编程

一、第0章:随机游走类的概率分布

概况:参考0.1-0.3的示例,并结合练习0.1,练习0.3的要求,实现的可设定向鼠标移动或向屏幕右下移动趋势的Walker类。
实现:根据0.3节的内容,我们可以使用random(1)生成范围为(0,1)的浮点数r,然后通过判断其大小,来实现根据概率确定Walker类的移动趋势。
然后,我要确定我算法的基本流程,我想通过判断鼠标是否移动(或者说移动距离的多少=n)判断Walker的移动趋势是向鼠标移动还是向屏幕右下,然后再使用概率确定是否根据趋势移动,最终我通过改写step方法实现了所有功能,整体代码如下:

    //if !mouse move out n point moveto downROright
 void step(int n,float mouseRate,float unmouseRate){
       
 if(mouseX-pmouseX>n||mouseY-pmouseY>n){
   
   float r=random(1);
   if(r<mouseRate){
   
     if(mouseX-x==0||mouseY-y==0)return;
     x+=(mouseX-x)/abs(mouseX-x);
     y+=(mouseY-y)/abs(mouseY-y);
   }
   else{
     x+=random(-1,1);
     y+=random(-1,1);
   }}
 else{
   
     float r=random(1);
     if(r<unmouseRate){
   
       x+=1;
       y+=1;
     }
     else{
     x+=random(-1,1);
     y+=random(-1,1);
     }
   }
 }//step

参数解释:
N——鼠标移动距离大小,如果为0,则表示鼠标移动则Walker移动趋势为跟随鼠标;
MouseRate——Walker跟随鼠标移动的概率
UnmouseRate——Walker向屏幕右下移动的趋势
执行函数与执行结果:

//main
Walker w;
void setup(){
   
  size(640,360);
  w=new Walker();
  background(0);}
void draw(){
   
  w.step(0,0.5,0.5);
  w.
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值