ヘリウムの浮力計算サンプル
◆直径1.5mの場合
・生地(0.2[kg/m^2])の重量
表面積[m^2] x 生地の重量[kg/m^2] = 生地の総重量[kg]
(4 * 3.14 * 0.75^2) * 0.2 = 1.413[kg]
・バルーンの体積計算
4/3 * 3.14 * 0.75^3 = 1.765[m^3]
・バルーンの体積からヘリウムの浮力を逆算
1.765[m^3] * 1.06[kg/m^3] = 1.872[kg]
・積載可能な重量
積載可能な重量 = 浮力 - 生地の体積 = 1.872[kg] - 1.413[kg] = 0.459[kg] = 459[g]
となります。
◆ソース添付 calc_buoyancy.pl
#!/usr/bin/perl #============================================ # Name: 浮力を計算する # Author: Yuki ANAI # Update: 2012/02/20 # Usage1: $ perl calc_buoyancy.pl -kiji 201 -tyokkei 100 # Usage2: $ perl calc_buoyancy.pl -furyoku 100 #============================================ use strict; use warnings; use utf8; use Data::Dumper; use Getopt::Long; # 生地の厚さ(kg/m^2) my $CLOSS = 0.2; # バルーンの半径(m) my $RADIUS = 0.75; # 浮力 my $BUOYANCY = -1; # 気温(°C) my $TEMPERATURE = 15; # デバッグ my $DEBUG = 1; # 引数取得 GetOptions( 'closs=i' => \$CLOSS, 'radius=s' => \$RADIUS, 'buoyancy=i' => \$BUOYANCY, 'temperature=i' => \$TEMPERATURE, 'debug=i' => \$DEBUG ); # マルチバイト文字のwarningめんどくさい no warnings; # 設定確認 print '=====================================', $/; print 'closs(生地の重量): ', $CLOSS, '[kg/m^2]', $/; print 'radius(バルーンの半径): ', $RADIUS, '[m]', $/; print 'buoyancy(浮力): ', $BUOYANCY, '[kg]', $/; print 'temperature(気温): ', $TEMPERATURE, '[*C]', $/; print 'debug(デバッグ): ', $DEBUG, $/; print '=====================================', $/; # 浮力から逆算モード if ($BUOYANCY != -1) { } # 生地とバルーン半径から浮力計算モード else { # TODO: 密度計算 0.178 my $helium_density = 1.06; # 15°Cの時 # 生地の総重量計算 # 表面積[m^2] x 生地の重量[kg/m^2] = 生地の総重量[kg] my $closs_cost = (4 * 3.14 * ($RADIUS ** 2)) * $CLOSS; print 'closs_cost:', $closs_cost, '[kg]', $/; # バルーンの体積計算 # (4 * π * r^3) / 3 = バルーンの体積[m^3] my $balloon_volume = (4 * 3.14 * ($RADIUS ** 3)) / 3; print 'balloon_volume:', $balloon_volume, '[m^3]', $/; # バルーンの体積からヘリウムの浮力を逆算 # バルーンの体積[m^3] * kg/m^3あたりのヘリウムの浮力[kg/m^3] = ヘリウムの浮力[kg] my $helium_buoyancy = $balloon_volume * $helium_density; print 'helium_buoyancy:', $helium_buoyancy, '[kg]', $/; # 積載可能重量 # 積載可能な重量 = バルーンの浮力 - 生地の体積 $BUOYANCY = $helium_buoyancy - $closs_cost; print 'buoyancy:', $BUOYANCY, '[kg] = ', $BUOYANCY * 1000, '[g]', $/; } 1;