【创意编程】弹簧震荡

不知道这一章写什么。前面的写累了,这个没有心思想了,就写一个简单的弹簧和小球的模拟吧。结果是这样的:它的实现也非常清晰可见。把小球和弹簧分别考虑,小球的运动按照速度、加速度的不同其实可以分为四个阶段:自由下落阶段、接触到弹簧之后受到弹力而减速的阶段、速度减为零之后...
摘要由CSDN通过智能技术生成

不知道这一章写什么。
前面的写累了,这个没有心思想了,就写一个简单的弹簧和小球的模拟吧。
结果是这样的:
在这里插入图片描述
它的实现也非常清晰可见。把小球和弹簧分别考虑,小球的运动按照速度、加速度的不同其实可以分为四个阶段:自由下落阶段、接触到弹簧之后受到弹力而减速的阶段、速度减为零之后受到弹簧向上的弹力加速上升的阶段、离开弹簧之后的减速运动。
在这里插入图片描述
我们先什么都不要管,定义一个小球和一个弹簧:
由于我们要求弹簧是可以压缩的,显然我们每一帧重新绘制它是不现实的。我们需要把弹簧首先做成一个固定的、可以调整高度的形状。我们使用PShape类。我们将仅仅通过一个可变的长度lenght的值来构造一个弹簧。由于我们弹簧的高度是不停地变化的,所以这样做是必要的,能够允许我们在弹簧长度变化的时候仅向一个弹簧绘图函数传入一个长度作为参数来生成一个我们需要的弹簧。

PShape spring;

构造弹簧:

void drawSpring(PVector position, int springLength){
   
  stroke(0);
  strokeWeight(2);
  noFill();
  
  pushMatrix();
  translate(position.x, position.y);
  beginShape();
  vertex(-25,0);
  vertex(25,0);
  vertex(-25,-1*springLength/10);
  vertex(25,-2*springLength/10);
  vertex(-25,-3*springLength/10);
  vertex(25,-4*springLength/10);
  vertex(-25,-5*springLength/10);
  vertex(25,-6*springLength/10);
  vertex(-25,-7*springLength/10);
  vertex(25,-8*springLength/10);
  vertex(-25,-9*springLength/10);
  vertex
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值