諸量の計算プログラム
フリーウェアーソフトの 十進BASIC を使って 諸量の計算ができます。
http://hp.vector.co.jp/authors/VA008683/ を参照
様々な場面で活用され 紹介されているソフトです。
英語版 Decimal BASIC もあります。
以下のプログラムを コピーして それを実行すると 走ります。
試してみては いかがでしょう。
! の記号の後ろの 文字は プログラムでは実行されません。
気にせず コピーの中に含めて かまいません。
!!コピー開始*******************************************
!*** プラトン多面体 アルキメデス多面体の 諸量の計算 ***
!******************************************************
OPTION ANGLE DEGREES ! 三角関数の角の大きさの単位を度(DEGREES)にする
DIM men(18,6) ! 多面体の一つの頂を構成する多角形の種類と数
DIM met$(18) ! 多面体の記号
DIM khn(18,10) ! 多面体の基本数など
FOR s1=1 TO 18
FOR s2=1 TO 6
READ men(s1,s2) ! データを読み込む
NEXT s2
READ met$(s1) ! 多面体の記号を読込む
NEXT s1
PRINT "名称","基本数"
PRINT "①仰角","L接合角","M接合角","S接合角"
PRINT "②頂芯寸","稜芯寸"
PRINT "③L面芯寸","M面芯寸","S面芯寸"
PRINT
!********************
!*** 諸量計算開始 ***
!********************
FOR ss=1 TO 18
LET lk=men(ss,1) ! 大角形の角数
LET mk=men(ss,2) ! 中角形の角数
LET sk=men(ss,3) ! 小角形の角数
LET la=0.5/SIN(180/lk) ! L角心寸
LET ma=0.5/SIN(180/mk) ! M角心寸
LET sa=0.5/SIN(180/sk) ! S角心寸
! 内角を二等辺三角形の頂角としたときの底辺の1/2の長さ l01 m02 s03
LET l01=SIN((180-360/lk)/2)
LET m02=SIN((180-360/mk)/2)
LET s03=SIN((180-360/sk)/2)
LET l04=men(ss,4) ! 頂を構成する大角形の個数
LET m05=men(ss,5) ! 頂を構成する中角形の個数
LET s06=men(ss,6) ! 頂を構成する小角形の個数
LET f02 =0 ! 総接合角と360度との差の最小値 初期値は0
LET c0=l01 ! 基本数より短い値
LET c9=1 ! 基本数より長い値
101
LET c5=c9-(c9-c0)/2 ! 短と長の中間の 仮の基本数
LET l01X=ASIN(l01/c5) ! 角数が一番多い多角形面に 接する側の接合角
LET m02X=ASIN(m02/c5) ! 角数が次に多い多角形面に 接する側の接合角
LET s03X=ASIN(s03/c5) ! 角数が一番小い多角形面に 接する側の接合角
LET f01=360 -l01X*2*l04 -m02X*2*m05 -s03X*2*s06 ! 総接合角と360度との差
IF f01 = f02 THEN
LET khn(ss,1)=c5 ! 基本数
LET khn(ss,2)=l01X ! 大接合角
LET khn(ss,3)=m02X ! 中接合角
LET khn(ss,4)=s03X ! 小接合角
LET khn(ss,5)=ACOS(c5) !仰角
LET khn(ss,6)=1/SQR(1-c5^2)/2 ! 頂芯寸 = 外接球半径
LET khn(ss,7)=1/SQR(1-c5^2)/2*c5 ! 稜芯寸
LET khn(ss,8)=SQR(khn(ss,6)^2-la^2) ! L面芯寸
IF mk > 2 THEN
LET khn(ss,9)=SQR(khn(ss,6)^2-ma^2) ! M面芯寸
END IF
IF sk > 2 THEN
LET khn(ss,10)=SQR(khn(ss,6)^2-sa^2) ! S面芯寸
END IF
PRINT met$(ss), khn(ss,1)
PRINT "①";khn(ss,5),khn(ss,2),khn(ss,3),khn(ss,4)
PRINT "②";khn(ss,6),khn(ss,7)
PRINT "③";khn(ss,8),khn(ss,9),khn(ss,10)
PRINT
GO TO 102
END IF
LET f02 = f01
IF f01 > 0 THEN !総接合角が360度に満たない→仮の基本数c5が基本数より長い
LET c9 = c5 ! 基本数より長い値に仮の基本数c5を入れる
ELSE ! 総接合角が 360度をオーバー → 仮の基本数c5が基本数より短い
LET c0 = c5 ! 基本数より短い値に仮の基本数c5を入れる
END IF
GOTO 101
102
NEXT ss
!*******************
!*** データ領域 ***
!*******************
! 多面体の一つの頂を構成する多角形の種類と数 (2角数は ダミー)
! (1)L角数 (2)M角数 (3)S角数 (4)L個数 (5)M個数 (6)S個数
DATA 3, 2, 2, 3, 1, 1 , "01[3,3,3] "
DATA 3, 2, 2, 4, 1, 1 , "02[3,3,3,3]"
DATA 4, 2, 2, 3, 1, 1 , "03[4,4,4]"
DATA 3, 2, 2, 5, 1, 1 , "04[3,3,3,3,3]"
DATA 4, 3, 2, 2, 2, 1 , "05[3,4,3,4]"
DATA 6, 3, 2, 2, 1, 1 , "06[3,6,6]"
DATA 4, 3, 2, 1, 4, 1 , "07[3,3,3,3,4]"
DATA 4, 3, 2, 3, 1, 1 , "08[3,4,4,4]"
DATA 5, 2, 2, 3, 1, 1 , "09[5,5,5]"
DATA 6, 4, 2, 2, 1, 1 , "10[4,6,6]"
DATA 5, 3, 2, 2, 2, 1 , "11[3,5,3,5]"
DATA 8, 3, 2, 2, 1, 1 , "12[3,8,8]"
DATA 5, 3, 2, 1, 4, 1 , "13[3,3,3,3,5]"
DATA 5, 4, 3, 1, 2, 1 , "14[3,4,5,4]"
DATA 8, 6, 4, 1, 1, 1 , "15[4,6,8]"
DATA 6, 5, 2, 2, 1, 1 , "16[5,6,6]"
DATA 10, 3, 2, 2, 1, 1 , "17[3,10,10]"
DATA 10, 6, 4, 1, 1, 1 , "18[4,6,10]"
END ! コピー終わり
注 計算結果は
一般解を求める BASIC program の出力一覧 (2015 8/4) で表示しています。
2013年1月11日

