心配ある事情
図形問題を出題するよ。図のように真球Aがあり、中心を通るX-Z平面で体積を半分にした半球B、更に中心を通るY-Z平面で体積を1/4にした四分球C、更に中心を通るX-Y平面で体積を1/8にした八分球Dがある。これらの表面積を既約な整数比で表せ。中学生以上を対象にした問題です。シンキングタ~イムさて、補助線を引いたりすることはない、かなり代数的な計算だけの図形問題です。Aの表面積は、4πr2Bの表面積は、4πr2/2+πr2=3πr2Cの表面積は、4πr2/4+πr2=2πr2Dの表面積は、4πr2/8+πr2・3/4=5πr2/4ということで、答え A:B:C:D=16:12:8:5どうですか?A、B、Cまで順調に行ったのに、Dで変化してしまいました。これらを踏まえて、真球ではなくて、立方体ならどうなるでしょうか?シンキングタ~イム1辺が2の立方体をイメージすると、Aは、2×2×6=24Bは、24÷2+2×2=16Cは、24÷4+2×2=10Dは、1×1×6=6よって、答え A:B:C:D=12:8:5:32つを並べてみると、16:12:8:512:8:5:312:8:5という共通な部分があるのが奇妙だなと感じる。さてさて、ちょっとプログラミングについても書いてみようかと思う。JavascriptでHTMLのキャンバスに図を描くことが出来るわけだが、今回の図は円の他に楕円を描いている。楕円を描くことは私には珍しいので、ちょっとばかり戸惑うのである。真円の関数:context.arc(x, y, radius, startAngle, endAngle, AntiClockWize);楕円の関数:context.ellipse(x, y, xRadius, yRadius, rotateAngle, startAngle, endAngle, AntiClockWize);おそらく、こんな感じで書籍などには掲載されていることだろう。自慢じゃないが、HTML、Javascript、CSS関連の書籍を買った記憶がない。x, yは中心座標、radiusは半径これは解るだろう。ただし、一般的にコンピュータの世界では、x軸の正は右、負は左、y軸の正は下、負は上、なので、注意が必要だ。antiClockWiseは反時計回りのことで、trueかfalseを示す必要があり、trueは反時計回り、falseは時計回りを意味する。これを踏まえて、startAngle、endAngleで開始角度、終了角度をラジアンで指定することで、円弧を描けるということになる。さて、楕円はというと、xRadiusはx軸方向、yRadiusはy軸方向の半径。これはわかりやすい。rotateAngleは回転角で、こちらもラジアンで指定する。これも問題ないだろう。問題はstartAngle、endAngleである。例えば、今回描いたいくつかの楕円があるが、回転角が0˚だったので、0˚=0、90˚=Math.PI/4、180˚=Math.PI/2、270˚=Math.PI*3/4、といった角度は問題ない45˚の射投影法で描いているので、B、C、DのstartAngle、endAngleが、どうやって求めようかとなってしまう。Aは、context.beginPath();context.arc(x, y, r, 0, 2*Math.PI, true);context.stroke();context.beginPath();context.ellipse(x, y, r, r/3, 0, 0, 2*Math.PI, true);context.stroke();としたので、Cの水平面のstartAngleとendAnglecontext.ellipse(x, y, r, r/3, 0, -Math.PI/4, -Math.PI*3/4, true);で良さそうにみえるが、そうではなくて、context.ellipse(x, y, r, r/3, 0, -Math.atan2(3, 1), -Math.atan2(3, 1)-Math.PI, true);こんな感じになり、垂直面は、context.ellipse(x, y, r, r/3, 0, -Math.atan2(1, 3), -Math.atan2(1, 3)-Math.PI, true);といったようになる。なぜ、こうなるのかは各自考えてね。図を綺麗に描くってのも、それなりに面倒なんだよね。まぁ、好きで描いているからいいんだけれどもね。ではではa img { background-color: lightgray;}table.renbun td { border: 0px; padding: 2px 2px 2px 2px; vertical-align: middle; white-space: nowrap; }table.renbun td.ul { border-style: solid; border-width: 0px 0px 1px 0px; }table.renbun td.ol { border-style: solid; border-width: 1px 0px 0px 0px; }table.ans td:nth-child(1) { text-align: center; }table.ans td div { width: 265px; overflow-x: scroll; }table.ans td div span { white-space: nowrap; }table.test td {white-space: nowrap;padding: 0 5px;text-align: right;} .u {border-bottom-style: solid;border-bottom-width: 1px;text-align: center;}table#list td { padding: 0 2px; font-family: monospace; }.no { display:inline-block; text-align:center; vertical-align:middle;}.ni { display:inline-block; text-align:center; vertical-align:middle; line-height:100%;}.ns { font-family:serif; font-size:250%; line-height:100%;}.io { display:inline-block; white-space:nowrap;}.io sub { vertical-align:bottom; white-space:nowrap;}.io sup { vertical-align:top; white-space:nowrap;}.ii { display:inline-block; vertical-align:middle;}.is { vertical-align:middle; font-family:arial;// font-family: sans-serif; font-size:300%; line-height:70%; font-weight: 5;// margin: 0 -15px 0 -10px;}.ii2{ display:inline-block; line-height:100%; vertical-align:middle;}.is2{ line-height:155%;// line-height:109%; font-family:sans-serif;}.mo { display:inline-block; vertical-align:middle;}.mi { display:inline-block; white-space:nowrap; vertical-align:middle; line-height:100%;}html:not([lang]) .mp { display:inline-block; line-height:100%; font-size:120%; font-family:sans-serif; margin: 0; padding: 0;}.mp{ display:inline-block; line-height:100%; font-size:120%; font-family:serif; margin: 0; padding: 0;}.md{ display:inline-block; line-height:120%; text-align:right; margin: 0 5px;}.lo { display:inline-block; text-align:center; vertical-align:middle;}.li { display:inline-block; text-align:center; vertical-align:middle; line-height:100%; margin: 0 5px 0 0;}.ls { font-family:serif; font-size:120%; line-height:100%;}.fb {border-style:solid;border-width:1px 0 0 0;margin:1px 0;}.fo {display:inline-block;text-align:center;vertical-align:middle;white-space: nowrap;}.fo span {margin: 0 3px;}.fo span span {margin: 0 0;}.article table {white-space: nowrap;}.ro{display:inline-block;white-space:nowrap;line-height:100%;position:static;}.rt{font-family: 'Meiryo', 'YuGothic', 'Gothic', sans-serif;}.ri{display:inherit;border-style:solid;border-width:1px 0 0 0;padding:0 1px 0 1px;margin:1px 0 0 0;position:relative; left:-1.5px;}article table {margin-bottom: 0 !important;}article table td {white-space: nowrap;text-align: center;}