このような状況をシミュレートする方法を理解するのに問題があります: http://phet.colorado.edu/sims/density-and-buoyancy/buoyancy_en.html
プログラムのポイントは、リンクにあるようなシミュレーターを作成することです。私はそれを現実的に保ち、Python を使用したいと考えています。Pygameでシミュレーションを描画したい。
私のプログラムでは、いくつかの変数を要求します。質量と半径。半径は球の体積を計算するために使用され、質量は浮力、重力、加速度を計算するために使用されます。
しかし問題は、すべてを SI 単位で保持するために、半径をメートル単位で指定することです。半径を 10cm 未満に保ちながらこれを行うと、非常に小さな数になります。また、Pygame モジュールを使用して 0.1m のサイズの球を描画すると、失敗します。その代わりに、より大きなスケールを使用する必要がありました。
ここに私の主な問題があります。どのくらい正確に球体をスケーリングする必要がありますか? 100 ピクセルを 1 メートルと定義したいとします。それがスケールになるので、半径を 100 倍する必要がありますが、球体が大きくなったので、速度も 100 倍する必要がありますか?
私はこれについて本当に混乱しました!御時間ありがとうございます。
とにかく、これを見る必要があるかどうかはわかりません。
計算.py
import math
class Formulas():
def __init__(self):
self.pi = 3.1415926535
self.gravity = 9.82 #m/s^2
self.density_water = 1000.0 #kg/m^3
self.density_air = 1.29 #kg/m^3
self.drag_sphere = 0.47
def object_buoyancy(self, volume, medium_density):
buoyancy = volume * medium_density * self.gravity #N
return buoyancy
def object_gravity(self, mass):
gravity_force = mass * self.gravity #N
return gravity_force
def object_volume_sphere(self, radius):
volume = 1.3333333 * self.pi * math.pow(radius, 3) #m^3
return volume
def object_mass(self, density, volume):
mass = volume * density #kg
return mass
def object_acceleration(self, gravity_force, buoyancy, mass):
total_force = gravity_force - buoyancy #N
acceleration = total_force / mass #m/s^2
return acceleration
def object_speed(self, acceleration, time, scale):
speed = acceleration * (float(time)/1000.0) #m/s
return speed
def surface_area(self, radius):
area = 4 * self.pi * math.pow(radius, 2)
return area