BASIC

一般解を求める BASIC program の出力一覧

BASIC 多面体 諸量

すでにお伝えしている BASIC で記述した 諸量計算の 一般解を求めるプログラム の
出力データを載せておきます。( 2013年 1月 11日 掲載)

名称基本数
仰角L接合角M接合角S接合角
頂芯寸稜芯寸
L面芯寸M面芯寸 S面芯寸
01[3,3,3].577350269189627
54.735610317245359.999999999999800
.612372435695795.353553390593275
.20412414523193200
02[3,3,3,3].707106781186549
44.999999999999944.999999999999900
.707106781186549.500000000000002
.40824829046386500
03[4,4,4].816496580927728
35.264389682754559.999999999999800
.866025403784443.707106781186553
.50000000000000700
04[3,3,3,3,3].850650808352041
31.717474411460935.999999999999900
.951056516295157.809016994374951
.75576131407617500
05[3,4,3,4].86602540378444
29.999999999999854.735610317245335.26438968275460
1.866025403784444
.707106781186547.8164965809277260
06[3,6,6].904534033733292
25.239401820678873.221345119039533.55730976192070
1.172603939955861.06066017177983
.61237243569581.020620726159660
07[3,3,3,3,4].928191377985573
21.845383553837749.624148955803732.5939627610490
1.343713373744611.24722316799366
1.142613508925971.21335580002190
08[3,4,4,4].933948831094466
20.941020472243649.210529059074732.36841282277580
1.398966325965921.30656296487639
1.207106781186561.274273694248320
09[5,5,5].934172358962716
20.905157447889359.999999999999900
1.401258538444081.30901699437495
1.1135163644116100
10[4,6,6].948683298050515
18.434948822921865.905157447889248.18968510422140
1.581138830084211.50000000000002
1.224744871391621.414213562373120
11[3,5,3,5].951056516295154
17.999999999999958.282525588538931.7174744114610
1.61803398874991.53884176858763
1.376381920471181.511522628152350
12[3,8,8].959682982260668
16.324949936895174.300142595040431.3997148099190
1.778823645663941.70710678118656
1.207106781186571.682521984712180
13[3,3,3,3,5].972732850565597
13.410633720774956.273245517242430.93168862068930
2.155837375115682.09705383525213
1.980915947281882.077089659743250
14[3,4,5,4].974607762378171
12.939318437111756.108494226282246.512922254478230.8656612647612
2.232950509415712.17625089948285
2.064572880706782.118033988749922.15701985252026
15[4,6,8].976450976246514
12.458910191690671.113329958433562.487651925548646.3990181160177
2.31761091289282.26303343845375
1.914213562373132.090770275176062.20710678118658
16[5,6,6].979432085486415
11.640723136770462.15468023279755.69063953440590
2.478018659067662.42705098312489
2.267283942228562.327438436766370
17[3,10,10].985721919281303
9.6937238953144574.75983771732230.48032456535560
2.969449015863512.92705098312496
2.489898284882922.912781166596530
18[4,6,10].99131668954106
7.5560540461684973.61486076435660.881040189555245.5040990460887
3.802394499851433.76937712792185
3.440954801178093.668542480672733.73606797749993

数独 初級 攻略 プログラム 番外

BASIC 未分類

久しぶりです。
多面体関連の内容で 今はお伝えするほどのエピソードはありません。
そこで やっと出来た BASIC プログラムを載せておきます。
以前 Excel で作ったこともある 簡単なロジックで作っています。
仮定を設けての推論はせず 論理的必然としての 結果を表示します。
Excel では IF文が錯綜し 頭が混乱しました。

! 数独 初級 攻略 ツール
! フリーウエアー 十進BASIC でプログラム     
! http://hp.vector.co.jp/authors/VA008683/ を参照  
! http://hp.vector.co.jp/authors/VA008683/english/index.htm 英語版     

OPTION BASE 0

DIM x001(9,10)  ! 集計用配列
DIM s001(9,9)   ! 問題データ格納
DIM s002(9,9)   ! 判定用数値格納
DIM s003(9,9)   ! 累積判定用数値格納

! 集計振り分け用データ取り込み
FOR x=1 TO 9
   FOR y=1 TO 9
      READ x001(x,y)
   NEXT y
NEXT x

! 集計振り分け用データ
DATA  1,1,1,  2,2,2,  3,3,3
DATA  1,1,1,  2,2,2,  3,3,3
DATA  1,1,1,  2,2,2,  3,3,3

DATA  4,4,4,  5,5,5,  6,6,6
DATA  4,4,4,  5,5,5,  6,6,6
DATA  4,4,4,  5,5,5,  6,6,6

DATA  7,7,7,  8,8,8,  9,9,9
DATA  7,7,7,  8,8,8,  9,9,9
DATA  7,7,7,  8,8,8,  9,9,9

! 問題データ取り込み  と  集計データ格納
FOR x=1 TO 9
   FOR y=1 TO 9
      READ w001
      IF w001 = 0 THEN LET s002(x,y)=0
      IF w001 > 0 THEN LET s002(x,y)=10^(w001-1)
      LET s001(x,y)=w001
      LET x001(x,0)=x001(x,0)+s002(x,y)
      LET x001(0,y)=x001(0,y)+s002(x,y)
      LET w002=x001(x,y)
      LET x001(w002,10)=x001(w002,10)+s002(x,y)
   NEXT y
NEXT x
PRINT       !   1行スぺースを空ける

! 問題内容を 視覚化
FOR x=1 TO 9
   FOR y=1 TO 9
      IF s001(x,y)=0 THEN 
         PRINT "□ ";
      ELSE
         PRINT s001(x,y);
      END if
      IF y=3 OR y=6 THEN PRINT  "   ";
      IF y=9        THEN PRINT  
   NEXT y
   IF x=3 OR x=6 THEN PRINT 
NEXT x

! 個々の位置に判定数値を格納
FOR x=1 TO 9
   FOR y=1 TO 9
      LET w001=x001(x,y)
      IF s002(x,y) = 0 THEN  
         LET s003(x,y)=x001(x,0)+x001(0,y)+x001(w001,10)
      END if
   NEXT y
NEXT x

PRINT        !   1行スぺースを空ける

! 個々の判定数値を表示
FOR x=1 TO 9
   FOR y=1 TO 9
      IF s003(x,y) = 0 THEN 
         PRINT  "[  ";s001(x,y);"  ]";" ";
      ELSE
         LET w006$=""
         LET w004$= STR$(s003(x,y)+10^9)
         FOR z=1 TO 9
            LET zz=10-z
            LET w005$=mid$(w004$,z+1,1) 
            IF w005$="0" THEN 
               LET w006$=w006$ & STR$(zz)
            ELSE
               LET w006$=w006$ & " "
            END if
         NEXT z
         PRINT w006$;" ";
      END IF
      IF y=3 OR y=6 THEN PRINT  "  ";
      IF y=9        THEN PRINT  
   NEXT y
   IF x=3 OR x=6 THEN PRINT 
NEXT x

! 問題データ
!     a b c   d e f   g h i 

DATA  0,0,0,  0,0,7,  0,8,0  ! 1
DATA  0,0,0,  0,0,0,  0,2,3  ! 2
DATA  1,6,4,  0,0,0,  0,0,0  ! 3

DATA  2,0,7,  1,8,6,  0,0,0  ! 4
DATA  0,8,1,  9,5,0,  0,7,0  ! 5
DATA  9,4,5,  0,0,3,  0,0,6  ! 6

DATA  4,1,2,  0,6,0,  7,0,8  ! 7
DATA  0,0,6,  4,0,9,  2,3,1  ! 8
DATA  3,7,9,  2,0,8,  4,0,5  ! 9

END
以上です。下のような出力になります。
□ □ □    □ □  7    □  8 □ 
□ □ □    □ □ □    □  2  3 
 1  6  4    □ □ □    □ □ □ 

 2 □  7     1  8  6    □ □ □ 
□  8  1     9  5 □    □  7 □ 
 9  4  5    □ □  3    □ □  6 

 4  1  2    □  6 □     7 □  8 
□ □  6     4 □  9     2  3  1 
 3  7  9     2 □  8     4 □  5 

    5     9   5 32        3       65 3   9    4321 [   7   ]  9  65   1 [   8   ] 9    4    
 87 5     9   5      8          8 65     9    4  1     54  1  9  65   1 [   2   ] [   3   ] 
[   1   ] [   6   ] [   4   ]   8  5 3   9     32      5  2   9   5     9   5     9 7       

[   2   ]       3   [   7   ]  [   1   ] [   8   ] [   6   ]  9   5 3   9   54    9    4    
   6      [   8   ] [   1   ]  [   9   ] [   5   ]      4 2         3   [   7   ]      4 2  
[   9   ] [   4   ] [   5   ]    7         7    2  [   3   ]   8      1         1 [   6   ] 

[   4   ] [   1   ] [   2   ]      5 3   [   6   ]     5      [   7   ] 9         [   8   ] 
 8  5         5     [   6   ]  [   4   ]   7       [   9   ]  [   2   ] [   3   ] [   1   ] 
[   3   ] [   7   ] [   9   ]  [   2   ]         1 [   8   ]  [   4   ]    6      [   5   ]

双対多面体の諸量 体積、面積

BASIC 多面体 諸量

今回は 双対多面体の体積や 面積計算の BASIC プログラムを載せておきます。
双対多面体の場合 何を基準として 体積や面積を表現すべきか悩むところです。
以下にその出力の値を表示します。
体積1 や 面積1 は すでにお伝えしている値なので省略し 名称を追加しておきます。
体積2 や 面積2 は 双対多面体の稜の寸法の一番小さい値を 1 としたときの値です。
有効桁数は 13 ぐらいです。

  双対体積2        双対面積2
 .11785113019776  1.73205080756889 01 双対[3,3,3]     Tetrahedron 
 1.00000000000001 6.00000000000001 02 双対[3,3,3,3]   Hexahedron 
 .471404520791039 3.46410161513776 03 双対[4,4,4]     Octahedron 
 7.66311896062464 20.6457288070676 04 双対[3,3,3,3,3] Dodecahedron 
 3.07920143567805 11.3137084989848 05 双対[3,4,3,4]   Rhombic Dodecahedron 
 .982092751648015 5.52770798392574 06 双対[3,6,6]     Triakis Tetrahedron 
 35.6302020120718 54.7965494386598 07 双対[3,3,3,3,4] Pentagonal Icositetrahedron
 14.9133887137866 30.6948957240312 08 双対[3,4,4,4]   Trapezoidal Icositetrahedron 
 2.18169499062494 8.66025403784447 09 双対[5,5,5]     Icosahedron 
 3.5555555555556  11.9256958799988 10 双対[4,6,6]     Tetrakis Hexahedron 
 12.3107341487011 26.8328157299974 11 双対[3,5,3,5]   Rhombic Triacontahedron 
 2.91421356237319 10.6729418739837 12 双対[3,8,8]     Triakis Octahedron 
 189.78985206689  162.698964198467 13 双対[3,3,3,3,5] Pentagonal Hexecontahedron 
 81.0041436353778 92.2319129064044 14 双対[3,4,5,4]   Trapezoidal Hexecontahedron 
 16.288919082924  32.0667340105321 15 双対[4,6,8]     Hexakis Octahedron 
 13.4585693663192 27.9352496007011 16 双対[5,6,6]     Pentakis Dodecahedron 
 12.0172209268751 26.2285959767441 17 双対[3,10.10]   Triakis Icosahedron 
 84.181975440052  94.2346326621943 18 双対[4,6,10]    Hexakis Icosahedron 
以下がプログラムです。
今回も2013年1月11日に掲載した 計算プログラムで算出した諸量をもとに
表面積計算を追加して求めています。
OPTION ANGLE DEGREES

DIM d01(18,8)      ! 双対多面体の諸量
DIM d02(10,03)     ! 正多角形の諸量 
DIM d03$(18,2)     ! 最小寸法の稜の形態と名称 

FOR d04=1 TO 18
   FOR d05 =1 TO 8       
      READ d01(d04,d05)  ! 双対多面体の諸量の読み込み   
   NEXT d05
   READ d03$(d04,1)      ! 最小寸法の稜の形態の読み込み  
   READ d03$(d04,2)      ! 名称の読み込み  
NEXT d04

FOR d06 = 1 TO 6                         ! 正多角形の諸量計算
   READ d07
   LET d02(d07,1) = 0.5/SIN(180/d07)     !正多角形の  かど心寸 
   LET d02(d07,2) = 0.5/TAN(180/d07)     !正多角形の  辺心寸
   LET d02(d07,3) = SIN((180-360/d07)/2) !正多形の内角を二等辺三角形の頂角  
   !                                     !としたときの  底辺の1/2の長さ
NEXT d06

PRINT  "  双対体積1","  双対面積1", "  双対体積2","  双対面積2" 

FOR d08=1 TO 18
   LET d09=d01(d08,1)
   LET d10=d01(d08,2)
   LET d11=d01(d08,3)
   LET d12=d01(d08,4)
   LET d13=d01(d08,5)
   LET d14=d01(d08,6)
   LET d15=d01(d08,7)
   LET d16 = d01(d08,8)           ! 基本数  頂芯寸が 1 のときの 稜芯寸
   LET d17 = d16/(SQR(1-d16^2)*2)                      ! 稜芯寸
   LET d18 = SQR((1/SQR(1-d16^2)/2)^2 - d02(d09,1)^2)  ! L面芯寸  
   LET d19 = SQR((1/SQR(1-d16^2)/2)^2 - d02(d10,1)^2)  ! M面芯寸  
   LET d20 = SQR((1/SQR(1-d16^2)/2)^2 - d02(d11,1)^2)  ! S面芯寸  

   LET d21 = d02(d09,2) * d17 / d18   ! 双L稜寸(=L辺心寸*稜芯寸/L面芯寸) 
   LET d22 = d02(d10,2) * d17 / d19   ! 双M稜寸(=M辺心寸*稜芯寸/M面芯寸)
   LET d23 = d02(d11,2) * d17 / d20   ! 双S稜寸(=S辺心寸*稜芯寸/S面芯寸) 

   LET d24=d02(d09,3)
   LET d25=d02(d10,3)
   LET d26=d02(d11,3)

   LET d27 = SQR(d21^2 - (d24/2)^2) + SQR(d16^2 - d24^2)/2 ! 双Lかど心寸 
   LET d28 = SQR(d22^2 - (d25/2)^2) + SQR(d16^2 - d25^2)/2 ! 双Mかど心寸 
   LET d29 = SQR(d23^2 - (d26/2)^2) + SQR(d16^2 - d26^2)/2 ! 双Sかど心寸
   LET d30 =       d27 *  d02(d09,3)/2  *  d12  ! 
   LET d31 =       d28 *  d02(d10,3)/2  *  d13  ! 
   LET d32 =       d29 *  d02(d11,3)/2  *  d14  !  

   LET d33 = (d30+d31+d32) * d15                           ! 面積      
   LET d34 = 1/SQR(1-d16^2)/2-SQR(1-d16^2)/2               ! 双面芯寸  
   LET d35=d33*d34/3                                       ! 体積      
   LET d36=SQR(1-d16^2)
   LET d37=1/(d36*2)-d36/2  

   PRINT d35,d33,  ! 元の多面体の稜寸が 1 のときの 稜芯寸と同じ値の体積と面積

   IF d03$(d08,1)="LL" THEN LET d38 = d21+d21
   IF d03$(d08,1)="LM" THEN LET d38 = d21+d22   
   IF d03$(d08,1)="MM" THEN LET d38 = d22+d22
   IF d03$(d08,1)="MS" THEN LET d38 = d22+d23

   PRINT d35/d38^3,  ! 双対多面体の一番寸法が小さい稜寸を 1 としたときの体積 
   PRINT d33/d38^2,  ! 双対多面体の一番寸法が小さい稜寸を 1 としたときの面積 
   PRINT  d03$(d08,2)! 名称

NEXT d08

! <<計算に必要な既に分かっている定数 (角数の2は  角度0)>>
!    |←  1つの頂の諸量  →|   
!     01  02  03  04  05  06   07        08             09         10
!       M角数   L個数    S個数               
!   L角数   S角数   M個数    頂数     基本数       最小稜形         
DATA   3,  2,  2,  3,  1,  1,  4, .577350269189627 , "LL", "01 双対[3,3,3]"
DATA   3,  2,  2,  4,  1,  1,  6, .707106781186549 , "LL", "02 双対[3,3,3,3]"
DATA   4,  2,  2,  3,  1,  1,  8, .816496580927728 , "LL", "03 双対[4,4,4]"
DATA   3,  2,  2,  5,  1,  1, 12, .850650808352041 , "LL", "04 双対[3,3,3,3,3]"
DATA   4,  3,  2,  2,  2,  1, 12, .86602540378444  , "LM", "05 双対[3,4,3,4]"
DATA   6,  3,  2,  2,  1,  1, 12, .904534033733292 , "LM", "06 双対[3,6,6]"
DATA   4,  3,  2,  1,  4,  1, 24, .928191377985573 , "MM", "07 双対[3,3,3,3,4]"
DATA   4,  3,  2,  3,  1,  1, 24, .933948831094466 , "LM", "08 双対[3,4,4,4]"
DATA   5,  2,  2,  3,  1,  1, 20, .934172358962716 , "LL", "09 双対[5,5,5]"
DATA   6,  4,  2,  2,  1,  1, 24, .948683298050515 , "LM", "10 双対[4,6,6]"
DATA   5,  3,  2,  2,  2,  1, 30, .951056516295154 , "LM", "11 双対[3,5,3,5]"
DATA   8,  3,  2,  2,  1,  1, 24, .959682982260668 , "LM", "12 双対[3,8,8]"
DATA   5,  3,  2,  1,  4,  1, 60, .972732850565597 , "MM", "13 双対[3,3,3,3,5]"
DATA   5,  4,  3,  1,  2,  1, 60, .974607762378171 , "MS", "14 双対[3,4,5,4]"
DATA   8,  6,  4,  1,  1,  1, 48, .976450976246514 , "MS", "15 双対[4,6,8]"
DATA   6,  5,  2,  2,  1,  1, 60, .979432085486415 , "LM", "16 双対[5,6,6]"
DATA  10,  3,  2,  2,  1,  1, 60, .985721919281303 , "LM", "17 双対[3,10.10]"
DATA  10,  6,  4,  1,  1,  1,120, .99131668954106  , "MS", "18 双対[4,6,10]"

DATA     3,    4,    5,    6,    8,   10  

END

多面体の球形度 3 sphericity

18[4,6,10] BASIC Excel sphericity 多面体 諸量


前回 英語版の Wikipedia での表面積計算が 多面体[4,6,10]
Truncated icosidodecahedron (=Rhombitruncated Icosidodecahedron)
では私の計算と異なると書きましたが *注

英語版や他の多くの言語の Wikipediaに載せられた 計算式を
BASICで実行すると以下です。(稜寸=1として)

LET a=30*(1+SQR(2*(4+SQR(5)+SQR(15+6*SQR(6)))))
PRINT a   
END

答=175.031044595664
ドイツ語版(Großes Rhombenikosidodekaeder)
の式です。(稜寸=1として)
LET b=30*(1+SQR(3)+SQR(5+2*SQR(5)))
PRINT b    
END

答=174.292030342324
イタリア語版(Icosidodecaedro troncato)は (稜寸=1として)
LET x=30*(1+SQR(2*(4+SQR(5)+SQR(15+6*SQR(5)))))
PRINT x    
END

答=174.292030342324

式の最後の 6*SQR(5) が 英語版の 6*SQR(6) と異なっています。
オランダ語版(Afgeknotte icosidodecaëder)や
ポルトガル語版(Icosidodecaedro truncado スペイン語と同じスペル)では
式は英語版と同じなのに
答えの記述は 174,2920 になっています。
少しためらいもありましたが くどくどと書いてしまいました。
*英語版は 計算式、数値とも変更されています。(2015年1月8日現在)


上記 三種類の計算式を Excel で表示すると以下です。

=30*(1+SQRT(2*(4+SQRT(5)+SQRT(15+6*SQRT(6)))))
=30*(1+SQRT(3)+SQRT(5+2*SQRT(5)))
=30*(1+SQRT(2*(4+SQRT(5)+SQRT(15+6*SQRT(5)))))

多面体の球形度 2 sphericity

18[4,6,10] BASIC sphericity 多面体 諸量

2013年8月11日に多面体の球形度をお伝えしていますが
数値だけで 計算根拠を載せていませんでした。
別々に作ったプログラムでの計算数値を比較して 正確性をチェックしていました。
その時点では 公表されている 資料が手元になく少し不安が残っていました。
先日 英語版の Wikipedia での表面積計算が Truncated icosidodecahedron
斜方切頂20・12面体 [4,6,10] で 175.031045 となっているのを発見しました。 *注
私の計算結果は174.29203034232392088 です。
また やってしまったかと思い 他の言語の Wikipedia も調べると、
ドイツ語版の数式を計算すると 私と同じ結果になりました。すこし安心しました。
不安を一掃するために もう一度計算プログラムを作ってみました。
2013年1月11日に掲載した 計算プログラムで算出した諸量をもとに
表面積計算を追加して求めています。判断を仰ぎます。

OPTION ANGLE DEGREES
OPTION BASE 0
DIM x001(10)          ! 多角形の面積
DIM x002(18,6)        ! 既知諸量
DIM x003$(18)         ! 名称
DIM x004(18,4)        ! 頂芯寸  面芯寸

FOR x=1 TO 6
   READ m
   LET x001(m)=0.5/TAN(180/m)*m*0.5  ! 多角形面積入力
NEXT x

FOR y=1 TO 18
   FOR z=1 TO 6
      READ  x002(y,z)                ! 数値入力
   NEXT z
   READ x003$(y)                     ! 名称入力
NEXT y

FOR p=1 TO 18
   FOR q=1 TO 4
      READ x004(p,q)
   NEXT q
NEXT p

PRINT "名称",
PRINT "  外接球半径 = R",
PRINT "  表面積 = S ",
PRINT "  体積 = V  ",
PRINT "  V/(S*R)"

FOR u=1 TO 18
   LET f11=x002(u,1)
   LET f12=x002(u,2)
   LET f13=x002(u,3)
   LET f21=x002(u,4)
   LET f22=x002(u,5)
   LET f23=x002(u,6)
   LET g10=x004(u,1)
   LET g11=x004(u,2)
   LET g12=x004(u,3)
   LET g13=x004(u,4)
   LET h01=x001(f11)*f21
   LET h02=x001(f12)*f22
   LET h03=x001(f13)*f23
   LET i01=h01*g11
   LET i02=h02*g12
   LET i03=h03*g13

   PRINT x003$(u), 
   PRINT g10, 
   PRINT h01+h02+h03,    
   PRINT (i01+i02+i03)/3,
   PRINT (i01+i02+i03)/3 / ( g10 * (h01+h02+h03) )  
NEXT u

DATA 3,4,5,6,8,10    ! 多角形の種類

!        角数       総数   
DATA  3, 0, 0,   4, 0, 0,  "01[3,3,3]"
DATA  3, 6, 0,   4, 4, 0,  "06[3,6,6]"
DATA  3, 0, 0,   8, 0, 0,  "02[3,3,3,3]"
DATA  4, 0, 0,   6, 0, 0,  "03[4,4,4]"
DATA  3, 8, 0,   8, 6, 0,  "12[3,8,8]"
DATA  3, 4, 0,   8, 6, 0,  "05[3,4,3,4]"
DATA  3, 0, 0,  20, 0, 0,  "04[3,3,3,3,3]"
DATA  5, 0, 0,  12, 0, 0,  "09[5,5,5]"
DATA  4, 6, 0,   6, 8, 0,  "10[4,6,6]"
DATA  3,10, 0,  20,12, 0,  "17[3,10.10]"
DATA  3, 4, 0,   8,18, 0,  "08[3,4,4,4]"
DATA  3, 5, 0,  20,12, 0,  "11[3,5,3,5]"
DATA  4, 6, 8,  12, 8, 6,  "15[4,6,8]"
DATA  3, 4, 0,  32, 6, 0,  "07[3,3,3,3,4]"
DATA  5, 6, 0,  12,20, 0,  "16[5,6,6]"
DATA  4, 6,10,  30,20,12,  "18[4,6,10]"
DATA  3, 4, 5,  20,30,12,  "14[3,4,5,4]"
DATA  3, 5, 0,  80,12, 0,  "13[3,3,3,3,5]"

!         頂芯寸           S面芯寸            M面芯寸            L面芯寸
DATA .612372435695795, .204124145231932, 0               , 0                ! 01
DATA 1.17260393995586, 1.02062072615966, .6123724356958  , 0                ! 06
DATA .707106781186549, .408248290463865, 0               , 0                ! 02  
DATA .866025403784443, .500000000000007, 0               , 0                ! 03
DATA 1.77882364566394, 1.68252198471218, 1.20710678118657, 0                ! 12
DATA 1               , .816496580927726, .707106781186547, 0                ! 05
DATA .951056516295157, .755761314076175, 0               , 0                ! 04
DATA 1.40125853844408, 1.11351636441161, 0               , 0                ! 09
DATA 1.58113883008421, 1.41421356237312, 1.22474487139162, 0                ! 10
DATA 2.96944901586351, 2.91278116659653, 2.48989828488292, 0                ! 17
DATA 1.39896632596592, 1.27427369424832, 1.20710678118656, 0                ! 08
DATA 1.6180339887499 , 1.51152262815235, 1.37638192047118, 0                ! 11
DATA 2.3176109128928 , 2.20710678118658, 2.09077027517606, 1.91421356237313 ! 15
DATA 1.34371337374461, 1.2133558000219 , 1.14261350892597, 0                ! 07
DATA 2.47801865906766, 2.32743843676637, 2.26728394222856, 0                ! 16
DATA 3.80239449985143, 3.73606797749993, 3.66854248067273, 3.44095480117809 ! 18
DATA 2.23295050941571, 2.15701985252026, 2.11803398874992, 2.06457288070678 ! 14
DATA 2.15583737511568, 2.07708965974325, 1.98091594728188, 0                ! 13

END
計算結果の諸量は 以下です 有効桁数は 13 ぐらいです。
     外接球半径 = R    表面積 = S        体積 = V          V/(S*R)
01  .612372435695795  1.73205080756888  .117851130197758  .111111111111111 
06  1.17260393995586  12.1243556529822  2.71057599454846  .190656480332432 
02  .707106781186549  3.46410161513775  .471404520791033  .192450089729876 
03  .866025403784443  6                 1.00000000000001  .192450089729877 
12  1.77882364566394  32.4346643636149  13.5996632910746  .235714258446495 
05  1                 9.46410161513775  2.35702260395516  .249048742268904 
04  .951056516295157  8.66025403784438  2.18169499062492  .264884824097256 
09  1.40125853844408  20.6457288070676  7.66311896062467  .264884824097255 
10  1.58113883008421  26.7846096908266  11.313708498985   .26714660435952 
17  2.96944901586351  100.990760153102  85.0396645593756  .283572442725136 
08  1.39896632596592  21.4641016151378  8.71404520791042  .290201619765406 
11  1.6180339887499   29.305982844912   13.8355259362495  .291777461485733 
15  2.3176109128928   61.7551724393037  41.798989873224   .292046442752428 
07  1.34371337374461  19.856406460551   7.88947739997544  .295692931258246 
16  2.47801865906766  72.607253034134   55.2877307581239  .307286999289469 
18  3.80239449985143  174.292030342324  206.803398874998  .31204912568704 
14  2.23295050941571  59.305982844912   41.6153237824984  .314250279590291 
13  2.15583737511568  55.2867449584451  37.6166499627341  .315604435116589

 *英語版は 計算式、数値とも変更されています。(2015年1月8日現在)

Carbon nanotube 6

BASIC Carbon nanotube 製作道具

カイラル指数 (7,2) の カイラル型の cradle と製作途中の作品です。

sakai-s012

以下に その諸量計算の プログラムを載せておきます。
これで コンパクトにしたつもりです。
私の考えている ロジックでは このような形になりました。
多面体や球体以上に 円柱空間の理解に苦労しました。

計算した諸量での模型製作はうまくいっているようです。
製作方法等の説明は 後日しようと思っています。

! ■  カイラルタイプの carbon nanotube 模型の諸量計算  ■

! 正三角形充填平面を その辺に沿って 山折りや谷折りを加え
! 蛇腹状 ( bellows ) に加工された平面を筒状にし 
! その三角形の全ての "かど" が接する円柱との結合体を考える

! 円柱の周方向にある 三角形の辺を "底辺" とし
! 底辺に向かい合う三角形の "かど" を "上かど" とする

! 底辺の両端二点を面巾とする長平面を考える
! 円柱軸と平行で 円柱に接する平面であり "底面" とする  

! 同様に ある二点が面巾となり円柱と接する長平面を "補助面" とする

! 底面の 円柱軸と平行方向を y 直角方向を x 垂直方向を z とする

! 底辺の中点の (x,y,z) を (0,0,0) とする

OPTION ANGLE RADIANS ! ラジアンで計算する
01  
   LET a001=7                 ! n  ( n > m )
   LET a002=2                 ! m ( m < n )

   IF a002/a001=0 OR a002/a001=1 THEN 
      PRINT "(";a001;",";a002;")";
      PRINT "計算停止 !!"
      PRINT  "カイラル type のみの計算をします"
      STOP
   END IF

   LET a003=SQR(3)/2          ! 三角高 xyz
   LET a004=1                 ! 三角高 差
   LET a005=a003+.05          ! (円柱数値調整 L)
   LET a006=a003-.05          ! (円柱数値調整 S)
   LET a007=a003              ! (円柱数値調整 M)
   LET a008=1                 ! 円柱周角チェック
   LET a009=0                 ! ループカウント
05
   LET a007=(a005+a006)/2     ! (円柱数値調整 M)
   LET a010=a001+0.5*a002     ! (nm 底辺)
   LET a011=a002*a007         ! (nm 対辺)
   LET a012=ATN(a011/a010)    ! (nm 斜角)

   !■  以下の数値は 半径=1 として計算  ■
   !   寸法は 円柱面のx方向にのみ 角度と同値  
   LET a013=a010/COS(a012)    ! (単位底数)
   LET a014=(2*PI)/a013       ! (三角底巾 xy,角 xy)
   LET a015=a014*COS(a012)    ! (三角底巾 x)
   LET a016=a014*SIN(a012)    ! 三角底巾 y 
   LET a017=1*SIN(a015/2)*2   ! 三角底巾 x
   LET a018=ATN(a016/a017)    ! nm 斜角
   LET a019=SQR(a017^2+a016^2)! 三角底巾 xy
   LET a020=1*COS(a015/2)     ! 底央・軸寸 z
   LET a021=a003*a019         ! 三角高 xyz
   LET a022=a021              ! 三角高 xy 

   LET a023=0
10
   LET a023=a023+1            ! ループカウント

   LET a024=a022*SIN(a018)    ! 三角高 x
   LET a025=a022*COS(a018)    ! 三角高 y
   LET a026=ASIN(a024/1)      ! 上かど傾角 xz
   LET a027=a024/TAN(a026)    ! 上かど・軸寸 z
   LET a028=a027-a020         ! 三角高 z 
   LET a029=ATN(a028/a022)    ! 上かど仰角
   LET a030=a022/COS(a029)    ! 三角高 xyz大  
   LET a031=a030-a021         ! 三角高 xyz差

   IF ABS(a031)=a004 THEN GOTO 20 ! 三角錐底面傾き修正
   LET a004=ABS(a031)             ! 三角錐底面傾き修正
   LET a022=a021*COS(a029)        ! 三角錐底面傾き修正
   GOTO 10
20
   LET a009=a009+a023           ! ループカウント
   LET a023=0 
   LET a032=a015*a001           ! n円柱周角 
   LET a033=(a015/2+a026)*a002  ! m円柱周角
   LET a034=a032+a033           ! 円柱周角 xz 

   IF a008=a034 THEN GOTO 30
   LET a008=a034
   IF a034 < 2*PI THEN LET a005=a007  ! 円柱数値調整
   IF a034 > 2*PI THEN LET a006=a007  ! 円柱数値調整 
   GOTO 05
30  
   ! 三角錐底面の中心は底辺中央点 (0,0,0) からの位置関係として
   LET a035=a021/3              ! 角錐底心 xyz
   LET a036=a022/3              ! 角錐底心 xy
   LET a037=a024/3              ! 角錐底心 x
   LET a038=a025/3              ! 角錐底心 y
   LET a039=a028/3              ! 角錐底心 z
   LET a040=a036/TAN(a029)      ! 交点・心寸 z
   LET a041=a039+a020           ! 心・軸寸 z
   LET a042=ATN(a040/a037)      ! 心垂線仰角 xz   
   LET a043=ASIN(a037)          ! 頂傾角   xz
   LET a044=1                   ! 誤差最低値の繰り返し判定 
40  
   LET a009=a009+1
   LET a045=COS(a043)           ! 頂・軸寸 z
   LET a046=a045-a041           ! 頂・心寸 z
   LET a047=a046/TAN(a042)      ! 心・頂寸 x
   LET a048=a037-a047           ! 頂・央寸 x
   LET a049=ASIN(a048)          ! 頂傾角 xz'
   LET a050=COS(a049)           ! 頂・軸寸 z'
   LET a051=a050-a045           ! 頂・軸寸誤差

   IF a044=a051 THEN GOTO 95    ! 誤差最低値の繰り返し判定 
   LET a044=a051                ! 頂・軸寸誤差
   LET a043=a049                ! 近似頂傾角 xz  
   GOTO 40 
95  
   LET a052=ATN(a040/a038)      ! 心垂線仰角 yz   
   LET a053=a046/TAN(a052)      ! 心・頂寸 y
   LET a054=a038-a053           ! 頂・央寸 y
   LET a055=a046+a039           ! 頂・央寸 z
   LET a056=a017/2              ! 底辺寸/2 x
   LET a057=a016/2              ! 底辺寸/2 y
   LET a058=a055-a028           ! 上稜寸 z
   LET a059=a024-a048           ! 上稜寸 x
   LET a060=a025-a054           ! 上稜寸 y
   LET a061=SQR(a059^2+a060^2)  ! 上稜寸 xy
   LET a062=SQR(a061^2+a058^2)  ! 上稜寸 xyz
   LET a063=a048+a056           ! 中稜寸 x   
   LET a064=a054-a057           ! 中稜寸 y
   LET a065=SQR(a063^2+a064^2)  ! 頂・央寸 xy
   LET a066=SQR(a065^2+a055^2)  ! 中稜寸 xyz
   LET a067=a056-a048           ! 下稜寸 x  
   LET a068=a054+a057           ! 下稜寸 y
   LET a069=SQR(a067^2+a068^2)  ! 下稜寸 xy
   LET a070=SQR(a069^2+a055^2)  ! 下稜寸 xyz
   LET a071=ATN(a058/a059)      ! 上稜面仰角
   LET a072=a059/COS(a071)      ! 上稜面巾寸
   LET a073=ATN(a055/a063)      ! 中稜面仰角
   LET a074=a063/COS(a073)      ! 中稜面巾寸 
   LET a075=ATN(a055/a067)      ! 下稜面仰角
   LET a076=a067/COS(a075)      ! 下稜面巾寸 
   LET a077=ATN(a072/a060)      ! 上稜面 稜角    
   LET a078=ATN(a059/a060)      ! 底面 上稜角    
   LET a079=ATN(a074/a064)      ! 中稜面 稜角   
   LET a080=ATN(a063/a064)      ! 底面 中稜角  
   LET a081=ATN(a076/a068)      ! 下稜面 稜角  
   LET a082=ATN(a067/a068)      ! 底面 下稜角    
   LET a083=(PI-a080)+a078      ! 底面 上 中角    
   LET a084=(PI-a082)-a078      ! 底面 上 下角       
   LET a085=a080+a082           ! 底面 中 下角    
   LET a086=a083+a084+a085      ! 底面 稜角 計 
   LET a087=a083/2-a078         ! 上 中 接合角    
   LET a088=a084/2+a078         ! 上 下 接合角   
   LET a089=a085/2-a082         ! 中 下 接合角    
   LET a090=(a083/2+a084/2)/2   ! 底面 上接合角/2 
   LET a091=(a083/2+a085/2)/2   ! 底面 中接合角/2 
   LET a092=(a084/2+a085/2)/2   ! 底面 下接合角/2

   PRINT "カーボンナノチューブ模型カイラル型の諸量計算" 
   PRINT 
   PRINT "カイラル指数","(";a001;",";a002;")" !         ( 7 , 2 )
   PRINT "稜寸 xyz",    a062/a062      ! 1                1
   PRINT "直径",        2/a062         ! 4.58626952818816 4.5862695281881583678
   PRINT "底辺傾角 xy", a018/PI*180    ! 12.4871457895927 12.487145789592382811
   PRINT 
   PRINT "上稜面 仰角", a071/PI*180    ! 5.33169641703842  021/225
   PRINT "上稜面 稜角", a077/PI*180    ! 12.5396942073838  054/243 
   PRINT "底面 上稜接合角/2",DEG(a090) ! 59.6889771264966  195/114
   PRINT 
   PRINT "中稜面 仰角", a073/PI*180    ! 9.43804224999629  041/247
   PRINT "中稜面 稜角", a079/PI*180    ! 73.3250608427073  217/065 177/053
   PRINT 
   PRINT "下稜面 仰角", a075/PI*180    ! 12.056318130851   044/206
   PRINT "下稜面 稜角", a081/PI*180    ! 48.76921965494    178/156
   PRINT 
   PRINT "以下 軸方向を 0 度として表示"
   PRINT "下 中 接合角 は 上 中 接合角側"
   PRINT 
   PRINT "上 中 接合角",a087/PI*180    ! 47.201831336904   189/175 162/150
   PRINT "上 下 接合角",a088/PI*180    ! 72.1761229160893  227/073 168/054
   PRINT "下 中 接合角",a089/PI*180    ! 12.4871457895928  033/149   
END

Carbon nanotube 3

BASIC Carbon nanotube

カーボンナノチューブ carbon nanotube の
ジグザグ型 (8,0) Zigzag の 模型 について お伝えします。

下の諸量は 前回のBASIC の output です。

カイラル指数            ( 8  , 0 )
稜寸                     1 
かどが接する円柱直径     4.49612132172072 
斜面仰角                 11.25 
斜面 底稜開き角          61.3004286589633 
角柱面 底・縦稜開き角/2  59.5851260907253 
正三角形辺寸             1.72059113972594
2013年3月9日に掲載した蜂の巣状六角形に三角形が詰まった図を
print out して手元にあるとして説明します。
山折 谷折の処理もお願いしておきます。

(8,0) Zigzag とは 三角形の底を横一直線に八つ並べた両端を接触させている
蛇腹状の柱状立体で
三角形の各かど点が 円柱に接していると考えられます。

立体の軸を上下方向に向け 三角形内の三つの辺を 逆 Y 字状にします。

三角形の底に六角形の二辺が 120度開いて付いた状態で 一周していますが
この形状が ノコギリの歯のような Zigzag な形に見えます。

稜寸とは 六角形の一辺の長さですが
逆Y字交点が 本来の位置(円柱面に接触)にあるとしての寸法です。

三つの型の形状の範囲は対称性を考慮すると
逆Y字が 0度から 30度に傾くまでで全てを表せます。
( 円柱面に投影したとしての角度)

逆Y字の三本の線を稜として 名前づけしておきます。
上の縦線を 上稜 下の斜めの線を 底稜とし
傾きがある場合上から下に向かって 上稜 中稜 下稜とします。

補助線の正三角形の辺も 傾辺 底辺とし
傾きがある場合上から下に向かって 上辺 中辺 底辺とします。

カイラル指数 (4,4) とは下辺を 4つ 上辺を 4つ 下がった点までを
一周とする立体形状を言い 傾き角度は 30度です。
その形状が アームチェアに見えるそうです。

(8,0)型の治具製作を説明する写真も用意していたのですが
字数が多くなってしまい 掲載は次回にします。
! アームチェア型諸量計算

LET b001=SQR(3)/2               ! .866025403784439 かど・底辺寸
LET b002=4                      ! 4                カイラル指数 n ( n , n )
LET b003=2*pi/(b002*2)          ! .785398163397448  45                底・かど巾角 xz
LET b004=(b001/2)/SIN(b003/2)   ! 1.13151671922686 円柱半径 z
LET b005=(b001/2)/TAN(b003/2)   ! 1.04538513758801 角柱面・軸寸 z
LET b006=b001/6                 ! .144337567297407 角錐頂寸 x
LET b007=ASIN(b006/b004)        ! .127909644574917  7.32868279316117 角錐頂角 xz
LET b008=b004*COS(b007)         ! 1.1222730294169  頂・軸寸 z
LET b009=b008-b005              ! .07688789182889  頂・底辺寸 z
LET b010=ATN(b009/(b001/1.5))   ! .132394718561917  7.58565860342018  三角錐稜仰角
LET b011=(b001/1.5)/COS(b010)   ! .5824474922628   三角錐稜寸
LET b012=ATN(b009/(b001/3))     ! .260304363136846  14.914341396582   短斜面仰角
LET b013=(b001/3)/COS(b012)     ! .298739152511392 短斜面巾寸 xz
LET b014=ATN(0.5/b013)          ! 1.03223307697974  59.1425987847417 短斜面稜開き角/2
LET b015=360/6                  ! 60               底面稜接合角

PRINT "カイラル指数","(";b002;","; b002 ;")" ! ( 4 , 4 )
PRINT "稜寸",b011/b011                 ! 1
PRINT "外接円柱直径",(b004*2)/b011     ! 3.88538618247263   237 /  61
PRINT "長斜面仰角",b010/pi*180         ! 7.58565860342016    33 / 248
PRINT "短斜面仰角",b012/pi*180         ! 14.914341396582     57 / 214
PRINT "短斜面稜開き角/2",b014/pi*180   ! 59.1425987847416   159 /  95
PRINT "底面稜接合角",b015              ! 60                 194 / 112

END

Carbon nanotube 2

BASIC Carbon nanotube

カーボンナノチューブ carbon nanotube の 模型 について お伝えします。

今回は 三つあるタイプの一つのタイプ ジグザグ型 Zigzag です。

カイラル型 Chiral と比べて
このタイプの 模型 としての諸量計算は簡単ですが
円柱座標を扱うため 球形座標以上に 説明するのが苦手です。
ひとまず 諸量計算プログラムを載せておきます。

カイラル指数 ( 8 , 0 ) とし
円柱に正八角柱の稜が接する空間として計算しています。
正八角柱の一つの面に正三角形の一辺を 周方向に置きます。
そして 上かど が円柱面に接する三角形充填面柱の 諸量計算をします。

その三角形を 底とする 三角錐の頂が 円柱に接する立体の諸量計算をする。
この三角錐の稜が ( 8 , 0 ) の稜と 合同である。
と考えて計算しています。

sakai-s005

OPTION ANGLE DEGREES

! ジグザグ型諸量計算
! 正三角形の一辺を 1  として

LET a001=SQR(3)/2             ! .866025403784439 かど・底辺寸
LET a002=8                    ! 8                カイラル指数 n ( n , 0 )
LET a003=360/a002             ! 45               底辺巾角 xz
LET a004=0.5/SIN(a003/2)      ! 1.30656296487638 円柱半径 z
LET a005=0.5/TAN(a003/2)      ! 1.20710678118655 角柱面・軸寸 z
LET a006=0.5*TAN(a003/4)      ! .099456183689829 かど・底辺寸 z
LET a007=ASIN(a006/a001)      ! 6.59451821615418 かど・底辺仰角
LET a008=a001*COS(a007)       ! .860295569862972 かど・底辺寸 y
LET a009=(a001/1.5)/COS(a007) ! .581195600111762 稜寸
LET a010=a008-a009            ! .27909996975121  頂・底辺寸 y
LET a011=0.5/COS(a003/4)      ! .509795579104159 頂・角柱面端寸 xz
LET a012=ATN(a011/a010)       ! 61.3004286589633 斜面 底稜開き角
LET a013=ATN(0.5 /a010)       ! 60.8297478185495 角柱面 底・底稜開き角/2
LET a014=(180-a013)/2         ! 59.5851260907253 角柱面 底・縦稜開き角/2

PRINT "カイラル指数","(";a002;" , 0 )"     ! ( 8  , 0 )
PRINT "稜寸",a009/a009                     ! 1 
PRINT "かどが接する円柱直径",(a004*2)/a009 ! 4.49612132172072    243 /  54 
PRINT "斜面仰角",a003/4                    ! 11.25                37 / 186
PRINT "斜面 底稜開き角",a012               ! 61.3004286589633    179 /  98 
PRINT "角柱面 底・縦稜開き角/2",a014       ! 59.5851260907253    247 / 145
PRINT "正三角形辺寸",1/a009                ! 1.72059113972594    234 / 136

END

デューラーの多面体 Dürer’s solid Truncated triangular trapezohedron

BASIC Dürer’s solid ポーカーの確率 多面体

レオナルド・ダ・ヴィンチ Leonardo da Vinci (1452-1519) と
同時代に ドイツで活躍した
アルブレヒト・デューラー Albrecht Dürer (1471-1528)
の銅版画 メランコリア I (Melencolia I) の中にある
特殊な八面体の製作をしようと思っています。
http://de.wikipedia.org/wiki/Albrecht_D%C3%BCrer 参照
本来なら 作品を完成してから 製作方法を伝えるべきですが
やっと 諸量の計算ができたところです。
早く お伝えしようと思い 作ったばかりの BASIC のプログラムを
載せておきます。計算方法の思い違いがあるかもしれませんが
実際に作品を作ってゆけば 発見できるでしょう。
この多面体の諸量については諸説あるようですが
石津秀子さんの 論文を参考にさせていただきました。
http://www.seijo.ac.jp/pdf/falit/188/188-4.pdf

!! コピー開始 
! メランコリア I (Melencolia I) の八面体の製作に
! 必要な諸量の計算 <試案>

! 菱形の鋭角を 72度とする
! 菱形の短いほうの対角線を 1とする
! 短いほうの対角線を底とする二等辺三角形を考える
! この二等辺三角形で
! 底を周方向とする二つの三角錐と一つの反角柱を作る
! 二つの三角錐に反角柱を挟んで 平行六面体を作り 
! 長方向の両端をカットした形状を作る
! 八面体は球に外接するとして計算

OPTION ANGLE DEGREES
LET m001=sqr(3)/6
LET m002=sqr(3)/3
LET m003=72                     ! 72        菱形鋭角
LET m004=0.5/tan(m003/2)        ! .688190960235587  対角線長寸/2 
LET m005=sqr(m004^2-m001^2)     ! .62471870823327   三角錐の高さ 反角柱の高さ
LET m006=sqr((m002)^2+m005^2)   ! .85065080835204   稜寸
LET m007=acos((m002)/m006)      ! 47.2566160617882  三角錐の稜の仰角
LET m008=sqr(m002^2+(m005/2)^2) ! .656431031744764  反角柱の外接球半径
LET m009=atn((m005/2)/m002)     ! 28.4143751956601  反角柱の高さ巾角/2
LET m010=m007+m009              ! 75.6709912574483  稜の球内侵入角度
LET m011=m008*sin(90-m010)*2    ! .324919696232906  三角錐のカット残の稜寸
LET m012=m006-m011              ! .525731112119134  切り離しする三角錐の稜寸  
LET m013=m012/m011              ! 1.6180339887499   切り分け稜寸比 (黄金比)
LET m014=m012*sin(m003/2)*2     ! .618033988749895  カット面三角の辺寸
LET m015=asin((m006/2)/m008)    ! 40.3861775591967  長稜巾角/2
LET m016=asin((m011/2)/m008)    ! 14.3290087425517  短稜巾角/2
LET m017=asin((m014/2)/m008)    ! 28.0831980645294  底稜巾角/2
LET m018=90-m015                ! 49.6138224408033  長稜端角
LET m019=90-m016                ! 75.6709912574483  短稜端角
LET m020=90-m017                ! 61.9168019354706  底稜端角
LET m021=90+m003/2              ! 126               五角底角
LET m022=(90-m003/2)*2          ! 108               菱形鈍角
LET m023=90-m018                ! 40.3861775591967  長稜仰角
LET m024=m006*cos(m023)         ! .647936163294299  長稜投影寸
LET m025=asin(0.5/m024)*2       ! 101.010156834313  長・長稜開き角
LET m026=(360-m025)/2           ! 129.494921582844  長・短稜開き角
LET m027=90-m019                ! 14.3290087425517  短稜仰角
LET m028=90-m020                ! 28.0831980645294  底稜仰角
LET m029=cos(m028)              ! .882264951894171  底稜投影縮小比
LET m030=asin(0.5/m029)*2       ! 69.0440756710915  底・底稜開き角
LET m031=(360-m030)/2           ! 145.477962164454  底・短稜開き角
LET m032=m005+m011*cos(m003/2)*2! 1.1504498203524   八面体長寸
LET m033=(1+sqr(5))/2           ! 1.61803398874989  黄金比
LET m034=atn(1/m033)*2          ! 63.4349488229222  黄金比の鋭角
LET m035=sqr(2)                 ! 1.4142135623731   白銀比
LET m036=atn(1/m035)*2          ! 70.5287793655091  白銀比の鋭角

PRINT "《メランコリア》の八面体"
PRINT "菱形対角線短寸",1        ! 1            
PRINT "菱形対角線長寸",m004*2   ! 1.37638192047117
PRINT "菱形鋭角"      ,m003     ! 72
PRINT "長稜寸"        ,m006     ! .85065080835204  
PRINT "短稜寸"        ,m011     ! .324919696232906
PRINT "底稜寸"        ,m014     ! .618033988749895
PRINT "長稜仰角"      ,m023     ! 40.3861775591967
PRINT "短稜仰角"      ,m027     ! 14.3290087425517
PRINT "底稜仰角"      ,m028     ! 28.0831980645294
PRINT "長・長稜開き角/2",m025/2 ! 50.5050784171565 
PRINT "長・短稜開き角/2",m026/2 ! 64.747460791422
PRINT "底・底稜開き角/2",m030/2 ! 34.5220378355458 
PRINT "底・短稜開き角/2",m031/2 ! 72.738981082227 
PRINT "八面体長寸"    ,m032     ! 1.1504498203524
PRINT "外接球直径",m008*2       ! 1.31286206348953
PRINT
PRINT "参考数値"
PRINT "黄金比" , "1 :" ;m033    ! 1 : 1.61803398874989 
PRINT "黄金比菱形の鋭角" ,m034  ! 63.4349488229222
PRINT "白銀比" , "1 :" ;m035    ! 1 : 1.4142135623731
PRINT "白銀比菱形の鋭角" ,m036  ! 70.5287793655091

END ! コピー終わり

以下は 整数比に変換した値です

 .85065080835204  131 / 154 
 .324919696232906  77 / 237 
 .618033988749895 144 / 233 
 40.3861775591967 131 / 154
 14.3290087425517  47 / 184
 28.0831980645294 127 / 238 
 50.5050784171565 182 / 150
 64.747460791422  212 / 100
 34.5220378355458 119 / 173
 72.738981082227  177 /  55
追伸
新しいパソコンに買い替えてこのブログを作っています。
以前お伝えした ポーカーの確率計算のプログラムを
このパソコンで run してみました。すると 32秒で output です。
以前は 半日もかかったのに
隔世の感を 新たにしているところです。

四つの三角リングの組み物3

05[3,4,3,4] BASIC 組物

四つの三角リングの組み物について 部品寸法計算も含めて お伝えします。
すでに 製作方法を説明していますので 組物 のカテゴリーをクリックしてもらうと今回の説明と一緒に表示され確認ができます。

[3,4,3,4] Cuboctahedron 立方8面体の頂点と 組物の三角のかどの位置が 合同になります。
[3,4,3,4] は準正多面体なので 頂点から中芯までの寸法 ( 頂芯寸 ) は 一種類です。
しかも稜寸と同じです。

このことから
三角形と中芯点とでどきる三角錐は 正四面体であり
四角形と中芯点とでできる四角錐は 正八面体を二つにカットした形状です。
下画像右でその状態が確認できます。



二種類の二面角の合計は 誤差なしの 180度 つまり平面になります。

[3,3,3] 二面角 70.528779365509308631 ( 198/070 )
[3,3,3,3]二面角 109.47122063449069137 ( 198/070 )
平面の上に 3,4,3,4,3,4 と交互に三つづつ角錐を組合せて置き 上に三角錐の正四面体を載せると 稜線と中芯を含む平面上で立体の半分を形成することができます。

この平面は 正六角形であり この立体では 四方向に平面分割が考えられます。

四つの三角リングの組み物を 太さのない棒 つまり線で構成するとすれば 三角形は この六角形の面に接し 三角のかど点が飛び飛びに六角形のかどに接しています。

この飛び飛びの決定に二つの方法があり それによって 鏡面対称の立体ができます。

この線が太さのある棒であるとしても棒の外周線は面に接し 中芯方向に大きくなってゆき ある太さになれば 上下に離れて交差している棒が 接することになります。

以上の条件を考慮して
以下のプログラムで棒の外周寸と太さの関係を計算しています。

計算結果は 棒の太さを 1 とすると
外周寸は 9.13648175207322 となるということです。

これを 整数比に直し グラフ用紙にその比例関係をプロットすれば どの太さの棒に対しても 外周寸が把握できます。
10本の棒の太さの合計と外周寸との 近似の整数比は 139 対 127 になります。
1本でなく 10本での値を用いているのは 寸法の測定精度が高まるためです。
! コピー開始
! フリーウエアー 十進BASIC でプログラム     
! http://hp.vector.co.jp/authors/VA008683/ を参照  
! http://hp.vector.co.jp/authors/VA008683/english/index.htm 英語版        
! 三角リングの組物の円柱の太さと外周寸の計算
OPTION ANGLE DEGREES
! 三角錐の稜寸は 1 とする
! 故に三角リングの一辺は √3 となる
LET a001=SQR(8)/3           ! .942809041582063    またぎズレ角のコサイン値
LET a002=ATN(TAN(30)*a001)  ! 28.5608252178112    三角リングの辺を垂直とする
!                                                 面上のまたぎ角/2
LET a003=SIN(a002)*.5       ! .239045721866878    円柱の太さを 0 にしたときの 
!                                                 交差巾
LET a004=a003/3             ! 7.96819072889593E-2 円柱半径初期値
10
   LET a005=a004+.5         ! .579681907288959 → .594787624742743
   LET a006=SIN(a002)*a005  ! .277140959962116 → .28436287422823
   LET a007=a004*3          ! .239045721866878 → .28436287422823     
   LET a008=a006-a007       ! .038095238095238 → 0   
   IF a008 > 0 THEN
      LET a004=a006/3
      GOTO 10
   END IF
   PRINT  "円柱の直径を 1 としたときの三角リングの外周辺寸"
   PRINT  1/(a004/SQR(3)*2) !  9.13648175207322
END            
! コピー終わり   
追伸
ある国を経由して複数の PCから 一日に何百ものスパムが届きました。
意図が理解できず 驚きと戸惑い を感じています。
ブログへの コメントに対する アクセス機能を制限しましたが
まだ そこからのアクセス数や 閲覧数には 異常な状態が続いています。

sashimono[4,4,5] Archimedean solid

BASIC prism 多面体 諸量

下画像の 手前右が[4,4,5]正五角柱で 左がその双対です。



正多角柱 uniform prisms とその双対の 一般解を求める BASIC プログラムです。

OPTION ANGLE DEGREES              ! [ 4,4,n] Archimedean solid 
LET b001=5                        ! 5                角数を指定 今は 5
LET b002=360/b001                 ! 72               360/角数
LET b003=.5/SIN(b002/2)           ! .85065080835204  外接円柱半径
LET b004=.5/TAN(b002/2)           ! .688190960235587 四角面芯寸 
LET b005=SQR((SQR(2)/2)^2+b004^2) ! .986715155325983 外接球半径 
LET b006=SQR(b005^2-.5^2)         ! .85065080835204  稜芯寸 
LET b007=ASIN(.5/b005)            ! 30.4463843170652 仰角 
LET b008=COS(b007)                ! .862103722396976 角錐底かど・心 
LET b009=ASIN(SQR(2)/2/b008)      ! 55.1059009029448 4角接合角  
LET b010=(360-b009*2*2)/2         ! 69.7881981941104 5角接合角  
LET b011=ASIN(b004/b003)          ! 54               4面角 5双仰角 
LET b012=ACOS(b004/b003)          ! 36               5面角 4双仰角 

LET b013=.5/COS(b012)             ! .618033988749895 双4稜寸             
LET b014=b004/COS(b011)           ! 1.17082039324994 双5稜寸
LET b015=b013*2                   ! 1.23606797749979 双4,4稜寸 
LET b016=b013+b014                ! 1.78885438199984 双4,5稜寸  
LET b017=360/4/2                  ! 45               双4接合角/2 
LET b018=360/b001/2               ! 36               双5接合角/2  
LET b019=b006/COS(b012)           ! 1.05146222423827 4 頂芯寸     
LET b020=b006/COS(b011)           ! 1.44721359549996 5 頂芯寸  

PRINT "正";b001;"角柱"
PRINT "稜寸 = ", 1
PRINT "外接円柱半径 = ", b003
PRINT "頂芯寸 = ", b005
PRINT "稜芯寸 = ", b006
PRINT  "仰角 =",b007
PRINT  "片面 4 角形接合角 =",b009
PRINT  "片面";b001;"角形接合角 =",b010

PRINT " "
PRINT "正";b001;"角柱双対"
PRINT  " 4 稜寸 = ",b013
PRINT  b001;"稜寸 = ",b014
PRINT  " S 稜寸 = ",b015
PRINT  " L 稜寸 = ",b016
PRINT  " S / L  ",b015/b016
PRINT " 4 角接合角/2 =", b017
PRINT b001;"角接合角/2 =", b018
PRINT " 4 角仰角 = ", b012
PRINT b001;"角仰角 = ", b011
PRINT " 4 頂芯寸 = ", b019
PRINT  b001;"頂芯寸 = ",b020 
END ! プログラム終わり

計算数値の整数比
30.446 = 077/131
55.106 = 195/136
69.788 = 201/074
.69098 = 161/233 = S / L 
45.000 = 180/180
36.000 = 178/245
54.000 = 245/178

[3,3,3,n] Archimedean solid の計算

BASIC prism 多面体

[3,3,3,5] 反角柱 antiprism 諸量計算の BASIC のプログラムを載せておきます。
このプログラムは [3,3,3,5] の諸量計算ですが 角数を変えることで
色々な角数て計算出来ます。
角数を大きくすればするほど 双対多面体の長方向の寸法が格段に大きくなります。
そこで 辺寸が 10mm で 地球赤道周と同じ 正多角形での 双対多面体の長さはいくらかと
計算させると エラーになってしまいました。桁数が 大きすぎました。
約 4007500000 角形です。
別のソフトで計算すると 約二光年弱 (1.9861) の長さになりました。
このプログラムについては 次回にお伝えしようかと思っています。

! コピー開始

OPTION ANGLE DEGREES
! ------------------------------------------------------------
LET a001=5                      ! 5                 角数入力
! ------------------------------------------------------------
LET a002=360/a001               ! 72                360/角数
LET a003=.5/SIN(a002/2)         ! .85065080835204   外接円柱半径
LET a004=.5*TAN(a002/4)         ! .162459848116453  5角の辺・心寸
LET a005=SQR(3)/2               ! .866025403784439  3角かど・辺寸
LET a006=ASIN(a004/a005)        ! 10.8123169635717  3角面仰角  
LET a007=SQR(a005^2-a004^2)     ! .85065080835204   3角かど・辺寸 軸面投影
LET a008=SQR((a007/2)^2+A003^2) ! .951056516295154  外接球半径
LET a009=COS(a002/2)            ! .809016994374947  二等辺三角の底寸/2
LET a010=.5/A008                ! .525731112119133  角錐高
LET a011=ASIN(a010)             ! 31.717474411461   稜仰角
LET a012=SQR(1-a010^2)          ! .85065080835204   三角錐底のかど・心寸
LET a013=a008*COS(a011)         ! .809016994374948  稜芯寸
LET a014=ASIN(a009/a012)        ! 71.9999999999999  5角形接合角 
LET a015=(360-a014*2)/3/2       ! 36                3角形接合角

LET a016=360/3/2                ! 60                双3接合角/2
LET a017=.5/TAN(a016)           ! .288675134594813  双3辺心寸
LET a018=ASIN(a017/a013)        ! 20.9051574478893  双3仰角
LET a019=a017/COS(a018)         ! .309016994374948  双3稜寸
LET a020=360/a001/2             ! 36                双5接合角/2
LET a021=.5/TAN(a020)           ! .688190960235587  双5辺心寸
LET a022=ASIN(a021/a013)        ! 58.282525588539   双5仰角
LET a023=a021/COS(a022)         ! 1.30901699437495  双5稜寸
LET a024=a013/COS(a018)         ! .866025403784439 3頂芯寸
LET a025=a013/COS(a022)         ! 1.53884176858763 5頂芯寸
PRINT "反";a001;"角柱"
PRINT "稜寸 = ", 1
PRINT "外接円柱半径 = ", a003
PRINT "頂芯寸 = ", a008
PRINT "稜芯寸 = ", a013
PRINT  "仰角 =",a011
PRINT  "片面 3 角形接合角 =",a015
PRINT  "片面";a001;"角形接合角 =",a014

PRINT " "
PRINT "反";a001;"角柱双対"
PRINT  " 3 稜寸 = ",a019
PRINT  a001;"稜寸 = ",a023
PRINT  " S 稜寸 = ",a019*2
PRINT  " L 稜寸 = ",a019+a023
PRINT  " S / L  ",a019*2/(a019+a023)
PRINT " 3 角接合角/2 =", a016
PRINT a001;"角接合角/2 =", a020
PRINT " 3 角仰角 = ", a018
PRINT a001;"角仰角 = ", a022
PRINT " 3 頂芯寸 = ", a024
PRINT  a001;"頂芯寸 = ",a025 

END
! コピー終わり

ポーカーの確率 番外

BASIC ポーカーの確率

久しぶりの投稿です。
ブログの作成を 休止してはいません。

お伝えする内容が まだ整っていません。
今まで私が作った BASIC のプログラムで 気に入っているものを 載せておきます。
バソコンの黎明期頃に作ったプログラムの リメイク版です。
当時は 計算結果がでるまで 12時間ほどかかりました。
今は 数分ほどです。

ポーカー役手を全数チェックするものです。
! 以下をコピーして実行してください。

! フリーウエアー 十進BASIC でプログラム     
! http://hp.vector.co.jp/authors/VA008683/ を参照  
! http://hp.vector.co.jp/authors/VA008683/english/index.htm 英語版        
! ポーカーの確率計算
OPTION BASE 0
DIM A(52,1)
LET  TT$=TIME$
LET  C4C=0
LET  CfH=0
LET  C3C=0
LET  C2P=0
LET  C1P=0
LET  RSF=0
LET  SFL=0
LET  FLS=0
LET  STR=0
LET  NP=0
LET  B=0
LET  CNT1=0
LET  CNT2=0

!     52枚の札を1~52の番号付けをする
!        種類の区別は 0001, 0010, 0100, 1000 の4通り
!        数字の区別は 0000000000001, 0000000000010 ~ 1000000000000 の 13通り
!        種類と数字のペア52通り として 登録 
FOR I=0 TO 3
   FOR J=0 TO 12
      LET  B=B+1
      LET  A(B,0)=10^I
      LET  A(B,1)=10^J
   NEXT J
NEXT I

! 52枚の札を1~52の番号付けして、ゼロと重複を認めない5桁の53進数
!    として表現し、それぞれの5桁の数列の中で、上位にある数は下位にある数
!    より小さいという条件で数列をつくり 2598960通り作成
!    5枚の札の組み合わせの特徴の表現は <例えばRSF>
!     種類 0005, 0050, 0500, 5000 と 数字 1000000001111 の 4種の組合せ  

PRINT CNT1,TT$                                    

FOR K= 1 TO 52-4
   FOR L=K+1 TO 52-3
      FOR M=L+1 TO 52-2
         FOR N=M+1 TO 52-1
            FOR O=N+1 TO 52
               LET  AA =A(K,0)+A(L,0)+A(M,0)+A(N,0)+A(O,0)+9*10^4
               LET  BB =A(K,1)+A(L,1)+A(M,1)+A(N,1)+A(O,1)+9*10^13
               LET  AA$=STR$(AA) 
               LET  BB$=STR$(BB)
               LET  A$=AA$(2:5)
               LET  B$=BB$(2:14) 
               LET  X=POS(B$,"4",1)  ! 同じ数字が4枚あるか
               IF X > 0 THEN 
                  LET  C4C=C4C+1     !4カード
                  GOTO 1000
               END IF
               LET  Y=POS(B$,"3",1)
               IF Y > 0 THEN GOTO 900 ELSE GOTO 901
900                REM
                   IF POS(B$,"2",1)  >0 THEN 
                      LET  CFH=CFH+1  !フルハウス
                      GOTO 1000
                   END IF
                   LET  C3C=C3C+1     !3カード
                   GOTO 1000
901                REM
                   LET  Z=POS(B$,"2",1)
                   IF Z > 0 THEN GOTO 902 ELSE GOTO 903

902                REM
                   IF POS(B$,"2",Z+1)  >0 THEN 
                      LET  C2P=C2P+1  !2ペアー
                      GOTO 1000
                   END IF
                   LET  C1P=C1P+1     !1ペアー
                   GOTO 1000              
903                REM    1枚も同じ数が無い数列                   
                   LET  ZZ=POS(A$,"5",1)                          
                   LET  ZX=POS(B$,"1",1) 
                   LET  ZX$=B$(ZX+1:ZX+4)
                   LET  ZY$=B$(10:13)
                   IF ZZ=0 THEN  GOTO 904 ELSE GOTO 905             
904                REM              
                   IF          ZX$="1111" THEN 
                      LET  STR=STR+1
                      GOTO 1000 
                   END IF
                   IF ZX=1 AND ZY$="1111" THEN 
                      LET  STR=STR+1
                      GOTO 1000
                   END IF
                   LET  NP =NP+1 
                   GOTO 1000 
905                REM  
                   IF          ZX$="1111" THEN 
                      LET  SFL=SFL+1
                      GOTO 1000 
                   END IF
                   IF ZX=1 AND ZY$="1111" THEN 
                      LET  RSF=RSF+1
                      GOTO 1000
                   END IF           
                   LET  FLS=FLS+1                   
1000                REM
                    LET  CNT1=CNT1+1
                    LET  CNT2=CNT2+1 
                    IF CNT2=100000 THEN 
                       LET  CNT2 = 0 
                       PRINT CNT1,TIME$                                       
                    END IF
                 NEXT O
              NEXT N
           NEXT M
        NEXT L
     NEXT K
     PRINT CNT1,TIME$                                       

     PRINT "Royal flush          =",RSF
     PRINT "Straight flush       =",SFL
     PRINT "Four of a kind       =",C4C
     PRINT "Full house           =",CFH
     PRINT "Flush                =",FLS
     PRINT "Straight             =",STR        
     PRINT "Three of a kind      =",C3C
     PRINT "Two pair             =",C2P
     PRINT "One pair             =",C1P
     PRINT "No pair              =",NP 
     PRINT "Total                =",CNT1    
  END
! コピー終わり

私のパソコンでは RUN して 1分 34秒後に 以下の OUT PUT がありました。

Royal flush          =   4 
Straight flush       =   36 
Four of a kind       =   624 
Full house           =   3744 
Flush                =   5108 
Straight             =   10200 
Three of a kind      =   54912 
Two pair             =   123552 
One pair             =   1098240 
No pair              =   1302540 
Total                =   2598960

諸量の計算プログラム 3 双対多面体

BASIC 多面体 諸量

[3,4,4,4] の複合多面体 compounds の製作の説明をすべきですが
同じ作業を長く続けるのが苦手な私は 稜部品の製作が 遅々として進んでいません。
5×5 のすす竹で 12cm の大きさで作ろうとしています。

時間稼ぎとして 双対多面体の諸量計算のシンプルな BASIC プログラムを お伝えしておきます。

!! コピー開始

! 双対多面体の諸量の計算
! 元の多面体の稜寸を 1 として

OPTION ANGLE DEGREES
! 求める双対多面体に対応する元の多面体の
! 稜芯寸を入力 し 正n角形の 角数を 入力
! *********************************
LET b00=1.30656296487639 ! 稜芯寸
LET b01=3 ! 角数
! *********************************
LET b02=360/b01/2 ! 接合角/2
LET b03=.5/TAN(b02) ! 辺心寸
LET b04=ASIN(b03/b00) ! 仰角
LET b05=b03/COS(b04) ! 稜寸
PRINT "稜寸 = "; 1
PRINT "稜芯寸 = "; b00
PRINT "正n角形 = "; b01
PRINT "接合角/2 = "; b02
PRINT "仰角     = "; b04
PRINT "双対稜寸 = "; b05

END
! コピー終わり

諸量の計算プログラム 2

BASIC 多面体 諸量

A4 の方眼紙 (section paper) で 角度や 寸法比の値を得たいときに
必要な数値を 整数/整数 に変換する BASIC のプログラムをお伝えします。
以下をコピーし 実行してください。

!! コピー開始

OPTION ANGLE DEGREES

! a00 に 数値入力 
! 対辺/底辺 に変換したい角度は 90度より小さく 5度より大きい
! 整数/整数 に変換したい数値は 5 以下  
! 上記の範囲で 計算ができます
!*************************
LET a00= 20.9410204722436
!*************************

LET a01=a00 ! 入力値加工
LET a02=250 ! 長いほうの罫線表示巾の寸法 
LET a03=180 ! 短いほうの罫線表示巾の寸法
LET a04=1 ! 誤差初期値
LET a05=0 ! 小さい方の整数  
LET a06=0 ! 大きい方の整数
LET a07=0 ! swap サイン

IF a01>5 THEN ! 角度の変換か数値の変換かの判定
   IF a01>45 THEN ! 45度より大の場合 余角で計算
      LET a01=90-a01
      LET a07=1 ! swap サイン on
   END IF
   LET a01=TAN(a01)
END IF

IF a01>1 THEN ! すべて 1より 小で計算
   LET a01=1/a01
   LET a07=1 ! swap サイン on
END IF

FOR x=a02 TO 1 STEP -1
   LET a08=ROUND(x*a01,0) ! 短いほうの整数値
   IF a08>180 THEN GOTO 100 ! 短いほうが 180以下になるまで計算しない
   LET a09=ABS(a01-a08/x) ! 誤差の絶対値
   IF a09< a04 THEN ! 誤差が最小か判定
      LET a04=a09 ! 最小誤差値を入れる
      LET a05=a08 ! 短いほうの数を入れる
      LET a06=x ! 長いほうの数を入れる
   END IF 
100
    NEXT x
    PRINT a00 ! 入力値表示

    IF a07=1 THEN SWAP a05,a06 ! swap処理

    PRINT a05;"/";a06 ! 演算値表示

 END
! コピー終わり

諸量の計算プログラム

BASIC 多面体 諸量

フリーウェアーソフトの 十進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)  で表示しています。