代码本色 结合牛顿力学

目录
序章 随机游走
第一章 向量
第二章 力
第三章 震荡
第四章 粒子系统
序章 随机游走
1.借以回顾本书的中心编程思想——面向对象编程。我们要用面向对象方法来模拟物体在 Processing窗口的运动,随机游走模型就是这个例子的模板。
2.随机游走模型引入了贯穿本书的两个关键问题:如何定义对象的行为规则,以及如何用 Processing模拟这些行为规则。
3.在本书中,我们需要对随机性、概率和Perlin噪声有基本的了解,随机游走模型展示了 其中的关键点,这在我们以后的学习中会很有用。
Perlin噪声
Perlin噪声算法表现出了一定的自然性,因为它能生成符合自然排序(“平滑”)的伪随机 数序列。图I-5展示了Perlin噪声的效果,x轴代表时间;请注意曲线的平滑性。
调整由Perlin噪声功能产生的细节的特征和水平。 类似于物理学中的谐波,噪声是在几个八度计算的。 较低的八度对输出信号贡献更大,因此定义噪声的过强度,而较高的八度将噪声序列中的细节细化。
默认情况下,噪声计算超过4个八度音阶,每个八度音阶的贡献与其前身的比例相差一倍,从第一个八度音阶的50%强度开始。 可以通过添加附加的功能参数来改变该衰减量。
通过改变这些参数,由noise()函数创建的信号可以适应非常特定的需求和特性。在这里插入图片描述


```java
float noiseVal;
float noiseScale=0.02;

void draw() {
for (int y = 0; y < height; y++) {
for (int x = 0; x < width/2; x++) {
noiseDetail(3,0.5);
noiseVal = noise((mouseX+x) * noiseScale, (mouseY+y) * noiseScale);
stroke(noiseVal*255);
point(x,y);
noiseDetail(8,0.65);
noiseVal = noise((mouseX + x + width/2) * noiseScale,
(mouseY + y) * noiseScale);
stroke(noiseVal * 255);
point(x + width/2, y);
}
}
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200104181842684.gif)
**第一章向量**

小球向鼠标方向移动
我们可以将其看成两个不同方向单位矢量的合成
)
```java
class Mover {    
  // The Mover tracks position, velocity, and acceleration  
PVector position;  
PVector velocity; 
PVector acceleration;    // The Mover's maximum speed
float topspeed;   
Mover() {   
                    // Start in the center   
position = new PVector(width/2,height/2);   
velocity = new PVector(0,0);      
topspeed = 5;    
}      
void update() {            
// Compute a vector that points from position to mouse      
PVector mouse = new PVector(mouseX,mouseY);      
PVector acceleration = PVector.sub(mouse,position);      // Set magnitude of acceleration      
acceleration.setMag(0.2);            // Velocity changes according to acceleration      
velocity.add(acceleration);      // Limit the velocity by topspeed      
velocity.limit(topspeed);      // position changes by velocity      
position.add(velocity);   
 }      
 void display() {      
 stroke(0);      
 strokeWeight(2);      
 fill(127);      
 ellipse(position.x,position.y,48,48);    
 }    
 } 




Mover mover;    
void setup() {    
size(640,360);   
 mover = new Mover();   
 }    
 void draw() {    
 background(255);        // Update the position    
 mover.update();    // Display the Mover    
 mover.display();   
 } 
 

第二章 力
在这里插入图片描述
嗯“s”重启
1.小球
生成一组小球,自由落体后进入水面,在出水面,最后模仿进出过程更好的体现在液体中的阻力,主要运用了牛顿定律中的自由落体的公式`

class Mover {
   
  // position, velocity, and acceleration 
  PVector position;
  PVector velocity;
  PVector acceleration;

  // Mass is tied to size
  float mass;

  Mover(float m, float x, float y) {
   
    mass = m;
    position = new PVector(x, y);
    velocity = new PVector(0, 0);
    acceleration = new PVector(0, 0);
  }

  void applyForce(PVector force) {
   
    // Divide by mass 
    PVector f = PVector.div(force, mass);
    // Accumulate all forces in acceleration
    acceleration.add(f);
  }

  void update() {
   
    // Velocity changes according to acceleration
    velocity.add(acceleration);   
    // position changes by velocity
    position.add(velocity);
    // We must clear acceleration each frame
    acceleration.mult(0);
  }

  // Draw Mover
  void display() {
   
    stroke(0);
    strokeWeight(2);
    fill(127, 200);
    ellipse(position.x, position.y, mass*16, mass*16);
  }

  // Bounce off bottom of window
  void checkEdges() {
   
    if (position.y > height) {
   
      velocity.y *= -0.9;  // A little dampening when hitting the bottom
      position.y = height;
    }
  }
}

2.液体
根据阻力公式,计算小球在液体中所受的阻力。
在这里插入图片描述

class Liquid {
   
  // Liquid is a rectangle
  
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,我们需要计算出每种颜色T恤的需求量的分布情况。根据题意,红色T恤的需求服从均值为3100,标准差为800的正态分布,而其他三种颜色的T恤需求分别服从均值为300,标准差为200的正态分布。根据正态分布的性质,我们可以计算出每种颜色T恤需求量的概率密度函数和累积分布函数。 1. 没有差异化延迟情况下 在没有差异化延迟的情况下,我们需要制造的T恤数量应该能够满足一定的服务水平CSL。增量分析是一种常用的方法来确定服务水平,它的基本思想是根据历史数据来估计需求分布的参数,然后根据需求分布和服务水平的要求来计算出相应的库存水平。库存水平可以用安全库存量来表示,安全库存量是指在需求不确定的情况下,为了保证服务水平所需要的最小库存量。 假设我们要达到的服务水平是95%,那么我们需要计算出各种颜色T恤的安全库存量。根据库存模型中的公式,T恤的安全库存量等于需求均值加上安全系数乘以需求标准差。安全系数可以根据服务水平和需求分布的特征来确定,常用的安全系数是1.64,它对应着95%的服务水平。 根据上述公式和题意,我们可以计算出各种颜色T恤的安全库存量如下: - 红色T恤:3100 + 1.64 * 800 = 4348.8,取4350 - 黄色T恤:300 + 1.64 * 200 = 632.8,取635 - 绿色T恤:300 + 1.64 * 200 = 632.8,取635 - 黑色T恤:300 + 1.64 * 200 = 632.8,取635 然后,我们需要计算出每种颜色T恤的平均需求量和总需求量。根据正态分布的性质,每种颜色T恤的平均需求量等于其均值,而总需求量可以通过将每种颜色T恤的平均需求量相加来得到。具体计算如下: - 红色T恤平均需求量:3100 - 黄色T恤平均需求量:300 - 绿色T恤平均需求量:300 - 黑色T恤平均需求量:300 总需求量 = 红色T恤平均需求量 + 黄色T恤平均需求量 + 绿色T恤平均需求量 + 黑色T恤平均需求量 = 3100 + 300 + 300 + 300 = 3000 因此,在没有差异化延迟的情况下,需要制造的T恤总数为3000。 2. 有差异化延迟情况下 在有差异化延迟的情况下,我们需要考虑不同颜色T恤的生产时间和成本。由于不染色的本色T恤可以直接生产,因此其生产时间和成本要比染色T恤低。在这种情况下,我们需要考虑如何利用差异化延迟来最小化成本,并且保证能够满足一定的服务水平。 假设我们将黑色、绿色和黄色T恤都生产成本色T恤,并且只对红色T恤进行染色。为了达到95%的服务水平,我们需要计算出每种颜色T恤的安全库存量,然后根据安全库存量和差异化延迟来计算出各种颜色T恤的生产数量。具体步骤如下: 1. 计算安全库存量 根据库存模型中的公式,每种颜色T恤的安全库存量等于需求均值加上安全系数乘以需求标准差。安全系数可以根据服务水平和需求分布的特征来确定。假设我们要达到的服务水平是95%,那么安全系数可以取1.64。 根据上述公式和题意,我们可以计算出各种颜色T恤的安全库存量如下: - 红色T恤:3100 + 1.64 * 800 = 4348.8,取4350 - 黄色T恤:300 + 1.64 * 200 = 632.8,取635 - 绿色T恤:300 + 1.64 * 200 = 632.8,取635 - 黑色T恤:300 + 1.64 * 200 = 632.8,取635 2. 计算生产数量 根据差异化延迟的原则,我们应该先生产成本色T恤,然后根据服务水平和安全库存量来决定生产染色T恤的数量。具体步骤如下: - 首先,我们需要计算出每种颜色T恤的生产时间和成本。假设生产一件染色T恤需要2个单位的时间和30元的成本,而生产一件成本色T恤只需要1个单位的时间和20元的成本。 - 然后,我们计算出对于每件染色T恤,需要生产多少件成本色T恤才能满足服务水平。根据库存模型中的公式,我们可以计算出每件染色T恤对应的生产数量: 生产数量 = 安全库存量 - 已有库存量 - 未来在途量 未来在途量 = 染色T恤的生产时间 / 成本色T恤的生产时间 对于红色T恤,已有库存量和未来在途量都为0,因此生产数量为4350。 对于黄色、绿色和黑色T恤,已有库存量为0,未来在途量为1,因此生产数量为634。 - 最后,我们计算出每种颜色T恤的总生产数量。对于染色T恤,生产数量就是上面计算出来的生产数量;对于成本色T恤,总生产数量等于需求量减去已有库存量和未来在途量。具体计算如下: - 红色T恤:4350(染色T恤) - 黄色T恤:3000 - 0 - 634 = 2366(成本色T恤) - 绿色T恤:3000 - 0 - 634 = 2366(成本色T恤) - 黑色T恤:3000 - 0 - 634 = 2366(成本色T恤) 因此,在有差异化延迟的情况下,需要准备的T恤数量为: - 染色T恤:4350 - 成本色T恤:2366 * 3 = 7098 总共需要制造的T恤数量为4350 + 7098 = 11448。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值