: Maxima数学A自習教材開発
教材の概要
2図形の性質 2)空間図形
 8.直線と平面
 9.空間図形と多面体
 202.研究・章末問題

Maxima数学I自習教材試行報告用紙(Word)
Maxima数学I自習教材試行報告用紙(PDF)

: 教材の概要

活動時間 
 自宅での予習か授業初めの5分程度
活動概要
 1 タブレット等を用いてトライ
  1) 教科書の該当ページを開く
  2) このWebページを開く
  3) Maxima on lineのWebページを開く
  4) 該当コマンドをMaximaOnLineにコピペして、実行
 2 自分なりの感触、着想
  1) 自分なりに、実行結果を見て、気づいたり感じたりすることがないか、考えてみる。
  2) ワークシートに、考えてみたこと(意見・質問・感じたこと)を書く
  3) ワークシートを、事前に提出する場合は、課題提出フォームを使うこと。
 3 問題の雰囲気を2で感じてから、授業へ
  1) 班活動などで自分の考えを仲間に伝える
  2) 仲間の考えを受け止める
  3) 筋が通って、見通しのよい解法、数学的な論点をうまく処理した解法をまとめる


http://www.ac.cyberhome.ne.jp/~konoha/KNOPPIX/MaximaBook.pdf
参照テキスト
 数研出版新編数学A

: 第2章図形の性質
:  第2節空間図形
  8.直線と平面

   A 2直線の位置関係
◆コマンド番号136
●交わる、平行、ねじれの位置、なす角
なす角は●●●●●●●●●●●●●●●●
kill(all) $
MONDAI:"練習27 136 立方体ABCD-EFGHについて、AB,DHのなす角は"/*(▲変更部分) */ $
KOUSATU:"各直線に平行な同一平面上の直線において計量、・・・"$

KANSUU:"定数・関数定義";
ap:[8.3/6,6.8/6] /* 2dグラフのアスペクト比の調整 */ $
ap3:[5.7/6,5.7/6,2.2/6] /* 3dグラフのアスペクト比の調整 */ $
r2d(A):=A/%pi*180 /* 弧度→角度 */$
d2r(A):=A/180*%pi /* 角度→弧度 */$
dcos(A):=cos(d2r(A));dsin(A):=sin(d2r(A)) /* 角度の余弦、正弦 */$
dacos(s):=r2d(acos(s));dasin(s):=r2d(asin(s)) /* 角度の逆余弦、逆正弦 */$
dis(p1,p2):=sqrt((p2-p1).(p2-p1)) /* 2点間の距離 */$
ppie(p1,p2,P1,P2):=p1*P2/(P1+P2)+p2*P1/(P1+P2) /* p1,p2のP1:P2の内分・外分点 */$
A(p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p2,p3)^2-dis(p3,p1)^2)/(2*dis(p1,p2)*dis(p2,p3))) /* 3点から角度 */$
A3(p4,p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p3,p4)^2-dis(p4-p3,p2-p1)^2)/(2*dis(p1,p2)*dis(p3,p4))) /* 空間の4点から角度 */$
As(s1,s2,s3):=dacos((s2^2+s3^2-s1^2)/(2*s2*s3)) /* 3辺から角度 */$
lAss(A,s2,s3):=sqrt(s2^2+s3^2-2*s2*s3*dcos(A)) /* 2辺と1角から辺 */$
S(p1,p2,p3):=dis(p1,p2)*dis(p2,p3)*dsin(A(p3,p2,p1))/2 /* 3点から面積 */$
vp(p1,p2,p3):=p2+(p1-p2).(p3-p2)/dis(p3,p2)*(p3-p2)/dis(p3,p2) /* p1から直線p2p3へ下した垂線の足 */$
lPB(p1,p2):=([x,y,z]-(p1+p2)/2).(p2-p1)=0 /* p1,p2の垂直二等分面 */$
cir(p,r,tm,tM):=parametric(p[1]+r*dcos(t),p[2]+r*dsin(t),t,tm,tM) /* 中心p、半径r、偏角tm->tMの円弧 */$
lab(nam,p):=label([nam,p[1],p[2],p[3]]) /* 図中の文字 */$
sE(p1,p2,p3,p4):=block([p,q,s,a],e1:p1+p*(p2-p1),e2:p3+q*(p4-p3),s:solve([e1[1]=e2[1],e1[2]=e2[2]],[p,q]),a:subst(s[1],e1)) /* 線分p1p2と線分p3p4の交点 */$

view0:view=[60,120] /* "北極から60度、(0,-1,0)から反時計回りに120度の方向から原点を見る" */$
pvA:[0,0,1];pvB:[1,0,1];pvC:[1,1,1];pvD:[0,1,1];
pvE:[0,0,0];pvF:[1,0,0];pvG:[1,1,0];pvH:[0,1,0];
KAITOU:A3(pvA,pvB,pvD,pvH)/*(▲変更部分) */$
ptL1:[pvF,pvE,pvH,pvE,pvA];ptL2:[pvB,pvA,pvD,pvC,pvB,pvF,pvG,pvC,pvG,pvH,pvD];
ptL3:[pvA,pvB];ptL4:[pvD,pvH]/*(▲変更部分) */;
labA:lab("A",pvA+[0,0,0.2]);labB:lab("B",pvB+[0,0,0.2]);labC:lab("C",pvC+[0,0,0.2]);labD:lab("D",pvD+[0,0,0.2]);
labE:lab("E",pvE+[0,0,-0.2]);labF:lab("F",pvF+[0,0,-0.2]);labG:lab("G",pvG+[0,0,-0.2]);labH:lab("H",pvH+[0,0,-0.2]);

zm:-0.1$zM:1.1$xm:zm/2.2*5.7$xM:zM/2.2*5.7$ym:zm/2.2*5.7$yM:zM/2.2*5.7$
title1:title=" " /* 図形のタイトル(頂点の位置) */;
wxdraw3d(title1,
/*....*/xrange=[xm,xM],yrange=[ym,yM],zrange=[zm,zM],
/*....*/view0 ,
points_joined =true,
labA,labB,labC,labD,labE,labF,labG,labH,
line_width=3,color=red,points(ptL3),points(ptL4),
line_width=1,color=black,points(ptL1),
line_width=2,color=blue,points(ptL2)
) /*pLのグラフ表示*/$
SUJIMITI:"平面ABFEで、DHに平行な(  )を注目し、∠(  )を計量する。"/*(▲変更部分) */$
print(MONDAI)$print(SUJIMITI)$print(KAITOU)$

◎上のMaximaコマンドを実行せよ。
◎上のMaximaコマンドを、以下のように修正して実行し、結果を比較して考察せよ。
MONDAI:"練習27 136 立方体ABCD-EFGHについて、AB,EGのなす角は"/*(▲変更部分) */ $
KAITOU:A3(pvA,pvB,pvE,pvG)/*(▲変更部分) */$
ptL3:[pvA,pvB];ptL4:[pvE,pvG]/*(▲変更部分) */;
SUJIMITI:"平面ABCDで、EGに平行な(  )を注目し、∠(  )を計量する。"/*(▲変更部分) */$


   B 直線と平面の位置関係
◆コマンド番号137

●●●●●●●●●●●●●●●●
kill(all) $
MONDAI:"例題5 137正四面体ABCDで、辺ABの中点Mとすると、辺ABは平面CDMに垂直か" /*(▲変更部分0) */$
KOUSATU:""$

KANSUU:"定数・関数定義";
ap:[8.3/6,6.8/6] /* 2dグラフのアスペクト比の調整 */ $
ap3:[5.7/6,5.7/6,2.2/6] /* 3dグラフのアスペクト比の調整 */ $
r2d(A):=A/%pi*180 /* 弧度→角度 */$
d2r(A):=A/180*%pi /* 角度→弧度 */$
dcos(A):=cos(d2r(A));dsin(A):=sin(d2r(A)) /* 角度の余弦、正弦 */$
dacos(s):=r2d(acos(s));dasin(s):=r2d(asin(s)) /* 角度の逆余弦、逆正弦 */$
dis(p1,p2):=sqrt((p2-p1).(p2-p1)) /* 2点間の距離 */$
ppie(p1,p2,P1,P2):=p1*P2/(P1+P2)+p2*P1/(P1+P2) /* p1,p2のP1:P2の内分・外分点 */$
A(p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p2,p3)^2-dis(p3,p1)^2)/(2*dis(p1,p2)*dis(p2,p3))) /* 3点から角度 */$
A3(p4,p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p3,p4)^2-dis(p4-p3,p2-p1)^2)/(2*dis(p1,p2)*dis(p3,p4))) /* 空間の4点から角度 */$
As(s1,s2,s3):=dacos((s2^2+s3^2-s1^2)/(2*s2*s3)) /* 3辺から角度 */$
lAss(A,s2,s3):=sqrt(s2^2+s3^2-2*s2*s3*dcos(A)) /* 2辺と1角から辺 */$
S(p1,p2,p3):=dis(p1,p2)*dis(p2,p3)*dsin(A(p3,p2,p1))/2 /* 3点から面積 */$
vp(p1,p2,p3):=p2+(p1-p2).(p3-p2)/dis(p3,p2)*(p3-p2)/dis(p3,p2) /* p1から直線p2p3へ下した垂線の足 */$
lPB(p1,p2):=([x,y,z]-(p1+p2)/2).(p2-p1)=0 /* p1,p2の垂直二等分面 */$
cir(p,r,tm,tM):=parametric(p[1]+r*dcos(t),p[2]+r*dsin(t),t,tm,tM) /* 中心p、半径r、偏角tm->tMの円弧 */$
lab(nam,p):=label([nam,p[1],p[2],p[3]]) /* 図中の文字 */$
sE(p1,p2,p3,p4):=block([p,q,s,a],e1:p1+p*(p2-p1),e2:p3+q*(p4-p3),s:solve([e1[1]=e2[1],e1[2]=e2[2]],[p,q]),a:subst(s[1],e1)) /* 線分p1p2と線分p3p4の交点 */$
perp(p1,p2):=block([p],p:[p1[2]*p2[3]-p1[3]*p2[2],p1[3]*p2[1]-p1[1]*p2[3],p1[1]*p2[2]-p1[2]*p2[1]],p:p/dis([0,0,0],p)) /*p1,p2に対し垂直な単位ベクトル*/$

view0:view=[60,45] /* "北極から60度、(0,-1,0)から反時計回りに45度の方向から原点を見る" */$
pvA:[0.5,sqrt(3)/6,dsin(As(sqrt(3)/2,sqrt(3)/2,1))];pvB:[0,0,0];pvC:[1,0,0];pvD:[0.5,sqrt(3)/2,0];
perp(pvC-pvB,pvD-pvB);
pvM:(pvA+pvB)/2;
KAITOU:["∠CMA=",A(pvC,pvM,pvA),"∠DMA",A(pvD,pvM,pvA),"により、垂直"],numer /*(▲変更部分1) */$
ptL1:[pvB,pvD];ptL2:[pvB,pvA,pvD,pvC,pvB,pvM,pvD,pvC,pvM,pvA,pvC];
ptL3:[pvA,pvM];ptL4:[pvC,pvM,pvD]/*(▲変更部分2) */;
labA:lab("A",pvA+[0,0,0.2]);labB:lab("B",pvB+[0,0,0.2]);labC:lab("C",pvC+[0,0,0.2]);labD:lab("D",pvD+[0,0,0.2]);
labM:lab("M",pvM+[0,0,0.2]);

zm:0$zM:0.9$xm:zm/2.2*5.7$xM:zM/2.2*5.7$ym:zm/2.2*5.7$yM:zM/2.2*5.7$
title1:title=" " /* 図形のタイトル(頂点の位置) */;
wxdraw3d(title1,
/*....*/xrange=[xm,xM],yrange=[ym,yM],zrange=[zm,zM],
/*....*/view0 ,
points_joined =true,
labA,labB,labC,labD,labM,
line_width=3,color=red,points(ptL3),points(ptL4),
line_width=2,color=blue,points(ptL2),
line_width=1,color=black,points(ptL1)
) /*pLのグラフ表示*/$
SUJIMITI:"平面ABFEで、DHに平行な(  )を注目し、∠(  )を計量する。"/*(▲変更部分3) */$
print(MONDAI)$print(SUJIMITI)$print(KAITOU)$

◎上のMaximaコマンドを実行せよ。
◎上のMaximaコマンドを、以下のように修正して実行し、結果を比較して考察せよ。
MONDAI:"辺ACが平面CDMとなす角は、(平面CDMに垂直な直線と辺ACがなす角の余角(併せて90°となる相手の角)で決められるので、)"/*(▲変更部分0) */ $
KAITOU:90-A3(pvA,pvB,pvA,pvC),numer/*(▲変更部分1) */$
ptL3:[pvM,pvC,pvD,pvM];ptL4:[pvA,pvC]/*(▲変更部分2) */;
SUJIMITI:"辺ABが平面CDMと垂直で、辺ABと辺ACのなす角は(  )だから、平面CDMと辺ACのなす角は(  )"/*(▲変更部分3) */$

◆コマンド番号138

●●●●●●●●●●●●●●●●
kill(all) $
MONDAI:"練習28 138正四面体ABCDで、Aから面BCDに下した垂線をAO、Oから辺BCに下した垂線をOEとする。BCは平面AEOに垂直か" /*(▲変更部分0) */$
KOUSATU:""$

KANSUU:"定数・関数定義";
ap:[8.3/6,6.8/6] /* 2dグラフのアスペクト比の調整 */ $
ap3:[5.7/6,5.7/6,2.2/6] /* 3dグラフのアスペクト比の調整 */ $
r2d(A):=A/%pi*180 /* 弧度→角度 */$
d2r(A):=A/180*%pi /* 角度→弧度 */$
dcos(A):=cos(d2r(A));dsin(A):=sin(d2r(A)) /* 角度の余弦、正弦 */$
dacos(s):=r2d(acos(s));dasin(s):=r2d(asin(s)) /* 角度の逆余弦、逆正弦 */$
dis(p1,p2):=sqrt((p2-p1).(p2-p1)) /* 2点間の距離 */$
ppie(p1,p2,P1,P2):=p1*P2/(P1+P2)+p2*P1/(P1+P2) /* p1,p2のP1:P2の内分・外分点 */$
A(p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p2,p3)^2-dis(p3,p1)^2)/(2*dis(p1,p2)*dis(p2,p3))) /* 3点から角度 */$
A3(p4,p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p3,p4)^2-dis(p4-p3,p2-p1)^2)/(2*dis(p1,p2)*dis(p3,p4))) /* 空間の4点から角度 */$
As(s1,s2,s3):=dacos((s2^2+s3^2-s1^2)/(2*s2*s3)) /* 3辺から角度 */$
lAss(A,s2,s3):=sqrt(s2^2+s3^2-2*s2*s3*dcos(A)) /* 2辺と1角から辺 */$
S(p1,p2,p3):=dis(p1,p2)*dis(p2,p3)*dsin(A(p3,p2,p1))/2 /* 3点から面積 */$
vp(p1,p2,p3):=p2+(p1-p2).(p3-p2)/dis(p3,p2)*(p3-p2)/dis(p3,p2) /* p1から直線p2p3へ下した垂線の足 */$
lPB(p1,p2):=([x,y,z]-(p1+p2)/2).(p2-p1)=0 /* p1,p2の垂直二等分面 */$
cir(p,r,tm,tM):=parametric(p[1]+r*dcos(t),p[2]+r*dsin(t),t,tm,tM) /* 中心p、半径r、偏角tm->tMの円弧 */$
lab(nam,p):=label([nam,p[1],p[2],p[3]]) /* 図中の文字 */$
sE(p1,p2,p3,p4):=block([p,q,s,a],e1:p1+p*(p2-p1),e2:p3+q*(p4-p3),s:solve([e1[1]=e2[1],e1[2]=e2[2]],[p,q]),a:subst(s[1],e1)) /* 線分p1p2と線分p3p4の交点 */$
perp(p1,p2):=block([p],p:[p1[2]*p2[3]-p1[3]*p2[2],p1[3]*p2[1]-p1[1]*p2[3],p1[1]*p2[2]-p1[2]*p2[1]],p:p/dis([0,0,0],p)) /*p1,p2に対し垂直な単位ベクトル*/$

view0:view=[60,45] /* "北極から60度、(0,-1,0)から反時計回りに45度の方向から原点を見る" */$
pvA:[0.5,sqrt(3)/6,dsin(As(sqrt(3)/2,sqrt(3)/2,1))];pvB:[0,0,0];pvC:[1,0,0];pvD:[0.5,sqrt(3)/2,0];
pvO:[pvA[1],pvA[2],0];pvE:vp(pvO,pvB,pvC) /*(▲変更部分1) */;
KAITOU:["∠OEB=",A(pvO,pvE,pvB),"∠AEB",A(pvA,pvE,pvB),"により、垂直"],numer /*(▲変更部分1) */$
ptL1:[pvB,pvD];ptL2:[pvB,pvA,pvD,pvC,pvA,pvC,pvB];
ptL3:[pvB,pvE];ptL4:[pvA,pvE,pvO,pvA]/*(▲変更部分2) */;
labA:lab("A",pvA+[0,0,0.2]);labB:lab("B",pvB+[0,0,0.2]);labC:lab("C",pvC+[0.2,0,0]);labD:lab("D",pvD+[0,0,0.2]);
labO:lab("O",pvO+[0.2,0,0]);labE:lab("E",pvE+[0,0,-0.2]);

zm:0$zM:0.9$xm:zm/2.2*5.7$xM:zM/2.2*5.7$ym:zm/2.2*5.7$yM:zM/2.2*5.7$
title1:title=" " /* 図形のタイトル(頂点の位置) */;
wxdraw3d(title1,
/*....*/xrange=[xm,xM],yrange=[ym,yM],zrange=[zm,zM],
/*....*/view0 ,
points_joined =true,
labA,labB,labC,labD,labO,labE,
line_width=3,color=red,points(ptL3),points(ptL4),
line_width=2,color=blue,points(ptL2),
line_width=1,color=black,points(ptL1)
) /*pLのグラフ表示*/$
SUJIMITI:"AOは平面BCDMと垂直だから、辺BCとAOは(  )、辺BCとOEは(  )。よって、辺BCはAOとOEを含む面AEOと(  )"/*(▲変更部分3) */$
print(MONDAI)$print(SUJIMITI)$print(KAITOU)$

◎上のMaximaコマンドを実行せよ。
◎上のMaximaコマンドを、以下のように修正して実行し、結果を比較して考察せよ。
MONDAI:"頂点Aから辺BCに下した垂線をAE、底面BCD上にEから引いた辺BCの垂線をEF、AからEFに引いた垂線をAOとすると、AOは線分BOと垂直か、底面BCDと垂直か"/*(▲変更部分0) */ $
pvE:vp(pvA,pvB,pvC);pvF:pvB+dis(vp(pvD,pvB,pvC),pvB)/dis(pvE,pvB)*(pvD-pvB);pvO:vp(pvA,pvE,pvF) /*(▲変更部分1) */;
KAITOU:["∠AOB=",A(pvA,pvO,pvB),"∠AOE",A(pvA,pvO,pvE),"により、どちらも垂直"],numer /*(▲変更部分1) */$
ptL3:[pvB,pvE,pvO,pvB];ptL4:[pvA,pvE,pvO,pvA]/*(▲変更部分2) */;
SUJIMITI:"AB^2=BE^2+AE^2、AE^2=EO^2+AO^2、BO^2=BE^2+EO^2から、AB^2=(  )+AO^2となり、AOはBOと(  )。一方、AOはEOと(  )だから、AOは底面BCDと(  )"/*(▲変更部分3) */$


   C 2平面の位置関係
◆コマンド番号139

●●●●●●●●●●●●●●●●
kill(all) $
MONDAI:"139 2平面の交線がAC、AC上の点Oから各平面への垂線がOB,ODのとき、2平面のなす角は" /*(▲変更部分0) */$
KOUSATU:"交線を軸として、一方の垂線を回転させると他方の垂線に重なる。この回転角が2平面のなす角"$

KANSUU:"定数・関数定義";
ap:[8.3/6,6.8/6] /* 2dグラフのアスペクト比の調整 */ $
ap3:[2,2,1] /* 3dグラフのアスペクト比の調整 */ $
r2d(A):=A/%pi*180 /* 弧度→角度 */$
d2r(A):=A/180*%pi /* 角度→弧度 */$
dcos(A):=cos(d2r(A));dsin(A):=sin(d2r(A)) /* 角度の余弦、正弦 */$
dacos(s):=r2d(acos(s));dasin(s):=r2d(asin(s)) /* 角度の逆余弦、逆正弦 */$
dis(p1,p2):=sqrt((p2-p1).(p2-p1)) /* 2点間の距離 */$
ppie(p1,p2,P1,P2):=p1*P2/(P1+P2)+p2*P1/(P1+P2) /* p1,p2のP1:P2の内分・外分点 */$
A(p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p2,p3)^2-dis(p3,p1)^2)/(2*dis(p1,p2)*dis(p2,p3))) /* 3点から角度 */$
A3(p4,p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p3,p4)^2-dis(p4-p3,p2-p1)^2)/(2*dis(p1,p2)*dis(p3,p4))) /* 空間の4点から角度 */$
As(s1,s2,s3):=dacos((s2^2+s3^2-s1^2)/(2*s2*s3)) /* 3辺から角度 */$
lAss(A,s2,s3):=sqrt(s2^2+s3^2-2*s2*s3*dcos(A)) /* 2辺と1角から辺 */$
S(p1,p2,p3):=dis(p1,p2)*dis(p2,p3)*dsin(A(p3,p2,p1))/2 /* 3点から面積 */$
vp(p1,p2,p3):=p2+(p1-p2).(p3-p2)/dis(p3,p2)*(p3-p2)/dis(p3,p2) /* p1から直線p2p3へ下した垂線の足 */$
lPB(p1,p2):=([x,y,z]-(p1+p2)/2).(p2-p1)=0 /* p1,p2の垂直二等分面 */$
cir(p,r,tm,tM):=parametric(p[1]+r*dcos(t),p[2]+r*dsin(t),t,tm,tM) /* 中心p、半径r、偏角tm->tMの円弧 */$
lab(nam,p):=label([nam,p[1],p[2],p[3]]) /* 図中の文字 */$
sE(p1,p2,p3,p4):=block([p,q,s,a],e1:p1+p*(p2-p1),e2:p3+q*(p4-p3),s:solve([e1[1]=e2[1],e1[2]=e2[2]],[p,q]),a:subst(s[1],e1)) /* 線分p1p2と線分p3p4の交点 */$
perp(p1,p2):=block([p],p:[p1[2]*p2[3]-p1[3]*p2[2],p1[3]*p2[1]-p1[1]*p2[3],p1[1]*p2[2]-p1[2]*p2[1]],p:p/dis([0,0,0],p)) /*p1,p2に対し垂直な単位ベクトル*/$
imp(e,p,r):=implicit(e,x,-r+p[1],r+p[1],y,-r+p[2],r+p[2],z,-r+p[3],r+p[3]) /* p+-[r,r,r]の範囲で陰関数eを描く */$
volp(p1,p2,p3,d):=block([p0,py,px,vx,vy,vX,vY,p11,p21],
/**/p0:vp(p1,p2,p3),if dis(p0,p2)<0.01 then p21:ppie(p2,p3,1,1) else p21:p2,
/**/(py:perp(p21-p0,p1-p0),numer),(px:perp(py,p21-p0),numer),
/**/vx:(p1-p0).px,vy:(p1-p0).py,vX:vx*dcos(d)-vy*dsin(d),vY:vx*dsin(d)+vy*dcos(d),print(px,py,vx,vy),
/**/p11:p0+vX*(px)+vY*(py)) /* 点p1を、線分p2p3を軸にd°回転した点p11 */$

view0:view=[45,135] /* "北極から60度、(0,-1,0)から反時計回りに45度の方向から原点を見る" */$
pvA:[2,0,0];pvB:[1,1,0];pvC:[0,0,0] /* "点A,B,Cの設定" */;
dvN:perp(pvB-pvA,pvC-pvA) /* "面ABCの法線(垂線)算出" */;
pvO:vp(pvB,pvA,pvC) /* "BからACへの垂線BOのO算出" */;
pvD:volp(pvB,pvA,pvC,75),numer /* "ACを軸に,Bを75度回転したDの算出" */;
dvN2:perp(pvD-pvA,pvC-pvA) /* "面ADCの法線算出" */;
ep:([x,y,z]-pvA).dvN /*Aを通り法線Nの平面の方程式設定*/;
ep2:([x,y,z]-pvA).dvN2 /*Aを通り法線N2の平面の方程式設定*/;
KAITOU:["∠BOD=",A(pvB,pvO,pvD)],numer /*角BODの算出(▲変更部分1) */$
ptL1:[pvC,pvA,pvO,pvB,pvO,pvD];ptL2:[pvA,pvA+dvN,pvA,pvA+dvN2] /* "2つの点リストの設定" */;
imp1:imp(ep,[0,0,0],2);imp2:imp(ep2,[0,0,0],2) /* "方程式ep,ep2の平面の設定" */;
labA:lab("A",pvA+[1,0,0]);labB:lab("B",pvB+[0,1,0]);labC:lab("C",pvC+[0,1,1]);labO:lab("O",pvO+[2,2,1]);labD:lab("D",pvD+[0,0,1]);
labN:lab("N",pvA+dvN+[0,0,1]);labM:lab("M",pvA+dvN2+[0,0,1]) /* "点の表示ラベルの設定" */;

zm:-0.5$zM:2$xm:zm*ap3[1]$xM:zM*ap3[1]$ym:zm*ap3[2]$yM:zM*ap3[2] /* "x,y,zの表示範囲の設定" */$
title1:title=" " /* 図形のタイトル(頂点の位置) */;
wxdraw3d(title1,
/*....*/xrange=[xm,xM],yrange=[ym,yM],zrange=[zm,zM],
/*....*/view0 ,surface_hide = true,
color=yellow,imp1,color=gray,imp2,
points_joined =true,
color=blue,labA,labB,labC,labO,labD,
color=cyan,labN,labM,
line_width=3,color=cyan,points(ptL2),
line_width=3,color=red,points(ptL1)
) /*pLのグラフ表示*/$
SUJIMITI:"平面ACB,ACDの交線ACと直線BO、DOは(  )し、∠BODが(  ) だから、2平面のなす角は(  )"/*(▲変更部分2) */$
print(MONDAI)$print(SUJIMITI)$print(KAITOU)$

◎上のMaximaコマンドを実行せよ。
◎上のMaximaコマンドを、以下のように修正して実行し、結果を比較して考察せよ。
KAITOU:["∠BOD=",A(pvB,pvO,pvD),"∠NAM=",A(pvN+pvA,pvA,pvN2+pvA)],numer /*(▲変更部分1) */$
SUJIMITI:"平面ACB,ACDのそれぞれの垂線(  )、(  )のなす角は(  )で、∠BODに(  )。よって、2平面のなす角は、それぞれの(  )"のなす角で定義できる。/*(▲変更部分2) */$


◆コマンド番号140

●●●●●●●●●●●●●●●●
kill(all) $
MONDAI:" 140 平行な2平面の単位法線は" /**/$
KOUSATU:""$

KANSUU:"定数・関数定義";
ap:[8.3/6,6.8/6] /* 2dグラフのアスペクト比の調整 */ $
ap3:[2,2,1] /* 3dグラフのアスペクト比の調整 */ $
r2d(A):=A/%pi*180 /* 弧度→角度 */$
d2r(A):=A/180*%pi /* 角度→弧度 */$
dcos(A):=cos(d2r(A));dsin(A):=sin(d2r(A)) /* 角度の余弦、正弦 */$
dacos(s):=r2d(acos(s));dasin(s):=r2d(asin(s)) /* 角度の逆余弦、逆正弦 */$
dis(p1,p2):=sqrt((p2-p1).(p2-p1)) /* 2点間の距離 */$
ppie(p1,p2,P1,P2):=p1*P2/(P1+P2)+p2*P1/(P1+P2) /* p1,p2のP1:P2の内分・外分点 */$
A(p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p2,p3)^2-dis(p3,p1)^2)/(2*dis(p1,p2)*dis(p2,p3))) /* 3点から角度 */$
A3(p4,p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p3,p4)^2-dis(p4-p3,p2-p1)^2)/(2*dis(p1,p2)*dis(p3,p4))) /* 空間の4点から角度 */$
As(s1,s2,s3):=dacos((s2^2+s3^2-s1^2)/(2*s2*s3)) /* 3辺から角度 */$
lAss(A,s2,s3):=sqrt(s2^2+s3^2-2*s2*s3*dcos(A)) /* 2辺と1角から辺 */$
S(p1,p2,p3):=dis(p1,p2)*dis(p2,p3)*dsin(A(p3,p2,p1))/2 /* 3点から面積 */$
vp(p1,p2,p3):=p2+(p1-p2).(p3-p2)/dis(p3,p2)*(p3-p2)/dis(p3,p2) /* p1から直線p2p3へ下した垂線の足 */$
lPB(p1,p2):=([x,y,z]-(p1+p2)/2).(p2-p1)=0 /* p1,p2の垂直二等分面 */$
cir(p,r,tm,tM):=parametric(p[1]+r*dcos(t),p[2]+r*dsin(t),t,tm,tM) /* 中心p、半径r、偏角tm->tMの円弧 */$
lab(nam,p):=label([nam,p[1],p[2],p[3]]) /* 図中の文字 */$
sE(p1,p2,p3,p4):=block([p,q,s,a],e1:p1+p*(p2-p1),e2:p3+q*(p4-p3),s:solve([e1[1]=e2[1],e1[2]=e2[2]],[p,q]),a:subst(s[1],e1)) /* 線分p1p2と線分p3p4の交点 */$
perp(p1,p2):=block([p],p:[p1[2]*p2[3]-p1[3]*p2[2],p1[3]*p2[1]-p1[1]*p2[3],p1[1]*p2[2]-p1[2]*p2[1]],p:p/dis([0,0,0],p)) /*p1,p2に対し垂直な単位ベクトル*/$
imp(e,p,r):=implicit(e,x,-r+p[1],r+p[1],y,-r+p[2],r+p[2],z,-r+p[3],r+p[3]) /* p+-[r,r,r]の範囲で陰関数eを描く */$
volp(p1,p2,p3,d):=block([p0,py,px,vx,vy,vX,vY,p11,p21],
/**/p0:vp(p1,p2,p3),if dis(p0,p2)<0.01 then p21:ppie(p2,p3,1,1) else p21:p2,
/**/(py:perp(p21-p0,p1-p0),numer),(px:perp(py,p21-p0),numer),
/**/vx:(p1-p0).px,vy:(p1-p0).py,vX:vx*dcos(d)-vy*dsin(d),vY:vx*dsin(d)+vy*dcos(d),print(px,py,vx,vy),
/**/p11:p0+vX*(px)+vY*(py)) /* 点p1を、線分p2p3を軸にd°回転した点p11 */$

view0:view=[45,135] /* "北極から60度、(0,-1,0)から反時計回りに45度の方向から原点を見る" */$
pvA:[2,0,0];pvB:[1,1,0];pvC:[0,0,0] /* "点A,B,C,の設定" *//*(▲変更部分1) */$;
pvD:[1,0,1];vAD:pvD-pvA;pvE:pvB+vAD;pvF:pvC+vAD /* "点Dの設定,方向ADの算出、点E、Fの算出" */;
nABC:perp(pvB-pvA,pvC-pvA) /* "面ABCの法線(垂線)算出" */;
nDEF:perp(pvE-pvD,pvF-pvD) /* "面DEFの法線(垂線)算出" */;
ep:([x,y,z]-pvA).nABC=0 /*Aを通り法線nABCの平面の方程式設定*/;
ep2:([x,y,z]-pvD).nDEF=0 /*Dを通り法線nDEFの平面の方程式設定*/;
KAITOU:["nABC:",nABC,"nDEF:",nDEF],numer /*2つの平面の単位法線*/$
ptL1:[pvC,pvA,pvB,pvC];ptL2:[pvF,pvD,pvE,pvF] /* "2つの点リストの設定" */;
ptL3:[pvA,pvA+nABC];ptL4:[pvD,pvD+nDEF] /* "2つの点リストの設定" */;
imp1:imp(ep,[0,0,0],2);imp2:imp(ep2,[0,0,0],2) /* "方程式ep,ep2の平面の設定" */;
labA:lab("A",pvA+[1,0,0]);labB:lab("B",pvB+[0,1,0]);labC:lab("C",pvC+[0,1,1]);labD:lab("D",pvD+[2,2,1]);labE:lab("E",pvE+[0,0,1]);labF:lab("F",pvF+[0,0,1]);
labnABC:lab("nABC",pvA+nABC+[0,0,1]);labnDEF:lab("nDEF",pvD+nDEF+[0,0,1]) /* "点の表示ラベルの設定" */;

zm:-0.5$zM:2$xm:zm*ap3[1]$xM:zM*ap3[1]$ym:zm*ap3[2]$yM:zM*ap3[2] /* "x,y,zの表示範囲の設定" */$
title1:title=" " /* 図形のタイトル(頂点の位置) */;
wxdraw3d(title1,
/*....*/xrange=[xm,xM],yrange=[ym,yM],zrange=[zm,zM],
/*....*/view0 ,surface_hide = true,
color=yellow,imp1,color=gray,imp2,
points_joined =true,
color=blue,labA,labB,labC,labD,labE,labF,
line_width=3,color=cyan,points(ptL2),points(ptL4),labnDEF,
line_width=3,color=red,points(ptL1),points(ptL3),labnABC
) /*pLのグラフ表示*/$
SUJIMITI:"平行な2平面の一方に垂直な平面は、他方にも(  )だから、一方の法線は、他方の(  )にもなる"/**/$
print(MONDAI)$print(SUJIMITI)$print(KAITOU)$

◎上のMaximaコマンドを実行せよ。
◎上のMaximaコマンドを、以下のように修正して実行し、結果を比較して考察せよ。
pvA:[2,1,0];pvB:[1,1,-0.5];pvC:[0,0,0] /* "点A,B,C,の設定" *//*(▲変更部分1) */$;


◆コマンド番号141

●●●●●●●●●●●●●●●●
kill(all) $
MONDAI:"練習 141 平面pABC⊥pABD、pABD⊥pACDのとき、pABCとpACDは" /*(▲変更部分0) */$
KOUSATU:"2平面の位置関係は、それぞれの法線(垂直な直線)の関係と一致するので、・・・"$

KANSUU:"定数・関数定義";
ap:[8.3/6,6.8/6] /* 2dグラフのアスペクト比の調整 */ $
ap3:[2,2,1] /* 3dグラフのアスペクト比の調整 */ $
r2d(A):=A/%pi*180 /* 弧度→角度 */$
d2r(A):=A/180*%pi /* 角度→弧度 */$
dcos(A):=cos(d2r(A));dsin(A):=sin(d2r(A)) /* 角度の余弦、正弦 */$
dacos(s):=r2d(acos(s));dasin(s):=r2d(asin(s)) /* 角度の逆余弦、逆正弦 */$
dis(p1,p2):=sqrt((p2-p1).(p2-p1)) /* 2点間の距離 */$
ppie(p1,p2,P1,P2):=p1*P2/(P1+P2)+p2*P1/(P1+P2) /* p1,p2のP1:P2の内分・外分点 */$
A(p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p2,p3)^2-dis(p3,p1)^2)/(2*dis(p1,p2)*dis(p2,p3))) /* 3点から角度 */$
A3(p4,p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p3,p4)^2-dis(p4-p3,p2-p1)^2)/(2*dis(p1,p2)*dis(p3,p4))) /* 空間の4点から角度 */$
As(s1,s2,s3):=dacos((s2^2+s3^2-s1^2)/(2*s2*s3)) /* 3辺から角度 */$
lAss(A,s2,s3):=sqrt(s2^2+s3^2-2*s2*s3*dcos(A)) /* 2辺と1角から辺 */$
S(p1,p2,p3):=dis(p1,p2)*dis(p2,p3)*dsin(A(p3,p2,p1))/2 /* 3点から面積 */$
vp(p1,p2,p3):=p2+(p1-p2).(p3-p2)/dis(p3,p2)*(p3-p2)/dis(p3,p2) /* p1から直線p2p3へ下した垂線の足 */$
lPB(p1,p2):=([x,y,z]-(p1+p2)/2).(p2-p1)=0 /* p1,p2の垂直二等分面 */$
cir(p,r,tm,tM):=parametric(p[1]+r*dcos(t),p[2]+r*dsin(t),t,tm,tM) /* 中心p、半径r、偏角tm->tMの円弧 */$
lab(nam,p):=label([nam,p[1],p[2],p[3]]) /* 図中の文字 */$
sE(p1,p2,p3,p4):=block([p,q,s,a],e1:p1+p*(p2-p1),e2:p3+q*(p4-p3),s:solve([e1[1]=e2[1],e1[2]=e2[2]],[p,q]),a:subst(s[1],e1)) /* 線分p1p2と線分p3p4の交点 */$
perp(p1,p2):=block([p],p:[p1[2]*p2[3]-p1[3]*p2[2],p1[3]*p2[1]-p1[1]*p2[3],p1[1]*p2[2]-p1[2]*p2[1]],p:p/dis([0,0,0],p)) /*p1,p2に対し垂直な単位ベクトル*/$
imp(e,p,r):=implicit(e,x,-r+p[1],r+p[1],y,-r+p[2],r+p[2],z,-r+p[3],r+p[3]) /* p+-[r,r,r]の範囲で陰関数eを描く */$
volp(p1,p2,p3,d):=block([p0,py,px,vx,vy,vX,vY,p11,p21],
/**/p0:vp(p1,p2,p3),if dis(p0,p2)<0.01 then p21:ppie(p2,p3,1,1) else p21:p2,
/**/(py:perp(p21-p0,p1-p0),numer),(px:perp(py,p21-p0),numer),
/**/vx:(p1-p0).px,vy:(p1-p0).py,vX:vx*dcos(d)-vy*dsin(d),vY:vx*dsin(d)+vy*dcos(d),print(px,py,vx,vy),
/**/p11:p0+vX*(px)+vY*(py)) /* 点p1を、線分p2p3を軸にd°回転した点p11 */$

view0:view=[45,135] /* "北極から60度、(0,-1,0)から反時計回りに45度の方向から原点を見る" */$
pvA:[0,0,0];pvB:[2,0,0];pvC:[-1,2,0];pvD:[0,0,1] /* "点A,B,Cの設定" */;
pvG:[2,0,-2];vAG:pvG-pvA;pvH:pvB+vAG;pvI:pvC+vAG /* "点Gの設定,方向AGの算出、点H,Iの算出" */;
nABC:perp(pvB-pvA,pvC-pvA) /* "面ABCの法線(垂線)算出" */;
nABD:perp(pvD-pvA,pvB-pvA) /* "面ABDの法線(垂線)算出" */ /*(▲変更部分1)*/;
nACD:perp(pvC-pvA,pvD-pvA) /* "面ACDの法線(垂線)算出" */ /*(▲変更部分1) */;
ep:([x,y,z]-pvA).nABC=0 /*Aを通り法線nABCの平面の方程式設定*/;
ep2:([x,y,z]-pvD).nABD=0 /*Dを通り法線nABDの平面の方程式設定*/ /*(▲変更部分2) */;
ep3:([x,y,z]-pvA).nACD=0 /*Aを通り法線nACDの平面の方程式設定*/ /*(▲変更部分2) */;
KAITOU:["nABDとnACDのなす角:",A(nABD,[0,0,0],nACD)],numer /*2つの平面の方程式(▲変更部分2) */$
ptL1:[pvC,pvA,pvB,pvA,pvD];ptL2:[pvA,pvC,pvD];ptL3:[pvA,pvD,pvB];ptL4:[pvA,pvB,pvC] /* "2つの点リストの設定" */ /*(▲変更部分2) */;
ptL5:[pvB,pvB+nABC];ptL6:[pvB,pvB+nABD];ptL7:[pvB,pvB+nACD] /* "2つの点リストの設定" */ /*(▲変更部分2) */;
imp1:imp(ep,[0,0,0],3);imp2:imp(ep2,[1,0,0],3);imp3:imp(ep3,[2,0,0],3) /* "方程式ep,ep2,ep3の平面の設定" */;
labA:lab("A",pvA+[1,2,2]);labB:lab("B",pvB+[2,1.5,2]);labC:lab("C",pvC+[0,1,1]);
labD:lab("D",pvD+[2,2,3]);labnABC:lab("nABC",pvB+nABC+[0,0,1]);labnABD:lab("nABD",pvB+nABD+[1,3,2]);labnACD:lab("nACD",pvB+nACD+[2,2,1]) /* "点の表示ラベルの設定" */ /*(▲変更部分3) */;

zm:-2$zM:2$xm:zm*ap3[1]+1$xM:zM*ap3[1]+1$ym:zm*ap3[2]$yM:zM*ap3[2] /* "x,y,zの表示範囲の設定" */$
title1:title=" " /* 図形のタイトル(頂点の位置) */;
wxdraw3d(title1,
/*....*/xrange=[xm,xM],yrange=[ym,yM],zrange=[zm,zM],
/*....*/view0 ,surface_hide = true,
color=light_gray,imp1,color=yellow,imp2,color=dark_grey,imp3,
points_joined =true,
color=blue,labA,labB,labC,labD,
line_width=3,color=cyan,points(ptL2),points(ptL7) /*(▲変更部分4) */,
line_width=3,color=blue,points(ptL3),points(ptL6) /*(▲変更部分4) */,
line_width=3,color=red,points(ptL4),points(ptL5) /*(▲変更部分4) */,
line_width=1,color=black,labnABC,labnABD,labnACD /*(▲変更部分4) */
) /*pLのグラフ表示*/$
SUJIMITI:"平面ABCとABDは直交、平面ABCとACDも直交だが、nABDとnACDは(  )でも( )でもない。だから、2平面がある平面にともに(  )しても、必ずしも( )とは限らないし、( )とも限らない。"/*(▲変更部分5) */$
print(MONDAI)$print(SUJIMITI)$print(KAITOU)$

◎上のMaximaコマンドを実行せよ。
◎上のMaximaコマンドを、以下のように修正して実行し、結果を比較して考察せよ。
MONDAI:"練習 141 平面pABC//pDEF、pDEF//pGHIのとき、pABCとpGHIは" /*(▲変更部分0) */$
pvD:[1,0,-1];vAD:pvD-pvA;pvE:pvB+vAD;pvF:pvC+vAD /* "点Dの設定,方向ADの算出、点E,Fの算出" */ /*(▲変更部分1)*/;
nDEF:perp(pvE-pvD,pvF-pvD) /* "面DEFの法線(垂線)算出" */ /*(▲変更部分1) */;
nGHI:perp(pvH-pvG,pvI-pvG) /* "面GHIの法線(垂線)算出" */ /*(▲変更部分1) */;
ep2:([x,y,z]-pvD).nDEF=0 /*Dを通り法線nABDの平面の方程式設定*/ /*(▲変更部分2) */;
ep3:([x,y,z]-pvG).nGHI=0 /*Aを通り法線nACDの平面の方程式設定*/ /*(▲変更部分2) */;
KAITOU:["nABCとnGHIのなす角:",A(nABC,[0,0,0],nGHI)],numer /*2つの平面の方程式(▲変更部分2) */$
ptL1:[pvA,pvB,pvC,pvA];ptL2:[pvD,pvE,pvF,pvD];ptL3:[pvG,pvH,pvI,pvG] /* "2つの点リストの設定" */ /*(▲変更部分2) */;
ptL4:[pvB,pvB+nABC];ptL5:[pvE,pvE+nDEF];ptL6:[pvH,pvH+nGHI] /* "2つの点リストの設定" */ /*(▲変更部分2) */;
labD:lab("D",pvD+[0,0,0]);labE:lab("E",pvE+[2.5,2,2]);labH:lab("H",pvH+[2.5,2,2]) /*(▲変更部分3) */;
labnABC:lab("nABC",pvB+nABC+[0,0,1]);labnDEF:lab("nDEF",pvE+nDEF+[2.5,1,2]);labnGHI:lab("nGHI",pvH+nGHI+[3.3,2,2.7]) /* "点の表示ラベルの設定" */ /*(▲変更部分3) */;
line_width=3,color=cyan,points(ptL1),points(ptL4) /*(▲変更部分4) */,
line_width=3,color=blue,points(ptL2),points(ptL5),labE /*(▲変更部分4) */,
line_width=3,color=red,points(ptL3),points(ptL6)/*(▲変更部分4) */,
line_width=1,color=black,labH,labnABC,labnDEF,labnGHI /*(▲変更部分4) */
SUJIMITI:"平面ABCとDEFは平行、平面DEFとGHIも平行とすると、nABCとnGHIも(  )"/*(▲変更部分5) */$


:  第2節空間図形
  9.空間図形と多面体
   A 多面体

◆コマンド番号142

●●●●●●●●●●●●●●●●
kill(all) $
MONDAI:"142 立方体の頂点数v,辺数e,面数fについて、v-e+fの値は(オイラーの多面体定理)" /*(▲変更部分0) */$
KOUSATU:"自由自在に引き延ばせる素材で多面体を作り、底面とする面を十分に引き延ばし、底面を除いて他の面・辺・頂点は平面上に描かれた頂点、辺、面とみなせるので、・・・"$

KANSUU:"定数・関数定義";
ap:[8.3/6,6.8/6] /* 2dグラフのアスペクト比の調整 */ $
ap3:[2,2,1] /* 3dグラフのアスペクト比の調整 */ $
r2d(A):=A/%pi*180 /* 弧度→角度 */$
d2r(A):=A/180*%pi /* 角度→弧度 */$
dcos(A):=cos(d2r(A));dsin(A):=sin(d2r(A)) /* 角度の余弦、正弦 */$
dacos(s):=r2d(acos(s));dasin(s):=r2d(asin(s)) /* 角度の逆余弦、逆正弦 */$
dis(p1,p2):=sqrt((p2-p1).(p2-p1)) /* 2点間の距離 */$
ppie(p1,p2,P1,P2):=p1*P2/(P1+P2)+p2*P1/(P1+P2) /* p1,p2のP1:P2の内分・外分点 */$
A(p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p2,p3)^2-dis(p3,p1)^2)/(2*dis(p1,p2)*dis(p2,p3))) /* 3点から角度 */$
A3(p4,p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p3,p4)^2-dis(p4-p3,p2-p1)^2)/(2*dis(p1,p2)*dis(p3,p4))) /* 空間の4点から角度 */$
As(s1,s2,s3):=dacos((s2^2+s3^2-s1^2)/(2*s2*s3)) /* 3辺から角度 */$
lAss(A,s2,s3):=sqrt(s2^2+s3^2-2*s2*s3*dcos(A)) /* 2辺と1角から辺 */$
S(p1,p2,p3):=dis(p1,p2)*dis(p2,p3)*dsin(A(p3,p2,p1))/2 /* 3点から面積 */$
vp(p1,p2,p3):=p2+(p1-p2).(p3-p2)/dis(p3,p2)*(p3-p2)/dis(p3,p2) /* p1から直線p2p3へ下した垂線の足 */$
lPB(p1,p2):=([x,y,z]-(p1+p2)/2).(p2-p1)=0 /* p1,p2の垂直二等分面 */$
cir(p,r,tm,tM):=parametric(p[1]+r*dcos(t),p[2]+r*dsin(t),t,tm,tM) /* 中心p、半径r、偏角tm->tMの円弧 */$
lab(nam,p):=label([nam,p[1],p[2],p[3]]) /* 図中の文字 */$
sE(p1,p2,p3,p4):=block([p,q,s,a],e1:p1+p*(p2-p1),e2:p3+q*(p4-p3),s:solve([e1[1]=e2[1],e1[2]=e2[2]],[p,q]),a:subst(s[1],e1)) /* 線分p1p2と線分p3p4の交点 */$
perp(p1,p2):=block([p],p:[p1[2]*p2[3]-p1[3]*p2[2],p1[3]*p2[1]-p1[1]*p2[3],p1[1]*p2[2]-p1[2]*p2[1]],p:p/dis([0,0,0],p)) /*p1,p2に対し垂直な単位ベクトル*/$
imp(e,p,r):=implicit(e,x,-r+p[1],r+p[1],y,-r+p[2],r+p[2],z,-r+p[3],r+p[3]) /* p+-[r,r,r]の範囲で陰関数eを描く */$
volp(p1,p2,p3,d):=block([p0,py,px,vx,vy,vX,vY,p11,p21],
/**/p0:vp(p1,p2,p3),if dis(p0,p2)<0.01 then p21:ppie(p2,p3,1,1) else p21:p2,
/**/(py:perp(p21-p0,p1-p0),numer),(px:perp(py,p21-p0),numer),
/**/vx:(p1-p0).px,vy:(p1-p0).py,vX:vx*dcos(d)-vy*dsin(d),vY:vx*dsin(d)+vy*dcos(d),print(px,py,vx,vy),
/**/p11:p0+vX*(px)+vY*(py)) /* 点p1を、線分p2p3を軸にd°回転した点p11 */$

view0:view=[0,0] /* "北極から60度、(0,-1,0)から反時計回りに45度の方向から原点を見る" */$
pvA:[0,0,0];pvB:[3,0,0];pvC:[3,3,0];pvD:[0,3,0] /* "点A,B,C,Dの設定" */;
pvE:[1,1,1];pvF:[2,1,1];pvG:[2,2,1];pvH:[1,2,1] /* "点E,F,G,Hの設定" */;
ptL1:[pvA,pvE];ptL2:[pvE,pvF];ptL3:[pvF,pvG];ptL4:[pvG,pvH];ptL5:[pvH,pvD]/*(▲変更部分1) */;
ptL6:[pvF,pvB];ptL7:[pvC,pvG]/*(▲変更部分1) */;
ptL8:[pvE,pvH];ptL9:[pvA,pvB];ptL10:[pvB,pvC];ptL11:[pvC,pvD];ptL12:[pvD,pvA]/*(▲変更部分1) */;
KAITOU:["v-e+fは、最初に除く底面1と最後に残る頂点1の和で、2"] /*v-e+f*/$
labA:lab("A",pvA+[0,-0.5,0]);labB:lab("B",pvB+[0.5,0,0]);labC:lab("C",pvC+[0,0.5,0]);labD:lab("D",pvD+[-0.5,0,0]);
labE:lab("E",pvE+[0,-0.5,0]);labF:lab("F",pvF+[0.5,0,0]);labG:lab("G",pvG+[0,0.5,0]);labH:lab("H",pvH+[-0.5,0,0]);

zm:-1$zM:2$xm:zm*ap3[1]+1$xM:zM*ap3[1]+1$ym:zm*ap3[2]$yM:zM*ap3[2] /* "x,y,zの表示範囲の設定" */$
title1:title=" " /* 図形のタイトル(頂点の位置) */;
wxdraw3d(title1,
/*....*/xrange=[xm,xM],yrange=[ym,yM],zrange=[zm,zM],
/*....*/view0 ,surface_hide = true,
points_joined =true,
line_width=3,color=cyan,points(ptL1),points(ptL2),points(ptL3),points(ptL4),points(ptL5)/*(▲変更部分2) */,
line_width=3,color=blue,points(ptL6),points(ptL7)/*(▲変更部分2) */,
line_width=3,color=red,points(ptL8),points(ptL9),points(ptL10),points(ptL11),points(ptL12) /*(▲変更部分2) */,
color=black,labA,labB,labC,labD,labE,labF,labG,labH/*(▲変更部分2) */,
color=blue
) /*pLのグラフ表示*/$
SUJIMITI:"図形内部の面と外部との境となっている赤い( )線をすべて順に消すと、( )平面すべてが消え、枝でつながる青い端の線( )線を端の点とともにすべて消すと、( )点が消え、一本につながるシアンの( )線を端の1点とともにすべて消すと、( )点が消え、最後に、( )点が残る。最初に除いた底面と合わせて、v-e+f=(  )"/**/$
print(MONDAI)$print(SUJIMITI)$print(KAITOU)$

◎上のMaximaコマンドを実行せよ。
◎上のMaximaコマンドを、以下のように修正して実行し、結果を比較して考察せよ。
MONDAI:"142 三角錐台の頂点数v,辺数e,面数fについて、v-e+fの値は(オイラーの多面体定理)" /*(▲変更部分0) */$
pvC:[1.5,3,0];pvG:[1.5,2,1] /* "点C,Gの再設定" *//*(▲変更部分1) */;
ptL1:[pvA,pvE];ptL2:[pvE,pvF];ptL3:[pvF,pvG];ptL4:[pvG,pvC]/*(▲変更部分1) */;
ptL6:[pvF,pvB]/*(▲変更部分1) */;
ptL8:[pvE,pvG];ptL9:[pvA,pvB];ptL10:[pvB,pvC];ptL11:[pvC,pvA]/*(▲変更部分1) */;
line_width=3,color=cyan,points(ptL1),points(ptL2),points(ptL3),points(ptL4)/*(▲変更部分2) */,
line_width=3,color=blue,points(ptL6)/*(▲変更部分2) */,
line_width=3,color=red,points(ptL8),points(ptL9),points(ptL10),points(ptL11)/*(▲変更部分2) */,
color=black,labA,labB,labC,labE,labF,labG/*(▲変更部分2) */,


◆コマンド番号143
●例7・練習30 正多面体の面・頂点・辺の数
●●●●●●●●●●●●●●●●
kill(all) $
MONDAI:"例7・練習30 143 正四面体の面・頂点・辺の数" /*(▲変更部分0) */$
KOUSATU:"正多面体は、各面が正多角形、各頂点に集まる面の数が同じなので、・・・"$

KANSUU:"定数・関数定義";
ap:[8.3/6,6.8/6] /* 2dグラフのアスペクト比の調整 */ $
ap3:[2,2,1] /* 3dグラフのアスペクト比の調整 */ $
r2d(A):=A/%pi*180 /* 弧度→角度 */$
d2r(A):=A/180*%pi /* 角度→弧度 */$
dcos(A):=cos(d2r(A));dsin(A):=sin(d2r(A)) /* 角度の余弦、正弦 */$
dacos(s):=r2d(acos(s));dasin(s):=r2d(asin(s)) /* 角度の逆余弦、逆正弦 */$
dis(p1,p2):=sqrt((p2-p1).(p2-p1)) /* 2点間の距離 */$
ppie(p1,p2,P1,P2):=p1*P2/(P1+P2)+p2*P1/(P1+P2) /* p1,p2のP1:P2の内分・外分点 */$
A(p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p2,p3)^2-dis(p3,p1)^2)/(2*dis(p1,p2)*dis(p2,p3))) /* 3点から角度 */$
A3(p4,p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p3,p4)^2-dis(p4-p3,p2-p1)^2)/(2*dis(p1,p2)*dis(p3,p4))) /* 空間の4点から角度 */$
As(s1,s2,s3):=dacos((s2^2+s3^2-s1^2)/(2*s2*s3)) /* 3辺から角度 */$
lAss(A,s2,s3):=sqrt(s2^2+s3^2-2*s2*s3*dcos(A)) /* 2辺と1角から辺 */$
S(p1,p2,p3):=dis(p1,p2)*dis(p2,p3)*dsin(A(p3,p2,p1))/2 /* 3点から面積 */$
vp(p1,p2,p3):=p2+(p1-p2).(p3-p2)/dis(p3,p2)*(p3-p2)/dis(p3,p2) /* p1から直線p2p3へ下した垂線の足 */$
lPB(p1,p2):=([x,y,z]-(p1+p2)/2).(p2-p1)=0 /* p1,p2の垂直二等分面 */$
cir(p,r,tm,tM):=parametric(p[1]+r*dcos(t),p[2]+r*dsin(t),t,tm,tM) /* 中心p、半径r、偏角tm->tMの円弧 */$
lab(nam,p):=label([nam,p[1],p[2],p[3]]) /* 図中の文字 */$
sE(p1,p2,p3,p4):=block([p,q,s,a],e1:p1+p*(p2-p1),e2:p3+q*(p4-p3),s:solve([e1[1]=e2[1],e1[2]=e2[2]],[p,q]),a:subst(s[1],e1)) /* 線分p1p2と線分p3p4の交点 */$
perp(p1,p2):=block([p],p:[p1[2]*p2[3]-p1[3]*p2[2],p1[3]*p2[1]-p1[1]*p2[3],p1[1]*p2[2]-p1[2]*p2[1]],p:p/dis([0,0,0],p)) /*p1,p2に対し垂直な単位ベクトル*/$
imp(e,p,r):=implicit(e,x,-r+p[1],r+p[1],y,-r+p[2],r+p[2],z,-r+p[3],r+p[3]) /* p+-[r,r,r]の範囲で陰関数eを描く */$
volp(p1,p2,p3,d):=block([p0,py,px,vx,vy,vX,vY,p11,p21],
/**/p0:vp(p1,p2,p3),if dis(p0,p2)<0.01 then p21:ppie(p2,p3,1,1) else p21:p2,
/**/(py:perp(p21-p0,p1-p0),numer),(px:perp(py,p21-p0),numer),
/**/vx:(p1-p0).px,vy:(p1-p0).py,vX:vx*dcos(d)-vy*dsin(d),vY:vx*dsin(d)+vy*dcos(d),print(px,py,vx,vy),
/**/p11:p0+vX*(px)+vY*(py)) /* 点p1を、線分p2p3を軸にd°回転した点p11 */$

view0:view=[60,140] /* "北極から60度、(0,-1,0)から反時計回りに130度の方向から原点を見る" */$
N:4;n:3;Mn:3;r:1/2/dsin(180/n),numer /*正N面体,面は正n角形,頂点に集まる面Mn*/ /*(▲変更部分1) */;
A1:180-As(sqrt(3)/2,sqrt(3)/2,1),numer /*(▲変更部分1) */;
pv11:[r,0,0];pv12:volp(pv11,[0,0,0],[0,0,1],360/n),numer;pv13:volp(pv12,[0,0,0],[0,0,1],360/n),numer;ptL1:[pv11,pv12,pv13,pv11] /*(▲変更部分1) */;
pv21:pv11+[dcos(A1),0,dsin(A1)],numer;ptL121:[pv11,pv21];ptL122:[pv12,pv21];ptL123:[pv13,pv21] /*(▲変更部分1) */;
KAITOU:["面",N,"頂点",N*n/Mn,"辺",N*n/2] $

zm:-0.1$zM:2.5$xm:zm*ap3[1]-2$xM:zM*ap3[1]-2$ym:zm*ap3[2]-2$yM:zM*ap3[2]-2 /* "x,y,zの表示範囲の設定" */$
title1:title=" " /* 図形のタイトル(頂点の位置) */;
wxdraw3d(title1,
/*....*/xrange=[xm,xM],yrange=[ym,yM],zrange=[zm,zM],
/*....*/view0 ,surface_hide = true,enhanced3d = true,
points_joined =true,
line_width=3,color=cyan,points(ptL1)/**/,
line_width=3,color=blue,points(ptL121),points(ptL122),points(ptL123)/*(▲変更部分2) */,
color=blue
) /*pLのグラフ表示*/$
SUJIMITI:"底面の頂点、次の段の頂点、・・・と順に計算すると、" $
print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$

◎上のMaximaコマンドを実行せよ。
◎上のMaximaコマンドを、以下のように修正して実行し、結果を比較して考察せよ。
MONDAI:"例7・練習30 143 正六面体の面・頂点・辺の数" /*(▲変更部分0) */$
N:6;n:4;Mn:3;r:1/2/dsin(180/n),numer /*正N面体,面は正n角形,頂点に集まる面Mn,底面の外接円の半径*/ /*(▲変更部分1) */;
A1:180-As(sqrt(3),sqrt(2),1),numer /*(▲変更部分1) */;
pv11:[r,0,0];pv12:volp(pv11,[0,0,-1],[0,0,3],360/n),numer;pv13:volp(pv12,[0,0,-1],[0,0,3],360/n),numer;pv14:volp(pv13,[0,0,-1],[0,0,3],360/n),numer;ptL1:[pv11,pv12,pv13,pv14,pv11] /*(▲変更部分1) */;
pv21:pv11+[dcos(A1),0,dsin(A1)],numer;pv22:volp(pv21,[0,0,-1],[0,0,3],360/n),numer;pv23:volp(pv22,[0,0,-1],[0,0,3],360/n),numer;pv24:volp(pv23,[0,0,-1],[0,0,3],360/n),numer;ptL2:[pv21,pv22,pv23,pv24,pv21];ptL121:[pv11,pv21];ptL122:[pv12,pv22];ptL123:[pv13,pv23];ptL124:[pv14,pv24] /*(▲変更部分1) */;
line_width=3,color=blue,points(ptL2),points(ptL121),points(ptL122),points(ptL123),points(ptL124)/*(▲変更部分2) */,

◎上のMaximaコマンドを、以下のように修正して実行し、結果を比較して考察せよ。
MONDAI:"例7・練習30 143 正八面体の面・頂点・辺の数" /*(▲変更部分0) */$
N:8;n:3;Mn:4;r:1/2/dsin(180/n),numer /*正N面体,面は正n角形,頂点に集まる面Mn,底面の外接円の半径*/ /*(▲変更部分1) */;
A1:180-As(1,sqrt(3)/2,sqrt(3)/2),numer /*(▲変更部分1) */;
pv11:[r,0,0];pv12:volp(pv11,[0,0,-1],[0,0,3],360/n),numer;pv13:volp(pv12,[0,0,-1],[0,0,3],360/n),numer;pv14:volp(pv13,[0,0,-1],[0,0,3],360/n),numer;ptL1:[pv11,pv12,pv13,pv14,pv11] /*(▲変更部分1) */;
pv21:pv11+[dcos(A1),0,dsin(A1)]+[0,0.5,0],numer;pv22:volp(pv21,[0,0,-1],[0,0,3],360/n),numer;pv23:volp(pv22,[0,0,-1],[0,0,3],360/n),numer;ptL2:[pv21,pv22,pv23,pv21];ptL1211:[pv11,pv21];ptL1212:[pv11,pv22];ptL1221:[pv12,pv22];ptL1222:[pv12,pv23];ptL1231:[pv13,pv23];ptL1232:[pv13,pv21] /*(▲変更部分1) */;
line_width=3,color=blue,points(ptL2),points(ptL1211),points(ptL1212),points(ptL1221),points(ptL1222),points(ptL1231),points(ptL1232)/*(▲変更部分2) */,

◎上のMaximaコマンドを、以下のように修正して実行し、結果を比較して考察せよ。
MONDAI:"例7・練習30 143 正十二面体の面・頂点・辺の数" /*(▲変更部分0) */$
N:12;n:5;Mn:3;r:1/2/dsin(180/n),numer /*正N面体,面は正n角形,頂点に集まる面Mn,底面の外接円の半径*/ /*(▲変更部分1) */;
A1:180-As((1+sqrt(5))/4*sqrt(3),sqrt(1-(1+sqrt(5))^2/16),1),numer /*(▲変更部分1) */;
pv11:[r,0,0];pv12:volp(pv11,[0,0,-1],[0,0,3],360/n),numer;pv13:volp(pv12,[0,0,-1],[0,0,3],360/n),numer;pv14:volp(pv13,[0,0,-1],[0,0,3],360/n),numer;pv15:volp(pv14,[0,0,-1],[0,0,3],360/n),numer;ptL1:[pv11,pv12,pv13,pv14,pv15,pv11] /*(▲変更部分1) */;
pv21:pv11+[dcos(A1),0,dsin(A1)],numer;pv22:volp(pv21,[0,0,-1],[0,0,3],360/n),numer;pv23:volp(pv22,[0,0,-1],[0,0,3],360/n),numer;pv24:volp(pv23,[0,0,-1],[0,0,3],360/n),numer;pv25:volp(pv24,[0,0,-1],[0,0,3],360/n),numer /*(▲変更部分1) */;
pv31:ppie(pv11,ppie(pv21,pv22,(-1+sqrt(5))/2,1),(1+sqrt(5))/2,-(-1+sqrt(5))/2),numer;pv32:volp(pv31,[0,0,-1],[0,0,3],360/n),numer;pv33:volp(pv32,[0,0,-1],[0,0,3],360/n),numer;pv34:volp(pv33,[0,0,-1],[0,0,3],360/n),numer;pv35:volp(pv34,[0,0,-1],[0,0,3],360/n),numer;ptL2:[pv21,pv31,pv22,pv32,pv23,pv33,pv24,pv34,pv25,pv35,pv21];ptL121:[pv11,pv21];ptL122:[pv12,pv22];ptL123:[pv13,pv23];ptL124:[pv14,pv24];ptL125:[pv15,pv25] /*(▲変更部分1) */;
pv41:ppie(pv21,ppie(pv31,pv35,(-1+sqrt(5))/2,1),(1+sqrt(5))/2,-1),numer;pv42:volp(pv41,[0,0,-1],[0,0,3],360/n),numer;pv43:volp(pv42,[0,0,-1],[0,0,3],360/n),numer;pv44:volp(pv43,[0,0,-1],[0,0,3],360/n),numer;pv45:volp(pv44,[0,0,-1],[0,0,3],360/n),numer;ptL4:[pv41,pv42,pv43,pv44,pv45,pv41];ptL341:[pv31,pv41];ptL342:[pv32,pv42];ptL343:[pv33,pv43];ptL344:[pv34,pv44];ptL345:[pv35,pv45] /*(▲変更部分1) */;
line_width=3,color=blue,points(ptL2),points(ptL121),points(ptL122),points(ptL123),points(ptL124),points(ptL125),points(ptL4),points(ptL341),points(ptL342),points(ptL343),points(ptL344),points(ptL345)/*(▲変更部分2) */,

◎上のMaximaコマンドを、以下のように修正して実行し、結果を比較して考察せよ。
MONDAI:"例7・練習30 143 正二十面体の面・頂点・辺の数" /*(▲変更部分0) */$
N:20;n:3;Mn:5;r:1/2/dsin(180/n),numer /*正N面体,面は正n角形,頂点に集まる面Mn,底面の外接円の半径*/ /*(▲変更部分1) */;
A1:180-As((1+sqrt(5))/2,sqrt(3)/2,sqrt(3)/2),numer /*(▲変更部分1) */;
A2:180-As(sqrt((1+sqrt(5))^2/4-1/4),sqrt(3)/2,1),numer /*(▲変更部分1) */;
pv11:[r,0,0];pv12:volp(pv11,[0,0,-1],[0,0,3],360/n),numer;pv13:volp(pv12,[0,0,-1],[0,0,3],360/n),numer;ptL1:[pv11,pv12,pv13,pv11] /*(▲変更部分1) */;
pv21:(pv11+pv12)/2+sqrt(3)/2*volp([dcos(A1),0,dsin(A1)],[0,0,-1],[0,0,3],180/n),numer;pv22:volp(pv21,[0,0,-1],[0,0,3],360/n),numer;pv23:volp(pv22,[0,0,-1],[0,0,3],360/n),numer;ptL2:[pv11,pv21,pv12,pv22,pv13,pv23,pv11] /*(▲変更部分1) */;
pv31:pv11+[dcos(A2),0,dsin(A2)],numer;pv32:volp(pv31,[0,0,-1],[0,0,3],360/n),numer;pv33:volp(pv32,[0,0,-1],[0,0,3],360/n),numer;ptL3:[pv21,pv32,pv22,pv33,pv23,pv31,pv21];ptL131:[pv11,pv31];ptL132:[pv12,pv32];ptL133:[pv13,pv33] /*(▲変更部分1) */;
pv41:ppie(pv11,ppie(pv31,pv32,(-1+sqrt(5))/2,1),(1+sqrt(5))/2,-(-1+sqrt(5))/2),numer;pv42:volp(pv41,[0,0,-1],[0,0,3],360/n),numer;pv43:volp(pv42,[0,0,-1],[0,0,3],360/n),numer;ptL4:[pv31,pv41,pv32,pv42,pv33,pv43,pv31,pv41,pv42,pv43,pv41];ptL241:[pv21,pv41];ptL242:[pv22,pv42];ptL243:[pv23,pv43] /*(▲変更部分1) */;
line_width=3,color=blue,points(ptL2),points(ptL3),points(ptL4),points(ptL131),points(ptL132),points(ptL133),points(ptL241),points(ptL242),points(ptL243)/*(▲変更部分2) */,


◆コマンド番号144
●練習32 正六面体から切り出した多面体の面・頂点・辺の数
●●●●●●●●●●●●●●●●
kill(all) $
MONDAI:"練習32 144 正六面体の各辺の中点を通る面で8個の角を切り取った多面体の面・頂点・辺の数" /*(▲変更部分0) */$
KOUSATU:"多面体を平面に置き、頂点の高さで段に分け、各段と各段の間の頂点・辺・面を考えると・・・"$

KANSUU:"定数・関数定義";
ap:[8.3/6,6.8/6] /* 2dグラフのアスペクト比の調整 */ $
ap3:[2,2,1] /* 3dグラフのアスペクト比の調整 */ $
r2d(A):=A/%pi*180 /* 弧度→角度 */$
d2r(A):=A/180*%pi /* 角度→弧度 */$
dcos(A):=cos(d2r(A));dsin(A):=sin(d2r(A)) /* 角度の余弦、正弦 */$
dacos(s):=r2d(acos(s));dasin(s):=r2d(asin(s)) /* 角度の逆余弦、逆正弦 */$
dis(p1,p2):=sqrt((p2-p1).(p2-p1)) /* 2点間の距離 */$
ppie(p1,p2,P1,P2):=p1*P2/(P1+P2)+p2*P1/(P1+P2) /* p1,p2のP1:P2の内分・外分点 */$
A(p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p2,p3)^2-dis(p3,p1)^2)/(2*dis(p1,p2)*dis(p2,p3))) /* 3点から角度 */$
A3(p4,p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p3,p4)^2-dis(p4-p3,p2-p1)^2)/(2*dis(p1,p2)*dis(p3,p4))) /* 空間の4点から角度 */$
As(s1,s2,s3):=dacos((s2^2+s3^2-s1^2)/(2*s2*s3)) /* 3辺から角度 */$
lAss(A,s2,s3):=sqrt(s2^2+s3^2-2*s2*s3*dcos(A)) /* 2辺と1角から辺 */$
S(p1,p2,p3):=dis(p1,p2)*dis(p2,p3)*dsin(A(p3,p2,p1))/2 /* 3点から面積 */$
vp(p1,p2,p3):=p2+(p1-p2).(p3-p2)/dis(p3,p2)*(p3-p2)/dis(p3,p2) /* p1から直線p2p3へ下した垂線の足 */$
lPB(p1,p2):=([x,y,z]-(p1+p2)/2).(p2-p1)=0 /* p1,p2の垂直二等分面 */$
cir(p,r,tm,tM):=parametric(p[1]+r*dcos(t),p[2]+r*dsin(t),t,tm,tM) /* 中心p、半径r、偏角tm->tMの円弧 */$
lab(nam,p):=label([nam,p[1],p[2],p[3]]) /* 図中の文字 */$
sE(p1,p2,p3,p4):=block([p,q,s,a],e1:p1+p*(p2-p1),e2:p3+q*(p4-p3),s:solve([e1[1]=e2[1],e1[2]=e2[2]],[p,q]),a:subst(s[1],e1)) /* 線分p1p2と線分p3p4の交点 */$
perp(p1,p2):=block([p],p:[p1[2]*p2[3]-p1[3]*p2[2],p1[3]*p2[1]-p1[1]*p2[3],p1[1]*p2[2]-p1[2]*p2[1]],p:p/dis([0,0,0],p)) /*p1,p2に対し垂直な単位ベクトル*/$
imp(e,p,r):=implicit(e,x,-r+p[1],r+p[1],y,-r+p[2],r+p[2],z,-r+p[3],r+p[3]) /* p+-[r,r,r]の範囲で陰関数eを描く */$
volp(p1,p2,p3,d):=block([p0,py,px,vx,vy,vX,vY,p11,p21],
/**/p0:vp(p1,p2,p3),if dis(p0,p2)<0.01 then p21:ppie(p2,p3,1,1) else p21:p2,
/**/(py:perp(p21-p0,p1-p0),numer),(px:perp(py,p21-p0),numer),
/**/vx:(p1-p0).px,vy:(p1-p0).py,vX:vx*dcos(d)-vy*dsin(d),vY:vx*dsin(d)+vy*dcos(d),print(px,py,vx,vy),
/**/p11:p0+vX*(px)+vY*(py)) /* 点p1を、線分p2p3を軸にd°回転した点p11 */$

view0:view=[60,140] /* "北極から60度、(0,-1,0)から反時計回りに130度の方向から原点を見る" */$
KAITOU:["面",14,"頂点",12,"辺",24] /*(▲変更部分1) */ $
n:4 /*(▲変更部分1) */;
pv11:[0.5,0.5,0];pv12:volp(pv11,[0,0,-1],[0,0,3],360/n),numer;pv13:volp(pv12,[0,0,-1],[0,0,3],360/n),numer;pv14:volp(pv13,[0,0,-1],[0,0,3],360/n),numer;ptL1:[pv11,pv12,pv13,pv14,pv11] /*(▲変更部分1) */;
pv21:[1,0,0.5],numer;pv22:volp(pv21,[0,0,-1],[0,0,3],360/n),numer;pv23:volp(pv22,[0,0,-1],[0,0,3],360/n),numer;pv24:volp(pv23,[0,0,-1],[0,0,3],360/n),numer;ptL12:[pv11,pv21,pv12,pv22,pv13,pv23,pv14,pv24,pv11] /*(▲変更部分1) */;
pv31:[0.5,0.5,1],numer;pv32:volp(pv31,[0,0,-1],[0,0,3],360/n),numer;pv33:volp(pv32,[0,0,-1],[0,0,3],360/n),numer;pv34:volp(pv33,[0,0,-1],[0,0,3],360/n),numer;ptL3:[pv31,pv32,pv33,pv34,pv31];ptL23:[pv21,pv32,pv22,pv33,pv23,pv34,pv24,pv31,pv21] /*(▲変更部分1) */;

zm:-0.1$zM:1.1$xm:zm*ap3[1]-1$xM:zM*ap3[1]-1$ym:zm*ap3[2]-1$yM:zM*ap3[2]-1 /* "x,y,zの表示範囲の設定" */$
title1:title=" " /* 図形のタイトル(頂点の位置) */;
wxdraw3d(title1,
/*....*/xrange=[xm,xM],yrange=[ym,yM],zrange=[zm,zM],
/*....*/view0 ,surface_hide = true,enhanced3d = true,
points_joined =true,
line_width=3,color=cyan,points(ptL1)/**/,
line_width=3,color=blue,points(ptL12),points(ptL3),points(ptL23)/*(▲変更部分2) */,
color=blue
) /*pLのグラフ表示*/$
SUJIMITI:"底面の頂点、次の段の頂点、・・・と順に計算すると、" $
print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$

◎上のMaximaコマンドを実行せよ。
◎上のMaximaコマンドを、以下のように修正して実行し、結果を比較して考察せよ。
MONDAI:"練習32 144 正四角すいの各辺の中点を通る面で、5個の角を切り取った多面体の面・頂点・辺の数" /*(▲変更部分0) */$
KAITOU:["面",10,"頂点",8,"辺",16] /*(▲変更部分1) */$
n:4 /*(▲変更部分1) */;
pv11:[0.5,0,0];pv12:volp(pv11,[0,0,-1],[0,0,3],360/n),numer;pv13:volp(pv12,[0,0,-1],[0,0,3],360/n),numer;pv14:volp(pv13,[0,0,-1],[0,0,3],360/n),numer;ptL1:[pv11,pv12,pv13,pv14,pv11] /*(▲変更部分1) */;
pv21:[0.25,-0.25,0.5],numer;pv22:volp(pv21,[0,0,-1],[0,0,3],360/n),numer;pv23:volp(pv22,[0,0,-1],[0,0,3],360/n),numer;pv24:volp(pv23,[0,0,-1],[0,0,3],360/n),numer;ptL2:[pv21,pv22,pv23,pv24,pv21];ptL12:[pv11,pv21,pv12,pv22,pv13,pv23,pv14,pv24,pv11] /*(▲変更部分1) */;
line_width=3,color=blue,points(ptL2),points(ptL12)/*(▲変更部分2) */,


   B 正多面体から切り取った立体

◆コマンド番号145
● 正六面体を、3頂点を通る平面で切った断面
●●●●●●●●●●●●●●●●
kill(all) $
MONDAI:"145 正六面体ABCD-EFGHを頂点B,D,Eを通る平面で切った断面BDFはどんな三角形か" /*(▲変更部分0) */$
KOUSATU:"正六面体の1辺を1として、断面の三角形の1辺の長さを考えると・・・"$

KANSUU:"定数・関数定義";
ap:[8.3/6,6.8/6] /* 2dグラフのアスペクト比の調整 */ $
ap3:[2,2,1] /* 3dグラフのアスペクト比の調整 */ $
r2d(A):=A/%pi*180 /* 弧度→角度 */$
d2r(A):=A/180*%pi /* 角度→弧度 */$
dcos(A):=cos(d2r(A));dsin(A):=sin(d2r(A)) /* 角度の余弦、正弦 */$
dacos(s):=r2d(acos(s));dasin(s):=r2d(asin(s)) /* 角度の逆余弦、逆正弦 */$
dis(p1,p2):=sqrt((p2-p1).(p2-p1)) /* 2点間の距離 */$
ppie(p1,p2,P1,P2):=p1*P2/(P1+P2)+p2*P1/(P1+P2) /* p1,p2のP1:P2の内分・外分点 */$
A(p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p2,p3)^2-dis(p3,p1)^2)/(2*dis(p1,p2)*dis(p2,p3))) /* 3点から角度 */$
A3(p4,p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p3,p4)^2-dis(p4-p3,p2-p1)^2)/(2*dis(p1,p2)*dis(p3,p4))) /* 空間の4点から角度 */$
As(s1,s2,s3):=dacos((s2^2+s3^2-s1^2)/(2*s2*s3)) /* 3辺から角度 */$
S(p1,p2,p3):=dis(p1,p2)*dis(p2,p3)*dsin(A(p3,p2,p1))/2 /* 3点から面積 */$
lAss(A,s2,s3):=sqrt(s2^2+s3^2-2*s2*s3*dcos(A)) /* 2辺と1角から辺 */$
lPB(p1,p2):=([x,y,z]-(p1+p2)/2).(p2-p1)=0 /* p1,p2の垂直二等分面 */$
vp(p1,p2,p3):=p2+(p1-p2).(p3-p2)/dis(p3,p2)*(p3-p2)/dis(p3,p2) /* p1から直線p2p3へ下した垂線の足 */$
cir(p,r,tm,tM):=parametric(p[1]+r*dcos(t),p[2]+r*dsin(t),t,tm,tM) /* 中心p、半径r、偏角tm->tMの円弧 */$
lab(nam,p):=label([nam,p[1],p[2],p[3]]) /* 図中の文字 */$
sE(p1,p2,p3,p4):=block([p,q,s,a],e1:p1+p*(p2-p1),e2:p3+q*(p4-p3),s:solve([e1[1]=e2[1],e1[2]=e2[2]],[p,q]),a:subst(s[1],e1)) /* 線分p1p2と線分p3p4の交点 */$
perp(p1,p2):=block([p],p:[p1[2]*p2[3]-p1[3]*p2[2],p1[3]*p2[1]-p1[1]*p2[3],p1[1]*p2[2]-p1[2]*p2[1]],p:p/dis([0,0,0],p)) /*p1,p2に対し垂直な単位ベクトル*/$
imp(e,p,r):=implicit(e,x,-r+p[1],r+p[1],y,-r+p[2],r+p[2],z,-r+p[3],r+p[3]) /* p+-[r,r,r]の範囲で陰関数eを描く */$
volp(p1,p2,p3,d):=block([p0,py,px,vx,vy,vX,vY,p11,p21],
/**/p0:vp(p1,p2,p3),if dis(p0,p2)<0.01 then p21:ppie(p2,p3,1,1) else p21:p2,
/**/(px:perp(p21-p0,p1-p0),numer),(py:perp(px,p21-p0),numer),
/**/vx:(p1-p0).px,vy:(p1-p0).py,vX:vx*dcos(d)-vy*dsin(d),vY:vx*dsin(d)+vy*dcos(d),print(px,py,vx,vy),
/**/p11:p0+vX*(px)+vY*(py)) /* 点p1を、線分p2p3を軸にd°回転した点p11 */$

view0:view=[60,140] /* "北極から60度、(0,-1,0)から反時計回りに130度の方向から原点を見る" */$
KAITOU:["正三角形"] /*(▲変更部分1) */ $
n:4 /*(▲変更部分1) */;
pv11:[0.5,0.5,1];pv12:volp(pv11,[0,0,-1],[0,0,3],360/n),numer;pv13:volp(pv12,[0,0,-1],[0,0,3],360/n),numer;pv14:volp(pv13,[0,0,-1],[0,0,3],360/n),numer;ptL1:[pv12,pv13,pv14,pv12] /*(▲変更部分1) */;
pv21:[0.5,0.5,0],numer;pv22:volp(pv21,[0,0,-1],[0,0,3],360/n),numer;pv23:volp(pv22,[0,0,-1],[0,0,3],360/n),numer;pv24:volp(pv23,[0,0,-1],[0,0,3],360/n),numer;ptL2:[pv21,pv22,pv23,pv24,pv21] /*(▲変更部分1) */;
ptL12:[pv21,pv12,pv22,pv23,pv13,pv14,pv24,pv21,pv14] /*(▲変更部分1) */;

zm:-0.1$zM:1.1$xm:zm*ap3[1]-1$xM:zM*ap3[1]-1$ym:zm*ap3[2]-1$yM:zM*ap3[2]-1 /* "x,y,zの表示範囲の設定" */$
title1:title=" " /* 図形のタイトル(頂点の位置) */;
wxdraw3d(title1,
/*....*/xrange=[xm,xM],yrange=[ym,yM],zrange=[zm,zM],
/*....*/view0 ,surface_hide = true,enhanced3d = true,
points_joined =true,
line_width=3,color=cyan,points(ptL1)/**/,
line_width=3,color=blue,points(ptL2),points(ptL12)/*(▲変更部分2) */,
color=blue
) /*pLのグラフ表示*/$
SUJIMITI:"断面の三角形の1辺は、正六面体の面の(   )だから、長さは、(   )" /*(▲変更部分3) */$
print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$

◎上のMaximaコマンドを実行せよ。
◎上のMaximaコマンドを、以下のように修正して実行し、結果を比較して考察せよ。
MONDAI:"145 正六面体ABCD-EFGHを頂点B,D,Eを通る平面で切った立体を、さらに、BDの中点をP、BEの中点をRとし、Pと頂点C,Fを通る平面で切ったときにできる断面はどんな図形か" /*(▲変更部分0) */$
KAITOU:["最初の断面の正三角形を、その2辺の中点p,qを結ぶ線で切ってできる等脚台形と合同な図形"] /*(▲変更部分1) */$
n:4 /*(▲変更部分1) */;
pv11:[0.5,0.5,1];pv12:volp(pv11,[0,0,-1],[0,0,3],360/n),numer;pv13:volp(pv12,[0,0,-1],[0,0,3],360/n),numer;pv14:volp(pv13,[0,0,-1],[0,0,3],360/n),numer;pv15:[0,0,1];ptL1:[pv15,pv13,pv14,pv15] /*(▲変更部分1) */;
pv21:[0.5,0.5,0],numer;pv22:volp(pv21,[0,0,-1],[0,0,3],360/n),numer;pv23:volp(pv22,[0,0,-1],[0,0,3],360/n),numer;pv24:volp(pv23,[0,0,-1],[0,0,3],360/n),numer;ptL2:[pv21,pv22,pv23,pv24,pv21] /*(▲変更部分1) */;
ptL12:[pv22,pv13,pv23,pv24,pv14,pv21,pv22] /*(▲変更部分1) */;
pv31:[0,0.5,0.5];ptL312:[pv21,pv31,pv15,pv31,pv22] /*(▲変更部分1) */;
line_width=3,color=blue,points(ptL2),points(ptL12),points(ptL312)/*(▲変更部分2) */,
SUJIMITI:"最初の断面の三角形の2辺の各(  )を通るように切り取るので、できる断面の1辺は、最初の断面の正三角形の辺と(  )で、残り3辺は、その(  )" /*(▲変更部分3) */$


◆コマンド番号146
● 正六面体から切り出した立体
●●●●●●●●●●●●●●●●
kill(all) $
MONDAI:["146 正六面体をABCD-EFGHとして、A,C,F,Hを頂点とする立体A-CFHはどんな立体か"] /*(▲変更部分0) */$
KOUSATU:["正六面体の1辺を1として、できる立体の辺の長さ、頂点に集まる面の数を考えると・・・"]$

KANSUU:"定数・関数定義";
ap:[8.3/6,6.8/6] /* 2dグラフのアスペクト比の調整 */ $
ap3:[2,2,1] /* 3dグラフのアスペクト比の調整 */ $
r2d(A):=A/%pi*180 /* 弧度→角度 */$
d2r(A):=A/180*%pi /* 角度→弧度 */$
dcos(A):=cos(d2r(A));dsin(A):=sin(d2r(A)) /* 角度の余弦、正弦 */$
dacos(s):=r2d(acos(s));dasin(s):=r2d(asin(s)) /* 角度の逆余弦、逆正弦 */$
dis(p1,p2):=sqrt((p2-p1).(p2-p1)) /* 2点間の距離 */$
ppie(p1,p2,P1,P2):=p1*P2/(P1+P2)+p2*P1/(P1+P2) /* p1,p2のP1:P2の内分・外分点 */$
A(p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p2,p3)^2-dis(p3,p1)^2)/(2*dis(p1,p2)*dis(p2,p3))) /* 3点から角度 */$
A3(p4,p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p3,p4)^2-dis(p4-p3,p2-p1)^2)/(2*dis(p1,p2)*dis(p3,p4))) /* 空間の4点から角度 */$
As(s1,s2,s3):=dacos((s2^2+s3^2-s1^2)/(2*s2*s3)) /* 3辺から角度 */$
S(p1,p2,p3):=dis(p1,p2)*dis(p2,p3)*dsin(A(p3,p2,p1))/2 /* 3点から面積 */$
lAss(A,s2,s3):=sqrt(s2^2+s3^2-2*s2*s3*dcos(A)) /* 2辺と1角から辺 */$
lPB(p1,p2):=([x,y,z]-(p1+p2)/2).(p2-p1)=0 /* p1,p2の垂直二等分面 */$
vp(p1,p2,p3):=p2+(p1-p2).(p3-p2)/dis(p3,p2)*(p3-p2)/dis(p3,p2) /* p1から直線p2p3へ下した垂線の足 */$
cir(p,r,tm,tM):=parametric(p[1]+r*dcos(t),p[2]+r*dsin(t),t,tm,tM) /* 中心p、半径r、偏角tm->tMの円弧 */$
lab(nam,p):=label([nam,p[1],p[2],p[3]]) /* 図中の文字 */$
sE(p1,p2,p3,p4):=block([p,q,s,a],e1:p1+p*(p2-p1),e2:p3+q*(p4-p3),s:solve([e1[1]=e2[1],e1[2]=e2[2]],[p,q]),a:subst(s[1],e1)) /* 線分p1p2と線分p3p4の交点 */$
perp(p1,p2):=block([p],p:[p1[2]*p2[3]-p1[3]*p2[2],p1[3]*p2[1]-p1[1]*p2[3],p1[1]*p2[2]-p1[2]*p2[1]],p:p/dis([0,0,0],p)) /*p1,p2に対し垂直な単位ベクトル*/$
imp(e,p,r):=implicit(e,x,-r+p[1],r+p[1],y,-r+p[2],r+p[2],z,-r+p[3],r+p[3]) /* p+-[r,r,r]の範囲で陰関数eを描く */$
volp(p1,p2,p3,d):=block([p0,py,px,vx,vy,vX,vY,p11,p21],
/**/p0:vp(p1,p2,p3),if dis(p0,p2)<0.01 then p21:ppie(p2,p3,1,1) else p21:p2,
/**/(px:perp(p21-p0,p1-p0),numer),(py:perp(px,p21-p0),numer),
/**/vx:(p1-p0).px,vy:(p1-p0).py,vX:vx*dcos(d)-vy*dsin(d),vY:vx*dsin(d)+vy*dcos(d),print(px,py,vx,vy),
/**/p11:p0+vX*(px)+vY*(py)) /* 点p1を、線分p2p3を軸にd°回転した点p11 */$

view0:view=[60,230] /* "北極から60度、(0,-1,0)から反時計回りに130度の方向から原点を見る" */$
n:4 /**/;
pv11:[0.5,0.5,1];pv12:volp(pv11,[0,0,-1],[0,0,3],360/n),numer;pv13:volp(pv12,[0,0,-1],[0,0,3],360/n),numer;pv14:volp(pv13,[0,0,-1],[0,0,3],360/n),numer;ptL1:[pv11,pv12,pv13,pv14,pv11] /*(▲変更部分1) */;
pv21:[0.5,0.5,0];pv22:volp(pv21,[0,0,-1],[0,0,3],360/n),numer;pv23:volp(pv22,[0,0,-1],[0,0,3],360/n),numer;pv24:volp(pv23,[0,0,-1],[0,0,3],360/n),numer;ptL2:[pv21,pv22,pv23,pv24,pv21] /*(▲変更部分1) */;
ptL12:[pv21,pv11,pv12,pv22,pv23,pv13,pv14,pv24,pv21] /*(▲変更部分1) */;
ptL3:[pv11,pv13,pv22,pv11,pv24,pv22,pv13,pv24] /*(▲変更部分1) */;
KAITOU:["辺はすべて",dis(pv11,pv13),"面はすべて正三角形で面数は",4,"頂点に集まる面数は",3,"よって、正四面体"] /*(▲変更部分1) */ $
labA:lab("A",pv11);labC:lab("C",pv13);labF:lab("F",pv22);labH:lab("H",pv24) /*(▲変更部分1) */ ;

zm:-0.1$zM:1.1$xm:zm*ap3[1]-1$xM:zM*ap3[1]-1$ym:zm*ap3[2]-1$yM:zM*ap3[2]-1 /* "x,y,zの表示範囲の設定" */$
title1:title=" " /* 図形のタイトル(頂点の位置) */;
wxdraw3d(title1,
/*....*/xrange=[xm,xM],yrange=[ym,yM],zrange=[zm,zM],
/*....*/view0 ,surface_hide = true,enhanced3d = true,
font_size=13,font = "Helvetica-Bold",points_joined =true,
line_width=3,color=cyan,points(ptL1)/**/,
line_width=3,color=blue,points(ptL2),points(ptL12)/*(▲変更部分2) */,
line_width=3,color=blue,points(ptL3)/*(▲変更部分2) */,
color=black,labA,labC,labF,labH/*(▲変更部分2) */,
color=blue
) /*pLのグラフ表示*/$
SUJIMITI:["正六面体の1辺を1として、三角形AFCの1辺は(  )、できる立体の各辺は(  )、できる立体の各頂点に集まる面の数は(  )となるので・・・"]/*(▲変更部分3) */$
print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$

◎上のMaximaコマンドを実行せよ。
◎上のMaximaコマンドを、以下のように修正して実行し、結果を比較して考察せよ。
MONDAI:["146 正六面体ABCD-EFGHの各面の対角線の交点をP,R,S,T,U,Qとし、これらを頂点とする立体P-RSTU-Qはどんな立体か"] /*(▲変更部分0) */$
pv11:[0.5,0.5,1];pv12:volp(pv11,[0,0,-1],[0,0,3],360/n),numer;pv13:volp(pv12,[0,0,-1],[0,0,3],360/n),numer;pv14:volp(pv13,[0,0,-1],[0,0,3],360/n),numer;ptL1:[pv11,pv12,pv13,pv14,pv11] /*(▲変更部分1) */;
pv21:[0.5,0.5,0];pv22:volp(pv21,[0,0,-1],[0,0,3],360/n),numer;pv23:volp(pv22,[0,0,-1],[0,0,3],360/n),numer;pv24:volp(pv23,[0,0,-1],[0,0,3],360/n),numer;ptL2:[pv21,pv22,pv23,pv24,pv21] /*(▲変更部分1) */;
ptL12:[pv21,pv11,pv12,pv22,pv23,pv13,pv14,pv24,pv21] /*(▲変更部分1) */;
pv311:ppie(pv11,pv13,1,1),numer;pv321:ppie(pv11,pv22,1,1),numer;pv322:ppie(pv12,pv23,1,1),numer;pv323:ppie(pv13,pv24,1,1),numer;pv324:ppie(pv14,pv21,1,1),numer;pv331:ppie(pv21,pv23,1,1),numer /*(▲変更部分1) */;
ptL3:[pv311,pv321,pv322,pv323,pv324,pv321,pv331,pv322,pv311,pv323,pv331,pv324,pv311] /*(▲変更部分1) */;
ptL4:[pv11,pv13,pv22,pv11] /*(▲変更部分1) */;
KAITOU:["辺はすべて",dis(pv321,pv322),"面はすべて正三角形で面数は",8,"頂点に集まる面数は",4,"よって、正八面体"] /*(▲変更部分1) */ $
labA:lab("A",pv11);labC:lab("C",pv13);labF:lab("F",pv22);labP:lab("P",pv311);labR:lab("R",pv321);labS:lab("S",pv322) /*(▲変更部分1) */ ;
line_width=3,color=blue,points(ptL2),points(ptL12)/*(▲変更部分2) */,
line_width=3,color=blue,points(ptL3),points(ptL4)/*(▲変更部分2) */,
color=black,labA,labC,labF,labP,labR,labS/*(▲変更部分2) */,
SUJIMITI:["正六面体の1辺を1として、三角形AFDの1辺は(  )、できる立体の各辺は(  )、できる立体の各頂点に集まる面の数は(  )となるので・・・"]/*(▲変更部分3) */$


◆コマンド番号147
●練習33 正四面体の各辺の中点を頂点とする立体
●●●●●●●●●●●●●●●●
kill(all) $
MONDAI:["練習33 147 正四面体をA-BCD、各辺の中点をP,Q,R,S,T,Uとして、P,Q,P,S,T,Uを頂点とする立体P-QRST-Uはどんな立体か"] /*(▲変更部分0) */$
KOUSATU:["正四面体の1辺を1として、できる立体の辺の長さ、頂点に集まる面の数を考えると・・・"]$

KANSUU:"定数・関数定義";
ap:[8.3/6,6.8/6] /* 2dグラフのアスペクト比の調整 */ $
ap3:[2,2,1] /* 3dグラフのアスペクト比の調整 */ $
r2d(A):=A/%pi*180 /* 弧度→角度 */$
d2r(A):=A/180*%pi /* 角度→弧度 */$
dcos(A):=cos(d2r(A));dsin(A):=sin(d2r(A)) /* 角度の余弦、正弦 */$
dacos(s):=r2d(acos(s));dasin(s):=r2d(asin(s)) /* 角度の逆余弦、逆正弦 */$
dis(p1,p2):=sqrt((p2-p1).(p2-p1)) /* 2点間の距離 */$
ppie(p1,p2,P1,P2):=p1*P2/(P1+P2)+p2*P1/(P1+P2) /* p1,p2のP1:P2の内分・外分点 */$
A(p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p2,p3)^2-dis(p3,p1)^2)/(2*dis(p1,p2)*dis(p2,p3))) /* 3点から角度 */$
A3(p4,p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p3,p4)^2-dis(p4-p3,p2-p1)^2)/(2*dis(p1,p2)*dis(p3,p4))) /* 空間の4点から角度 */$
As(s1,s2,s3):=dacos((s2^2+s3^2-s1^2)/(2*s2*s3)) /* 3辺から角度 */$
S(p1,p2,p3):=dis(p1,p2)*dis(p2,p3)*dsin(A(p3,p2,p1))/2 /* 3点から面積 */$
lAss(A,s2,s3):=sqrt(s2^2+s3^2-2*s2*s3*dcos(A)) /* 2辺と1角から辺 */$
lPB(p1,p2):=([x,y,z]-(p1+p2)/2).(p2-p1)=0 /* p1,p2の垂直二等分面 */$
vp(p1,p2,p3):=p2+(p1-p2).(p3-p2)/dis(p3,p2)*(p3-p2)/dis(p3,p2) /* p1から直線p2p3へ下した垂線の足 */$
cir(p,r,tm,tM):=parametric(p[1]+r*dcos(t),p[2]+r*dsin(t),t,tm,tM) /* 中心p、半径r、偏角tm->tMの円弧 */$
lab(nam,p):=label([nam,p[1],p[2],p[3]]) /* 図中の文字 */$
sE(p1,p2,p3,p4):=block([p,q,s,a],e1:p1+p*(p2-p1),e2:p3+q*(p4-p3),s:solve([e1[1]=e2[1],e1[2]=e2[2]],[p,q]),a:subst(s[1],e1)) /* 線分p1p2と線分p3p4の交点 */$
perp(p1,p2):=block([p],p:[p1[2]*p2[3]-p1[3]*p2[2],p1[3]*p2[1]-p1[1]*p2[3],p1[1]*p2[2]-p1[2]*p2[1]],p:p/dis([0,0,0],p)) /*p1,p2に対し垂直な単位ベクトル*/$
imp(e,p,r):=implicit(e,x,-r+p[1],r+p[1],y,-r+p[2],r+p[2],z,-r+p[3],r+p[3]) /* p+-[r,r,r]の範囲で陰関数eを描く */$
volp(p1,p2,p3,d):=block([p0,py,px,vx,vy,vX,vY,p11,p21],
/**/p0:vp(p1,p2,p3),if dis(p0,p2)<0.01 then p21:ppie(p2,p3,1,1) else p21:p2,
/**/(px:perp(p21-p0,p1-p0),numer),(py:perp(px,p21-p0),numer),
/**/vx:(p1-p0).px,vy:(p1-p0).py,vX:vx*dcos(d)-vy*dsin(d),vY:vx*dsin(d)+vy*dcos(d),print(px,py,vx,vy),
/**/p11:p0+vX*(px)+vY*(py)) /* 点p1を、線分p2p3を軸にd°回転した点p11 */$

view0:view=[60,140] /* "北極から60度、(0,-1,0)から反時計回りに130度の方向から原点を見る" */$
n:3 /**/;
pv11:[0,0,sqrt(2/3)],numer;pv21:[sqrt(1/3),0,0],numer;pv22:volp(pv21,[0,0,-1],[0,0,3],360/n),numer;pv23:volp(pv22,[0,0,-1],[0,0,3],360/n),numer;ptL1:[pv11,pv21,pv22,pv11,pv22,pv23,pv11,pv23,pv21] /**/;
pv121:ppie(pv11,pv21,1,1),numer;pv122:ppie(pv11,pv22,1,1);pv123:ppie(pv11,pv23,1,1);pv221:ppie(pv21,pv22,1,1);pv222:ppie(pv22,pv23,1,1);pv223:ppie(pv23,pv21,1,1) /*(▲変更部分1) */;
ptL12:[pv121,pv122,pv123,pv121,pv221,pv122,pv222,pv123,pv223,pv121] /*(▲変更部分1) */;
ptL2:[pv221,pv222,pv223,pv221] /*(▲変更部分1) */;
KAITOU:["辺はすべて",dis(pv121,pv122),"面はすべて正三角形で面数は",8,"頂点に集まる面数は",4,"よって、正八面体"] /*(▲変更部分1) */ $
labA:lab("A",pv11);labB:lab("B",pv21);labC:lab("C",pv22);labP:lab("P",pv121);labQ:lab("Q",pv122);labS:lab("S",pv221);labT:lab("T",pv222) /*(▲変更部分1) */ ;

zm:-0.1$zM:0.82$xm:zm*ap3[1]-1$xM:zM*ap3[1]-1$ym:zm*ap3[2]-1$yM:zM*ap3[2]-1 /* "x,y,zの表示範囲の設定" */$
title1:title=" " /* 図形のタイトル(頂点の位置) */;
wxdraw3d(title1,
/*....*/xrange=[xm,xM],yrange=[ym,yM],zrange=[zm,zM],
/*....*/view0 ,surface_hide = true,enhanced3d = true,
font_size=13,font = "Helvetica-Bold",points_joined =true,
line_width=1,color=cyan,points(ptL1)/**/,
line_width=1,color=blue,points(ptL2),points(ptL12)/*(▲変更部分2) */,
color=black,labA,labB,labC,labP,labQ,labS,labT/*(▲変更部分2) */,
color=blue
) /*pLのグラフ表示*/$

SUJIMITI:["正四面体の1辺を1として、できる立体の各辺は(  )","面は(  )で、面数は(  )","各頂点に集まる面の数は(  )となるので・・・"]/**/$
print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$

◎上のMaximaコマンドを実行せよ。
◎上のMaximaコマンドを、以下のように修正して実行し、結果を比較して考察せよ。
MONDAI:["練習33 147 正四面体をA-BCD、各面の重心をP,Q,R,Sとして、P,Q,P,Sを頂点とする立体PQR-Sはどんな立体か"] /*(▲変更部分0) */$
pv121:(pv11+pv21+pv22)/3,numer;pv122:(pv11+pv22+pv23)/3,numer;pv123:(pv11+pv23+pv21)/3,numer;pv221:(pv21+pv22+pv23)/3,numer /*(▲変更部分1) */;
ptL12:[pv121,pv122,pv123,pv121,pv221,pv122,pv221,pv123] /*(▲変更部分1) */;
ptL2:[pv221] /*(▲変更部分1) */;
KAITOU:["辺はすべて",dis(pv121,pv122),"面はすべて正三角形で面数は",4,"頂点に集まる面数は",3,"よって、正四面体"] /*(▲変更部分1) */ $
labA:lab("A",pv11);labB:lab("B",pv21);labC:lab("C",pv22);labP:lab("P",pv121);labQ:lab("Q",pv122);labS:lab("S",pv221) /*(▲変更部分1) */ ;
line_width=1,color=blue,points(ptL2),points(ptL12)/*(▲変更部分2) */,
color=black,labA,labB,labC,labP,labQ,labS/*(▲変更部分2) */,


:
  202.研究 正多面体の体積

◆コマンド番号148
●研究 正多面体の体積
●●●●●●●●●●●●●●●●
kill(all) $
MONDAI:["研究 148 正六面体ABCD-EFGHの各面の対角線の交点をP,R,S,T,U,Qとし、これらを頂点とする正八面体P-RSTU-Qの体積は"] /* */$
KOUSATU:["正六面体の1辺を1として、できる立体の辺の長さ、頂点に集まる面の数を考えると・・・"]$

KANSUU:"定数・関数定義";
ap:[8.3/6,6.8/6] /* 2dグラフのアスペクト比の調整 */ $
ap3:[2,2,1] /* 3dグラフのアスペクト比の調整 */ $
r2d(A):=A/%pi*180 /* 弧度→角度 */$
d2r(A):=A/180*%pi /* 角度→弧度 */$
dcos(A):=cos(d2r(A));dsin(A):=sin(d2r(A)) /* 角度の余弦、正弦 */$
dacos(s):=r2d(acos(s));dasin(s):=r2d(asin(s)) /* 角度の逆余弦、逆正弦 */$
dis(p1,p2):=sqrt((p2-p1).(p2-p1)) /* 2点間の距離 */$
ppie(p1,p2,P1,P2):=p1*P2/(P1+P2)+p2*P1/(P1+P2) /* p1,p2のP1:P2の内分・外分点 */$
A(p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p2,p3)^2-dis(p3,p1)^2)/(2*dis(p1,p2)*dis(p2,p3))) /* 3点から角度 */$
A3(p4,p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p3,p4)^2-dis(p4-p3,p2-p1)^2)/(2*dis(p1,p2)*dis(p3,p4))) /* 空間の4点から角度 */$
As(s1,s2,s3):=dacos((s2^2+s3^2-s1^2)/(2*s2*s3)) /* 3辺から角度 */$
S(p1,p2,p3):=dis(p1,p2)*dis(p2,p3)*dsin(A(p3,p2,p1))/2 /* 3点から面積 */$
lAss(A,s2,s3):=sqrt(s2^2+s3^2-2*s2*s3*dcos(A)) /* 2辺と1角から辺 */$
lPB(p1,p2):=([x,y,z]-(p1+p2)/2).(p2-p1)=0 /* p1,p2の垂直二等分面 */$
vp(p1,p2,p3):=p2+(p1-p2).(p3-p2)/dis(p3,p2)*(p3-p2)/dis(p3,p2) /* p1から直線p2p3へ下した垂線の足 */$
cir(p,r,tm,tM):=parametric(p[1]+r*dcos(t),p[2]+r*dsin(t),t,tm,tM) /* 中心p、半径r、偏角tm->tMの円弧 */$
lab(nam,p):=label([nam,p[1],p[2],p[3]]) /* 図中の文字 */$
sE(p1,p2,p3,p4):=block([p,q,s,a],e1:p1+p*(p2-p1),e2:p3+q*(p4-p3),s:solve([e1[1]=e2[1],e1[2]=e2[2]],[p,q]),a:subst(s[1],e1)) /* 線分p1p2と線分p3p4の交点 */$
perp(p1,p2):=block([p],p:[p1[2]*p2[3]-p1[3]*p2[2],p1[3]*p2[1]-p1[1]*p2[3],p1[1]*p2[2]-p1[2]*p2[1]],p:p/dis([0,0,0],p)) /*p1,p2に対し垂直な単位ベクトル*/$
imp(e,p,r):=implicit(e,x,-r+p[1],r+p[1],y,-r+p[2],r+p[2],z,-r+p[3],r+p[3]) /* p+-[r,r,r]の範囲で陰関数eを描く */$
volp(p1,p2,p3,d):=block([p0,py,px,vx,vy,vX,vY,p11,p21],
/**/p0:vp(p1,p2,p3),if dis(p0,p2)<0.01 then p21:ppie(p2,p3,1,1) else p21:p2,
/**/(px:perp(p21-p0,p1-p0),numer),(py:perp(px,p21-p0),numer),
/**/vx:(p1-p0).px,vy:(p1-p0).py,vX:vx*dcos(d)-vy*dsin(d),vY:vx*dsin(d)+vy*dcos(d),print(px,py,vx,vy),
/**/p11:p0+vX*(px)+vY*(py)) /* 点p1を、線分p2p3を軸にd°回転した点p11 */$

view0:view=[60,140] /* "北極から60度、(0,-1,0)から反時計回りに140度の方向から原点を見る" *//*(▲変更部分1) */$
n:4 /**/;
pv11:[0.5,0.5,1];pv12:volp(pv11,[0,0,-1],[0,0,3],360/n),numer;pv13:volp(pv12,[0,0,-1],[0,0,3],360/n),numer;pv14:volp(pv13,[0,0,-1],[0,0,3],360/n),numer;ptL1:[pv11,pv12,pv13,pv14,pv11] /**/;
pv21:[0.5,0.5,0];pv22:volp(pv21,[0,0,-1],[0,0,3],360/n),numer;pv23:volp(pv22,[0,0,-1],[0,0,3],360/n),numer;pv24:volp(pv23,[0,0,-1],[0,0,3],360/n),numer;ptL2:[pv21,pv22,pv23,pv24,pv21] /**/;
ptL12:[pv21,pv11,pv12,pv22,pv23,pv13,pv14,pv24,pv21] /**/;
pv311:ppie(pv11,pv13,1,1),numer;pv321:ppie(pv11,pv22,1,1),numer;pv322:ppie(pv12,pv23,1,1),numer;pv323:ppie(pv13,pv24,1,1),numer;pv324:ppie(pv14,pv21,1,1),numer;pv331:ppie(pv21,pv23,1,1),numer /**/;
ptL3:[pv311,pv321,pv322,pv323,pv324,pv321,pv331,pv322,pv311,pv323,pv331,pv324,pv311] /**/;
KAITOU:["辺はすべて",dis(pv321,pv322),"断面RSTUの面積",dis(pv321,pv322)^2,"正八面体(上下の四角すいの体積の和)",dis(pv321,pv322)^2*2/3] /**/ $
labA:lab("A",pv11);labC:lab("C",pv13);labF:lab("F",pv22);labP:lab("P",pv311);labR:lab("R",pv321);labS:lab("S",pv322) /**/ ;

zm:-0.1$zM:1.1$xm:zm*ap3[1]-1$xM:zM*ap3[1]-1$ym:zm*ap3[2]-1$yM:zM*ap3[2]-1 /* "x,y,zの表示範囲の設定" */$
title1:title=" " /* 図形のタイトル(頂点の位置) */;
wxdraw3d(title1,
/*....*/xrange=[xm,xM],yrange=[ym,yM],zrange=[zm,zM],
/*....*/view0 ,surface_hide = true,enhanced3d = true,
font_size=13,font = "Helvetica-Bold",points_joined =true,
line_width=1,color=cyan,points(ptL1)/**/,
line_width=1,color=blue,points(ptL2),points(ptL12)/*(▲変更部分2) */,
line_width=1,color=blue,points(ptL3)/*(▲変更部分2) */,
color=black,labA,labC,labF,labP,labR,labS/*(▲変更部分2) */,
color=blue
) /*pLのグラフ表示*/$
SUJIMITI:["正六面体の1辺を1として、三角形AFDの1辺は(  )、できる立体の各辺は(  )、できる立体の各頂点に集まる面の数は(  )となるので・・・"]/*(▲変更部分3) */$
print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$

◎上のMaximaコマンドを実行せよ。
◎上のMaximaコマンドを、以下のように修正して実行し、断面RSTUの面積を考察せよ。
view0:view=[180,0] /* "北極から60度、(0,-1,0)から反時計回りに140度の方向から原点を見る" *//*(▲変更部分1) */$

◎上のMaximaコマンドを、以下のように修正して実行し、正四角すいP-RSTUとRSTU-Qの高さの和を考察せよ。
view0:view=[90,180] /* "北極から60度、(0,-1,0)から反時計回りに140度の方向から原点を見る" *//*(▲変更部分1) */$


◆コマンド番号149
●練習1 正多面体の体積
●●●●●●●●●●●●●●●●
kill(all) $
MONDAI:["練習1 149 正六面体ABCD-EFGHのB,D,E,Gを頂点とする立体B-DEGの体積は"] /* */$
KOUSATU:["正六面体の1辺を1として、できる立体の辺の長さ、頂点に集まる面の数を考えると・・・"]$

KANSUU:"定数・関数定義";
ap:[8.3/6,6.8/6] /* 2dグラフのアスペクト比の調整 */ $
ap3:[2,2,1] /* 3dグラフのアスペクト比の調整 */ $
r2d(A):=A/%pi*180 /* 弧度→角度 */$
d2r(A):=A/180*%pi /* 角度→弧度 */$
dcos(A):=cos(d2r(A));dsin(A):=sin(d2r(A)) /* 角度の余弦、正弦 */$
dacos(s):=r2d(acos(s));dasin(s):=r2d(asin(s)) /* 角度の逆余弦、逆正弦 */$
dis(p1,p2):=sqrt((p2-p1).(p2-p1)) /* 2点間の距離 */$
ppie(p1,p2,P1,P2):=p1*P2/(P1+P2)+p2*P1/(P1+P2) /* p1,p2のP1:P2の内分・外分点 */$
A(p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p2,p3)^2-dis(p3,p1)^2)/(2*dis(p1,p2)*dis(p2,p3))) /* 3点から角度 */$
A3(p4,p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p3,p4)^2-dis(p4-p3,p2-p1)^2)/(2*dis(p1,p2)*dis(p3,p4))) /* 空間の4点から角度 */$
As(s1,s2,s3):=dacos((s2^2+s3^2-s1^2)/(2*s2*s3)) /* 3辺から角度 */$
S(p1,p2,p3):=dis(p1,p2)*dis(p2,p3)*dsin(A(p3,p2,p1))/2 /* 3点から面積 */$
lAss(A,s2,s3):=sqrt(s2^2+s3^2-2*s2*s3*dcos(A)) /* 2辺と1角から辺 */$
lPB(p1,p2):=([x,y,z]-(p1+p2)/2).(p2-p1)=0 /* p1,p2の垂直二等分面 */$
vp(p1,p2,p3):=p2+(p1-p2).(p3-p2)/dis(p3,p2)*(p3-p2)/dis(p3,p2) /* p1から直線p2p3へ下した垂線の足 */$
cir(p,r,tm,tM):=parametric(p[1]+r*dcos(t),p[2]+r*dsin(t),t,tm,tM) /* 中心p、半径r、偏角tm->tMの円弧 */$
lab(nam,p):=label([nam,p[1],p[2],p[3]]) /* 図中の文字 */$
sE(p1,p2,p3,p4):=block([p,q,s,a],e1:p1+p*(p2-p1),e2:p3+q*(p4-p3),s:solve([e1[1]=e2[1],e1[2]=e2[2]],[p,q]),a:subst(s[1],e1)) /* 線分p1p2と線分p3p4の交点 */$
perp(p1,p2):=block([p],p:[p1[2]*p2[3]-p1[3]*p2[2],p1[3]*p2[1]-p1[1]*p2[3],p1[1]*p2[2]-p1[2]*p2[1]],p:p/dis([0,0,0],p)) /*p1,p2に対し垂直な単位ベクトル*/$
imp(e,p,r):=implicit(e,x,-r+p[1],r+p[1],y,-r+p[2],r+p[2],z,-r+p[3],r+p[3]) /* p+-[r,r,r]の範囲で陰関数eを描く */$
volp(p1,p2,p3,d):=block([p0,py,px,vx,vy,vX,vY,p11,p21],
/**/p0:vp(p1,p2,p3),if dis(p0,p2)<0.01 then p21:ppie(p2,p3,1,1) else p21:p2,
/**/(px:perp(p21-p0,p1-p0),numer),(py:perp(px,p21-p0),numer),
/**/vx:(p1-p0).px,vy:(p1-p0).py,vX:vx*dcos(d)-vy*dsin(d),vY:vx*dsin(d)+vy*dcos(d),print(px,py,vx,vy),
/**/p11:p0+vX*(px)+vY*(py)) /* 点p1を、線分p2p3を軸にd°回転した点p11 */$

view0:view=[60,230] /* "北極から60度、(0,-1,0)から反時計回りに140度の方向から原点を見る" *//*(▲変更部分1) */$
n:4 /**/;
pv11:[0.5,0.5,1];pv12:volp(pv11,[0,0,-1],[0,0,3],360/n),numer;pv13:volp(pv12,[0,0,-1],[0,0,3],360/n),numer;pv14:volp(pv13,[0,0,-1],[0,0,3],360/n),numer;ptL1:[pv11,pv12,pv13,pv14,pv11] /**/;
pv21:[0.5,0.5,0];pv22:volp(pv21,[0,0,-1],[0,0,3],360/n),numer;pv23:volp(pv22,[0,0,-1],[0,0,3],360/n),numer;pv24:volp(pv23,[0,0,-1],[0,0,3],360/n),numer;pv25:ppie(pv21,pv23,1,1);ptL2:[pv21,pv22,pv23,pv24,pv21] /**/;
ptL12:[pv21,pv11,pv12,pv22,pv23,pv13,pv14,pv24,pv21] /**/;
ptL122:[pv21,pv12,pv23,pv14,pv21,pv23,pv14,pv12,pv25,pv14] /**/;
sBID:sqrt(2)/2,numer;vBDEG:sqrt(2)/2*sqrt(2)/3,numer;
KAITOU:["辺はすべて",dis(pv21,pv12),"断面BIDの面積",sBID,"正四面体(左右の三角すいの体積の和)",vBDEG] /**/ $
labA:lab("A",pv11);labB:lab("B",pv12);labE:lab("E",pv21);labG:lab("G",pv23);labI:lab("I",pv25) /**/ ;

zm:-0.1$zM:1.1$xm:zm*ap3[1]-1$xM:zM*ap3[1]-1$ym:zm*ap3[2]-1$yM:zM*ap3[2]-1 /* "x,y,zの表示範囲の設定" */$
title1:title=" " /* 図形のタイトル(頂点の位置) */;
wxdraw3d(title1,
/*....*/xrange=[xm,xM],yrange=[ym,yM],zrange=[zm,zM],
/*....*/view0 ,surface_hide = true,enhanced3d = true,
font_size=13,font = "Helvetica-Bold",points_joined =true,
line_width=1,color=cyan,points(ptL1)/**/,
line_width=1,color=blue,points(ptL2),points(ptL12)/*(▲変更部分2) */,
line_width=1,color=blue,points(ptL122)/*(▲変更部分2) */,
color=black,labA,labB,labE,labG,labI/*(▲変更部分2) */,
color=blue
) /*pLのグラフ表示*/$
SUJIMITI:["正六面体の1辺を1として、三角形BEGの1辺は(  )、断面BIDの面積は(  )、できる立体の体積(左右の三角錐の体積の和)は(  )となるので・・・"]/*(▲変更部分3) */$
print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$

◎上のMaximaコマンドを実行せよ。
◎上のMaximaコマンドを、以下のように修正して実行し、断面BIDの面積を考察せよ。
view0:view=[90,135] /* "北極から60度、(0,-1,0)から反時計回りに140度の方向から原点を見る" *//*(▲変更部分1) */$

◎上のMaximaコマンドを、以下のように修正して実行し、三角すいE-BIDとG-BIDの高さの和を考察せよ。
view0:view=[90,45] /* "北極から60度、(0,-1,0)から反時計回りに140度の方向から原点を見る" *//*(▲変更部分1) */$


◆コマンド番号150
●研究 正多面体の種類
●●●●●●●●●●●●●●●●
kill(all) $
MONDAI:["研究 150 正方形を面とする正多面体"] /*(▲変更部分1) */$
KOUSATU:["面となる正多角形の辺の数から、正多面体の頂点に集まる面の数を想定し、面の総数をfとして、辺の総数、頂点の総数を求めて・・・"]$

KANSUU:"定数・関数定義";
ap:[8.3/6,6.8/6] /* 2dグラフのアスペクト比の調整 */ $
ap3:[2,2,1] /* 3dグラフのアスペクト比の調整 */ $
r2d(A):=A/%pi*180 /* 弧度→角度 */$
d2r(A):=A/180*%pi /* 角度→弧度 */$
dcos(A):=cos(d2r(A));dsin(A):=sin(d2r(A)) /* 角度の余弦、正弦 */$
dacos(s):=r2d(acos(s));dasin(s):=r2d(asin(s)) /* 角度の逆余弦、逆正弦 */$
dis(p1,p2):=sqrt((p2-p1).(p2-p1)) /* 2点間の距離 */$
ppie(p1,p2,P1,P2):=p1*P2/(P1+P2)+p2*P1/(P1+P2) /* p1,p2のP1:P2の内分・外分点 */$
A(p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p2,p3)^2-dis(p3,p1)^2)/(2*dis(p1,p2)*dis(p2,p3))) /* 3点から角度 */$
A3(p4,p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p3,p4)^2-dis(p4-p3,p2-p1)^2)/(2*dis(p1,p2)*dis(p3,p4))) /* 空間の4点から角度 */$
As(s1,s2,s3):=dacos((s2^2+s3^2-s1^2)/(2*s2*s3)) /* 3辺から角度 */$
S(p1,p2,p3):=dis(p1,p2)*dis(p2,p3)*dsin(A(p3,p2,p1))/2 /* 3点から面積 */$
lAss(A,s2,s3):=sqrt(s2^2+s3^2-2*s2*s3*dcos(A)) /* 2辺と1角から辺 */$
lPB(p1,p2):=([x,y,z]-(p1+p2)/2).(p2-p1)=0 /* p1,p2の垂直二等分面 */$
vp(p1,p2,p3):=p2+(p1-p2).(p3-p2)/dis(p3,p2)*(p3-p2)/dis(p3,p2) /* p1から直線p2p3へ下した垂線の足 */$
cir(p,r,tm,tM):=parametric(p[1]+r*dcos(t),p[2]+r*dsin(t),t,tm,tM) /* 中心p、半径r、偏角tm->tMの円弧 */$
lab(nam,p):=label([nam,p[1],p[2],p[3]]) /* 図中の文字 */$
sE(p1,p2,p3,p4):=block([p,q,s,a],e1:p1+p*(p2-p1),e2:p3+q*(p4-p3),s:solve([e1[1]=e2[1],e1[2]=e2[2]],[p,q]),a:subst(s[1],e1)) /* 線分p1p2と線分p3p4の交点 */$
perp(p1,p2):=block([p],p:[p1[2]*p2[3]-p1[3]*p2[2],p1[3]*p2[1]-p1[1]*p2[3],p1[1]*p2[2]-p1[2]*p2[1]],p:p/dis([0,0,0],p)) /*p1,p2に対し垂直な単位ベクトル*/$
imp(e,p,r):=implicit(e,x,-r+p[1],r+p[1],y,-r+p[2],r+p[2],z,-r+p[3],r+p[3]) /* p+-[r,r,r]の範囲で陰関数eを描く */$
volp(p1,p2,p3,d):=block([p0,py,px,vx,vy,vX,vY,p11,p21],
/**/p0:vp(p1,p2,p3),if dis(p0,p2)<0.01 then p21:ppie(p2,p3,1,1) else p21:p2,
/**/(px:perp(p21-p0,p1-p0),numer),(py:perp(px,p21-p0),numer),
/**/vx:(p1-p0).px,vy:(p1-p0).py,vX:vx*dcos(d)-vy*dsin(d),vY:vx*dsin(d)+vy*dcos(d),print(px,py,vx,vy),
/**/p11:p0+vX*(px)+vY*(py)) /* 点p1を、線分p2p3を軸にd°回転した点p11 */$

view0:view=[60,150] /* "北極から60度、(0,-1,0)から反時計回りに140度の方向から原点を見る" *//**/$
n:4;m:3 /*(▲変更部分2) */;
v:n*f/3;e:n*f/2;e1:v-e+f=2;F:solve(e1,f);F:rhs(F[1]);v:subst(f=F,v);e:subst(f=F,e);f:subst(f=F,f) /*(▲変更部分2) */;
pv11:[0.5,0.5,1];pv12:volp(pv11,[0,0,-1],[0,0,3],360/n),numer;pv13:volp(pv12,[0,0,-1],[0,0,3],360/n),numer;pv14:volp(pv13,[0,0,-1],[0,0,3],360/n),numer;ptL1:[pv11,pv12,pv13,pv14,pv11] /*(▲変更部分2) */;
pv21:[0.5,0.5,0];pv22:volp(pv21,[0,0,-1],[0,0,3],360/n),numer;pv23:volp(pv22,[0,0,-1],[0,0,3],360/n),numer;pv24:volp(pv23,[0,0,-1],[0,0,3],360/n),numer;pv25:ppie(pv21,pv23,1,1);ptL2:[pv21,pv22,pv23,pv24,pv21] /*(▲変更部分2) */;
ptL12:[pv21,pv11,pv12,pv22,pv23,pv13,pv14,pv24,pv21] /*(▲変更部分2) */;
KAITOU:["頂点",v,"辺",e,"面",f,"となり、正",f,"面体"] /**/ $
labA:lab("A",pv11);labB:lab("B",pv12);labE:lab("E",pv21);labF:lab("F",pv22) /*(▲変更部分3) */ ;

zm:-0.1$zM:1.6$xm:zm*ap3[1]-1$xM:zM*ap3[1]-1$ym:zm*ap3[2]-1$yM:zM*ap3[2]-1 /* "x,y,zの表示範囲の設定" */$
title1:title=" " /* 図形のタイトル(頂点の位置) */;
wxdraw3d(title1,
/*....*/xrange=[xm,xM],yrange=[ym,yM],zrange=[zm,zM],
/*....*/view0 ,surface_hide = true,enhanced3d = true,
font_size=13,font = "Helvetica-Bold",points_joined =true,
line_width=1,color=cyan,points(ptL1)/**/,
line_width=1,color=blue,points(ptL2),points(ptL12)/*(▲変更部分4) */,
color=black,labA,labB,labE,labF/*(▲変更部分4) */,
color=blue
) /*pLのグラフ表示*/$
SUJIMITI:["正(  )角形を面とする正多面体の頂点に集まる面の数を(  )、面の総数を(  )として","辺の総数(  )","頂点の総数(  )を求めて,オイラーの公式(   )より・・・"]/**/$
print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$

◎上のMaximaコマンドを実行せよ。
◎上のMaximaコマンドを、以下のように修正して実行し、考察せよ。
MONDAI:["研究 150 正三角形を面とする正多面体"] /*(▲変更部分1)*/$
n:3;m:3 /*(▲変更部分2)*/;
v:n*f/m;e:n*f/2;e1:v-e+f=2;F:solve(e1,f);F:rhs(F[1]);v:subst(f=F,v);e:subst(f=F,e);f:subst(f=F,f) /*(▲変更部分2)*/;
pv11:[1/sqrt(3),0,0];pv12:volp(pv11,[0,0,-1],[0,0,3],360/n),numer;pv13:volp(pv12,[0,0,-1],[0,0,3],360/n),numer;ptL1:[pv11,pv12,pv13,pv11] /*(▲変更部分2)*/;
pv21:[0,0,1];ptL2:[pv21] /*(▲変更部分2)*/;
ptL12:[pv11,pv21,pv12,pv13,pv21] /*(▲変更部分2)*/;
labA:lab("A",pv21);labB:lab("B",pv11);labC:lab("C",pv12) /*(▲変更部分3)*/ ;
line_width=1,color=blue,points(ptL2),points(ptL12)/*(▲変更部分4) */,
color=black,labA,labB,labC/*(▲変更部分4) */,

◎上のMaximaコマンドを、以下のように修正して実行し、考察せよ。
n:3;m:4 /*(▲変更部分2)*/;
v:n*f/m;e:n*f/2;e1:v-e+f=2;F:solve(e1,f);F:rhs(F[1]);v:subst(f=F,v);e:subst(f=F,e);f:subst(f=F,f) /*(▲変更部分2)*/;
pv11:[1/sqrt(3),0,0];pv12:volp(pv11,[0,0,-1],[0,0,3],360/n),numer;pv13:volp(pv12,[0,0,-1],[0,0,3],360/n),numer;ptL1:[pv11,pv12,pv13,pv11] /*(▲変更部分2)*/;
a012:As(sqrt(3)/2,1,sqrt(3)/2),numer;pv21:pv12+[dcos(a012),0,dsin(a012)],numer;pv22:volp(pv21,[0,0,-1],[0,0,3],360/n),numer;pv23:volp(pv22,[0,0,-1],[0,0,3],360/n),numer;ptL2:[pv21,pv22,pv23,pv21] /*(▲変更部分2)*/;
ptL12:[pv11,pv21,pv12,pv22,pv13,pv23,pv11] /*(▲変更部分2)*/;
labA:lab("A",pv21);labB:lab("B",pv22);labD:lab("D",pv11);labE:lab("E",pv12) /*(▲変更部分3)*/ ;
line_width=1,color=blue,points(ptL2),points(ptL12)/*(▲変更部分4) */,
color=black,labA,labB,labD,labE/*(▲変更部分4) */,

◎上のMaximaコマンドを、以下のように修正して実行し、考察せよ。
n:3;m:5 /*(▲変更部分2)*/;
v:n*f/m;e:n*f/2;e1:v-e+f=2;F:solve(e1,f);F:rhs(F[1]);v:subst(f=F,v);e:subst(f=F,e);f:subst(f=F,f) /*(▲変更部分2)*/;
pv11:[1/sqrt(3),0,0];pv12:volp(pv11,[0,0,-1],[0,0,3],360/n),numer;pv13:volp(pv12,[0,0,-1],[0,0,3],360/n),numer;ptL1:[pv11,pv12,pv13,pv11] /*(▲変更部分2)*/;
a012:As((1+sqrt(5))/2,sqrt(3)/2,sqrt(3)/2),numer;pv22:[-1/2,0,0]+[dcos(a012),0,dsin(a012)]*sqrt(3)/2,numer;pv23:volp(pv22,[0,0,-1],[0,0,3],360/n),numer;pv21:volp(pv23,[0,0,-1],[0,0,3],360/n),numer;ptL12:[pv11,pv21,pv12,pv22,pv13,pv23,pv11] /*(▲変更部分2)*/;
a013:180-As(sqrt(5+2*sqrt(5))/2,1,sqrt(3)/2),numer;pv31:pv11+[dcos(a013),0,dsin(a013)],numer;pv32:volp(pv31,[0,0,-1],[0,0,3],360/n),numer;pv33:volp(pv32,[0,0,-1],[0,0,3],360/n),numer;ptL123:[pv11,pv31,pv21,pv32,pv12,pv32,pv22,pv33,pv13,pv33,pv23,pv31] /*(▲変更部分2)*/;
pv41:ppie(pv11,ppie(pv31,pv32,(-1+sqrt(5))/2,1),(1+sqrt(5))/2,-(-1+sqrt(5))/2),numer;pv42:volp(pv41,[0,0,-1],[0,0,3],360/n),numer;pv43:volp(pv42,[0,0,-1],[0,0,3],360/n),numer /*(▲変更部分2)*/;
ptL234:[pv31,pv41,pv21,pv41,pv32,pv42,pv22,pv42,pv33,pv43,pv23,pv43,pv31];ptL4:[pv41,pv42,pv43,pv41] /*(▲変更部分2)*/;
labA:lab("A",pv11);labB:lab("B",pv12);labD:lab("D",pv21);labG:lab("G",pv31);labH:lab("H",pv32) /*(▲変更部分3)*/ ;
labJ:lab("J",pv41)/*;labD:lab("D",pv11);labE:lab("E",pv12);labF:lab("F",pv41);labG:lab("G",pv42)*/ /*(▲変更部分3)*/ ;
line_width=1,color=blue,points(ptL12),points(ptL123),points(ptL234),points(ptL4)/*(▲変更部分4) */,
color=black,labA,labB,labD,labG,labH,labJ/*(▲変更部分4) */,


◆コマンド番号151
●章末問題A1 内心の位置
●●●●●●●●●●●●●●●●
kill(all) $
MONDAI:["章末問題A1 151 AB=4,BC=5,CA=3の三角形ABCの内心をI、AIとBCの交点をDとして、BDは"] /*(▲変更部分1) */$
KOUSATU:["内心は角の二等分線の交点で、角の二等分線は対辺を辺の比に内分するので・・・"]$

KANSUU:"定数・関数定義";
ap2:[8.3/6,6.8/6] /* 2dグラフのアスペクト比の調整 */ $
ap3:[2,2,1] /* 3dグラフのアスペクト比の調整 */ $
r2d(A):=A/%pi*180 /* 弧度→角度 */$
d2r(A):=A/180*%pi /* 角度→弧度 */$
dcos(A):=cos(d2r(A));dsin(A):=sin(d2r(A)) /* 角度の余弦、正弦 */$
dacos(s):=r2d(acos(s));dasin(s):=r2d(asin(s)) /* 角度の逆余弦、逆正弦 */$
dis(p1,p2):=sqrt((p2-p1).(p2-p1)) /* 2点間の距離 */$
ppie(p1,p2,P1,P2):=p1*P2/(P1+P2)+p2*P1/(P1+P2) /* p1,p2のP1:P2の内分・外分点 */$
A(p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p2,p3)^2-dis(p3,p1)^2)/(2*dis(p1,p2)*dis(p2,p3))) /* 3点から角度 */$
A3(p4,p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p3,p4)^2-dis(p4-p3,p2-p1)^2)/(2*dis(p1,p2)*dis(p3,p4))) /* 空間の4点から角度 */$
As(s1,s2,s3):=dacos((s2^2+s3^2-s1^2)/(2*s2*s3)),numer /* 3辺から角度 */$
S(p1,p2,p3):=dis(p1,p2)*dis(p2,p3)*dsin(A(p3,p2,p1))/2 /* 3点から面積 */$
lAss(A,s2,s3):=sqrt(s2^2+s3^2-2*s2*s3*dcos(A)) /* 2辺と1角から辺 */$
lPB(p1,p2):=([x,y,z]-(p1+p2)/2).(p2-p1)=0 /* p1,p2の垂直二等分面 */$
vp(p1,p2,p3):=p2+(p1-p2).(p3-p2)/dis(p3,p2)*(p3-p2)/dis(p3,p2) /* p1から直線p2p3へ下した垂線の足 */$
cir(p,r,tm,tM):=parametric(p[1]+r*dcos(t),p[2]+r*dsin(t),t,tm,tM) /* 中心p、半径r、偏角tm->tMの円弧 */$
lab(nam,p):=label([nam,p[1],p[2]]) /* 図中の文字 */$
sE(p1,p2,p3,p4):=block([p,q,s,a],e1:p1+p*(p2-p1),e2:p3+q*(p4-p3),s:solve([e1[1]=e2[1],e1[2]=e2[2]],[p,q]),a:subst(s[1],e1)) /* 線分p1p2と線分p3p4の交点 */$
perp(p1,p2):=block([p],p:[p1[2]*p2[3]-p1[3]*p2[2],p1[3]*p2[1]-p1[1]*p2[3],p1[1]*p2[2]-p1[2]*p2[1]],p:p/dis([0,0,0],p)) /*p1,p2に対し垂直な単位ベクトル*/$
imp(e,p,r):=implicit(e,x,-r+p[1],r+p[1],y,-r+p[2],r+p[2],z,-r+p[3],r+p[3]) /* p+-[r,r,r]の範囲で陰関数eを描く */$
volp(p1,p2,p3,d):=block([p0,py,px,vx,vy,vX,vY,p11,p21],
/**/p0:vp(p1,p2,p3),if dis(p0,p2)<0.01 then p21:ppie(p2,p3,1,1) else p21:p2,
/**/(px:perp(p21-p0,p1-p0),numer),(py:perp(px,p21-p0),numer),
/**/vx:(p1-p0).px,vy:(p1-p0).py,vX:vx*dcos(d)-vy*dsin(d),vY:vx*dsin(d)+vy*dcos(d),print(px,py,vx,vy),
/**/p11:p0+vX*(px)+vY*(py)) /* 点p1を、線分p2p3を軸にd°回転した点p11 */$

l1:3;l2:4;l3:5;
a1:As(l1,l2,l3),numer;a2:As(l2,l3,l1),numer;a3:As(l3,l1,l2),numer;r:l1/dsin(a1)/2,numer;
pv1:r*[dcos(270-a3),dsin(270-a3)],numer;pv2:r*[dcos(270+a3),dsin(270+a3)],numer;pv3:r*[dcos(270-a3-a2*2),dsin(270-a3-a2*2)],numer;
pv4:ppie(pv1,pv2,l2,l1),numer;pv5:ppie(pv4,pv3,dis(pv1,pv4),dis(pv1,pv3)),numer;
pL1:[pv3,pv1,pv2,pv3,pv4,pv5,pv1];
l4:dis(pv1,pv4),numer;
KAITOU:["BD=",l4] /*(▲変更部分2)*/ $
labA:lab("A",pv3);labB:lab("B",pv1);labC:lab("C",pv2);labD:lab("D",pv4);labI:lab("I",pv5) /**/ ;

ym:-r$yM:r$xm:ym*ap2[1]$xM:yM*ap2[1] /* "x,yの表示範囲の設定" */$
title1:title=" " /* 図形のタイトル(頂点の位置) */;
ym:-r-0.2$yM:r+0.2$xm:ym*ap2[1]$xM:yM*ap2[1] /* "x,yの表示範囲の設定" */$

title1:title=" " /* 図形のタイトル(頂点の位置) */;
draw2d(yrange=[ym,yM],
color=gray,explicit(0,x,xm,xM),implicit(x=0,x,xm,xM,y,ym,yM),
color=gray,parametric(r*dcos(t),r*dsin(t),t,0,360),
color=blue,points_joined =true,points(pL1),
color=black,labA,labB,labC,labD,labI,
color=red)$

SUJIMITI:["角の二等分線は対辺を辺の比に内分するので、BD:DC=( ):( )、AI:ID=( ):( )となり、・・・"]/**/$
print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$

◎上のMaximaコマンドを実行せよ。
◎上のMaximaコマンドを、以下のように修正して実行し、考察せよ。
MONDAI:["章末問題A1 151 AB=4,BC=5,CA=3の三角形ABCの内心をI、AIとBCの交点をDとして、AI:IDは"] /*(▲変更部分1) */$
hi:l2/(l3/(l1+l2)*l2);numhi:num(hi);denhi:denom(hi)/*(▲変更部分2)*/ ;
KAITOU:["AI:ID=",numhi,":",denhi] /*(▲変更部分2)*/ $


◆コマンド番号152
●章末問題A2 内接多角形
●●●●●●●●●●●●●●●●
kill(all) $
MONDAI:["章末問題A2 152 円の内接四角形ABCDで、ABが直径、∠CAB=35°のとき、aCDAは"] /*(▲変更部分1) */$
KOUSATU:["直径上の円周角は90°、円の内接四角形の対角の和は180°だから・・・"] /*(▲変更部分1) */$

KANSUU:"定数・関数定義";
ap2:[8.3/6,6.8/6] /* 2dグラフのアスペクト比の調整 */ $
ap3:[2,2,1] /* 3dグラフのアスペクト比の調整 */ $
r2d(A):=A/%pi*180 /* 弧度→角度 */$
d2r(A):=A/180*%pi /* 角度→弧度 */$
dcos(A):=cos(d2r(A));dsin(A):=sin(d2r(A)) /* 角度の余弦、正弦 */$
dacos(s):=r2d(acos(s));dasin(s):=r2d(asin(s)) /* 角度の逆余弦、逆正弦 */$
dis(p1,p2):=sqrt((p2-p1).(p2-p1)) /* 2点間の距離 */$
ppie(p1,p2,P1,P2):=p1*P2/(P1+P2)+p2*P1/(P1+P2) /* p1,p2のP1:P2の内分・外分点 */$
A(p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p2,p3)^2-dis(p3,p1)^2)/(2*dis(p1,p2)*dis(p2,p3))) /* 3点から角度 */$
A3(p4,p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p3,p4)^2-dis(p4-p3,p2-p1)^2)/(2*dis(p1,p2)*dis(p3,p4))) /* 空間の4点から角度 */$
As(s1,s2,s3):=dacos((s2^2+s3^2-s1^2)/(2*s2*s3)),numer /* 3辺から角度 */$
S(p1,p2,p3):=dis(p1,p2)*dis(p2,p3)*dsin(A(p3,p2,p1))/2 /* 3点から面積 */$
lAss(A,s2,s3):=sqrt(s2^2+s3^2-2*s2*s3*dcos(A)) /* 2辺と1角から辺 */$
lLB(p1,p2):=([x,y]-(p1+p2)/2).(p2-p1)=0 /* p1,p2の垂直二等分線 */$
lPB(p1,p2):=([x,y,z]-(p1+p2)/2).(p2-p1)=0 /* p1,p2の垂直二等分面 */$
vp23(p1,p2,p3):=p2+(p1-p2).(p3-p2)/dis(p3,p2)*(p3-p2)/dis(p3,p2) /* p1から直線p2p3へ下した垂線の足 */$
vp12(p1,p2,p3):=p2+dis(p1,p2)/((p3-p2).(p1-p2)/dis(p1,p2))*(p3-p2) /* 直線p1p2のp1からの垂線と直線p2p3との交点 */$
cir(p,r,tm,tM):=parametric(p[1]+r*dcos(t),p[2]+r*dsin(t),t,tm,tM) /* 中心p、半径r、偏角tm->tMの円弧 */$
lab(nam,p):=label([nam,p[1],p[2]]) /* 図中の文字 */$
sE(p1,p2,p3,p4):=block([p,q,s,a],e1:p1+p*(p2-p1),e2:p3+q*(p4-p3),s:solve([e1[1]=e2[1],e1[2]=e2[2]],[p,q]),a:subst(s[1],e1)) /* 線分p1p2と線分p3p4の交点 */$
perp(p1,p2):=block([p],p:[p1[2]*p2[3]-p1[3]*p2[2],p1[3]*p2[1]-p1[1]*p2[3],p1[1]*p2[2]-p1[2]*p2[1]],p:p/dis([0,0,0],p)) /*p1,p2に対し垂直な単位ベクトル*/$
imp(e,p,r):=implicit(e,x,-r+p[1],r+p[1],y,-r+p[2],r+p[2],z,-r+p[3],r+p[3]) /* p+-[r,r,r]の範囲で陰関数eを描く */$
volp(p1,p2,p3,d):=block([p0,py,px,vx,vy,vX,vY,p11,p21],
/**/p0:vp(p1,p2,p3),if dis(p0,p2)<0.01 then p21:ppie(p2,p3,1,1) else p21:p2,
/**/(px:perp(p21-p0,p1-p0),numer),(py:perp(px,p21-p0),numer),
/**/vx:(p1-p0).px,vy:(p1-p0).py,vX:vx*dcos(d)-vy*dsin(d),vY:vx*dsin(d)+vy*dcos(d),print(px,py,vx,vy),
/**/p11:p0+vX*(px)+vY*(py)) /* 点p1を、線分p2p3を軸にd°回転した点p11 */$

r:1;a11:35;a13:90;a12:180-90-a11;a21:25;a23:180-a12;a22:180-a21-a23/*(▲変更部分2) */;
pv11:r*[dcos(270-a13),dsin(270-a13)],numer;pv12:r*[dcos(270+a13),dsin(270+a13)],numer;pv13:r*[dcos(270-a13-a12*2),dsin(270-a13-a12*2)],numer;
pv23:r*[dcos(270-a13-a22*2),dsin(270-a13-a22*2)],numer/*(▲変更部分3) */;
pL1:[pv11,pv12,pv13,pv11,pv23,pv13] /*(▲変更部分3)*/ ;
KAITOU:["aD=",a23] /*(▲変更部分3)*/ $
labA:lab("A",pv11);labB:lab("B",pv12);labC:lab("C",pv13);labD:lab("D",pv23) /*(▲変更部分3)*/ ;

ym:-r$yM:r$xm:ym*ap2[1]$xM:yM*ap2[1] /* "x,yの表示範囲の設定" */$
title1:title=" " /* 図形のタイトル(頂点の位置) */;
ym:-r-0.2$yM:r+0.2$xm:ym*ap2[1]$xM:yM*ap2[1] /* "x,yの表示範囲の設定" */$

title1:title=" " /* 図形のタイトル(頂点の位置) */;
draw2d(yrange=[ym,yM],
color=gray,explicit(0,x,xm,xM),implicit(x=0,x,xm,xM,y,ym,yM),
color=gray,parametric(r*dcos(t),r*dsin(t),t,0,360),
color=blue,points_joined =true,points(pL1),
color=black,labA,labB,labC,labD /*(▲変更部分4)*/,
color=red)$

SUJIMITI:["直径上の円周角は90°だから∠BCA=( )で∠ABC=( )。円の内接四角形の対角の和は180°だから∠CDA=( )"]/*(▲変更部分5)*/$
print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$

◎上のMaximaコマンドを実行せよ。
◎上のMaximaコマンドを、以下のように修正して実行し、考察せよ。
MONDAI:["章末問題A2 152 円の内接四角形CDBAで、DC,BAの延長の交点P、CA,DBの延長の交点Q、∠APC=25°、∠BQA=51°のとき、∠CDBは"] /*(▲変更部分1) */$
KOUSATU:["円の内接四角形の対角の和は180°に等しく、三角形で外角は内対角の和に等しいから・・・"] /*(▲変更部分1) */$
a11:25;a12:x;a23:51;a13:a23+a12;a21:a11+a12/*(▲変更部分2) */;
e1:a13+a21=180;X:rhs(solve(e1,x)[1])/*(▲変更部分2) */;
r:1;a12:subst(x=X,a12);a13:subst(x=X,a13);a21:subst(x=X,a21);a22:180-a12/*(▲変更部分2) */;
pv21:ppie(pv11,pv12,1,1);dis1223:dis(pv21,pv12)/dsin(a23)*dsin(a21),numer;pv23:ppie(pv12,pv13,dis1223,-dis1223+dis(pv12,pv13)),numer/*(▲変更部分3) */;
pv22:ppie(pv23,pv21,2*dis(pv13,pv23),dis(pv13,pv12)),numer/*(▲変更部分3) */;
KAITOU:["∠D=",X] /*(▲変更部分3)*/ $
pv31:ppie(pv21,pv12,1,1),numer;pv32:ppie(pv12,pv13,1,1),numer;pv33:vp12(pv31,pv12,pv13),numer;pv34:vp12(pv32,pv12,pv11),numer/*(▲変更部分3)*/;
pv35:ppie(pv33,pv31,dis(pv34,pv12)*dis(pv33,pv32),dis(pv34,pv31)*dis(pv32,pv12)),numer/*(▲変更部分3)*/;
r2:dis(pv35,pv13),numer;cir3:cir(pv35,r2,0,360)/*(▲変更部分3)*/;
pL1:[pv11,pv12,pv13,pv11,pv21,pv23,pv13] /*(▲変更部分3)*/ ;
labB:lab("B",pv13);labP:lab("P",pv11);labD:lab("D",pv12);labC:lab("C",pv21);labA:lab("A",pv22);labQ:lab("Q",pv23) /*(▲変更部分3)*/ ;
color=black,labA,labB,labC,labD,labP,labQ,cir3 /*(▲変更部分4)*/,
SUJIMITI:["∠CDB=xとして、∠CAP=∠QAB=( )、∠ACD=( )+( )、∠DBA=( )+( )、∠ACD+∠DBA=180°となるので"]/*(▲変更部分5)*/$


◆コマンド番号153
●章末問題A3 内接円
●●●●●●●●●●●●●●●●
kill(all) $
MONDAI:["章末問題A3 153 三角形ABCの内接円との接点をP,Q,Rとし、∠A=90°、BP=6、PC=4のとき、∠RPQは"] /*(▲変更部分1) */$
KOUSATU:["頂点と2接点でできる三角形は2等辺三角形となり、∠Aが直角だから・・・"] /*(▲変更部分1) */$

KANSUU:"定数・関数定義";
ap2:[8.3/6,6.8/6] /* 2dグラフのアスペクト比の調整 */ $
ap3:[2,2,1] /* 3dグラフのアスペクト比の調整 */ $
r2d(A):=A/%pi*180 /* 弧度→角度 */$
d2r(A):=A/180*%pi /* 角度→弧度 */$
dcos(A):=cos(d2r(A));dsin(A):=sin(d2r(A)) /* 角度の余弦、正弦 */$
dacos(s):=r2d(acos(s));dasin(s):=r2d(asin(s)) /* 角度の逆余弦、逆正弦 */$
dis(p1,p2):=sqrt((p2-p1).(p2-p1)) /* 2点間の距離 */$
ppie(p1,p2,P1,P2):=p1*P2/(P1+P2)+p2*P1/(P1+P2) /* p1,p2のP1:P2の内分・外分点 */$
A(p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p2,p3)^2-dis(p3,p1)^2)/(2*dis(p1,p2)*dis(p2,p3))) /* 3点から角度 */$
A3(p4,p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p3,p4)^2-dis(p4-p3,p2-p1)^2)/(2*dis(p1,p2)*dis(p3,p4))) /* 空間の4点から角度 */$
As(s1,s2,s3):=dacos((s2^2+s3^2-s1^2)/(2*s2*s3)),numer /* 3辺から角度 */$
S(p1,p2,p3):=dis(p1,p2)*dis(p2,p3)*dsin(A(p3,p2,p1))/2 /* 3点から面積 */$
lAss(A,s2,s3):=sqrt(s2^2+s3^2-2*s2*s3*dcos(A)) /* 2辺と1角から辺 */$
lLB(p1,p2):=([x,y]-(p1+p2)/2).(p2-p1)=0 /* p1,p2の垂直二等分線 */$
lPB(p1,p2):=([x,y,z]-(p1+p2)/2).(p2-p1)=0 /* p1,p2の垂直二等分面 */$
vp23(p1,p2,p3):=p2+(p1-p2).(p3-p2)/dis(p3,p2)*(p3-p2)/dis(p3,p2) /* p1から直線p2p3へ下した垂線の足 */$
vp12(p1,p2,p3):=p2+dis(p1,p2)/((p3-p2).(p1-p2)/dis(p1,p2))*(p3-p2) /* 直線p1p2のp1からの垂線と直線p2p3との交点 */$
cir(p,r,tm,tM):=parametric(p[1]+r*dcos(t),p[2]+r*dsin(t),t,tm,tM) /* 中心p、半径r、偏角tm->tMの円弧 */$
lab(nam,p):=label([nam,p[1],p[2]]) /* 図中の文字 */$
sE(p1,p2,p3,p4):=block([p,q,s,a],e1:p1+p*(p2-p1),e2:p3+q*(p4-p3),s:solve([e1[1]=e2[1],e1[2]=e2[2]],[p,q]),a:subst(s[1],e1)) /* 線分p1p2と線分p3p4の交点 */$
perp(p1,p2):=block([p],p:[p1[2]*p2[3]-p1[3]*p2[2],p1[3]*p2[1]-p1[1]*p2[3],p1[1]*p2[2]-p1[2]*p2[1]],p:p/dis([0,0,0],p)) /*p1,p2に対し垂直な単位ベクトル*/$
imp(e,p,r):=implicit(e,x,-r+p[1],r+p[1],y,-r+p[2],r+p[2],z,-r+p[3],r+p[3]) /* p+-[r,r,r]の範囲で陰関数eを描く */$
volp(p1,p2,p3,d):=block([p0,py,px,vx,vy,vX,vY,p11,p21],
/**/p0:vp(p1,p2,p3),if dis(p0,p2)<0.01 then p21:ppie(p2,p3,1,1) else p21:p2,
/**/(px:perp(p21-p0,p1-p0),numer),(py:perp(px,p21-p0),numer),
/**/vx:(p1-p0).px,vy:(p1-p0).py,vX:vx*dcos(d)-vy*dsin(d),vY:vx*dsin(d)+vy*dcos(d),print(px,py,vx,vy),
/**/p11:p0+vX*(px)+vY*(py)) /* 点p1を、線分p2p3を軸にd°回転した点p11 */$

lAQ:x;e1:(x+6)^2+(x+4)^2=10^2;X:rhs(solve(e1,x)[2]);
l11:X+4;l12:X+6;l13:10;r:l13/2;a11:As(l11,l12,l13),numer;a12:As(l12,l13,l11),numer;a13:90;
pv11:r*[dcos(270-a13),dsin(270-a13)],numer;pv12:r*[dcos(270+a13),dsin(270+a13)],numer;pv13:r*[dcos(270-a13-a12*2),dsin(270-a13-a12*2)],numer;
pv21:ppie(pv12,pv13,4,X),numer;pv22:ppie(pv13,pv11,X,6),numer;pv23:ppie(pv11,pv12,6,4),numer;
a23:A(pv22,pv23,pv21),numer;
pv31:ppie(pv11,pv12,l12,l11);pv32:ppie(pv31,pv13,dis(pv11,pv31),l12);
KAITOU:["∠RPQ=",a23] /*(▲変更部分2)*/ $
pL1:[pv11,pv12,pv13,pv11,pv23,pv21,pv23,pv22,pv13];
cir1:cir(pv32,dis(pv32,pv23),0,360);
labA:lab("A",pv13);labB:lab("B",pv11);labC:lab("C",pv12);labP:lab("P",pv23);labQ:lab("Q",pv21);labR:lab("R",pv22) /**/ ;

title1:title=" " /* 図形のタイトル(頂点の位置) */;
ym:-r-1;yM:r+1$xm:ym*ap2[1]$xM:yM*ap2[1] /* "x,yの表示範囲の設定" */$

title1:title=" " /* 図形のタイトル(頂点の位置) */;
draw2d(yrange=[ym,yM],
color=gray,explicit(0,x,xm,xM),implicit(x=0,x,xm,xM,y,ym,yM),
color=gray,parametric(r*dcos(t),r*dsin(t),t,0,360),
color=blue,points_joined =true,points(pL1),
color=black,cir1,labA,labB,labC,labP,labQ,labR /**/,
color=red)$

SUJIMITI:["頂点と2接点でできる三角形は2等辺三角形となり、BR=( ),CQ=( )、∠Aが直角だからAQ=xとすると、( )^2+( )^2=10^2となるので・・・"]/*(▲変更部分3)*/$
print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$

◎上のMaximaコマンドを実行せよ。
◎上のMaximaコマンドを、以下のように修正して実行し、考察せよ。
MONDAI:["章末問題A3 153 三角形ABCの内接円との接点をP,Q,Rとし、∠A=90°、BP=6、PC=4のとき、内接円の半径は"] /*(▲変更部分1) */$
KOUSATU:["三角形の面積は、内接円の半径と3辺の和との積だから・・・"] /*(▲変更部分1) */$
KAITOU:["内接円の半径=",l11*l12/(l11+l12+l13)] /*(▲変更部分2)*/ $
SUJIMITI:["三角形の面積は( )、3辺の和は( )だから・・・・・・"]/*(▲変更部分3)*/$


◆コマンド番号20207
●章末問題A4 メネラウスの定理、チェバの定理
●●●●●●●●●●●●●●●●
kill(all) $
MONDAI:["章末問題A4 20207 三角形ABCで、AB,ACを1:3に内分する点をR,Q、BQとCRの交点をO、AOとBCの交点をPとして、BP:PCは"] /*(▲変更部分1) */$
KOUSATU:["チェバの定理から、BP:PC=(BR:RA)*(AQ:QC)となるから・・・"] /*(▲変更部分1) */$

KANSUU:"定数・関数定義";
ap2:[8.3/6,6.8/6] /* 2dグラフのアスペクト比の調整 */ $
ap3:[2,2,1] /* 3dグラフのアスペクト比の調整 */ $
r2d(A):=A/%pi*180 /* 弧度→角度 */$
d2r(A):=A/180*%pi /* 角度→弧度 */$
dcos(A):=cos(d2r(A));dsin(A):=sin(d2r(A)) /* 角度の余弦、正弦 */$
dacos(s):=r2d(acos(s));dasin(s):=r2d(asin(s)) /* 角度の逆余弦、逆正弦 */$
dis(p1,p2):=sqrt((p2-p1).(p2-p1)) /* 2点間の距離 */$
ppie(p1,p2,P1,P2):=p1*P2/(P1+P2)+p2*P1/(P1+P2) /* p1,p2のP1:P2の内分・外分点 */$
A(p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p2,p3)^2-dis(p3,p1)^2)/(2*dis(p1,p2)*dis(p2,p3))) /* 3点から角度 */$
A3(p4,p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p3,p4)^2-dis(p4-p3,p2-p1)^2)/(2*dis(p1,p2)*dis(p3,p4))) /* 空間の4点から角度 */$
As(s1,s2,s3):=dacos((s2^2+s3^2-s1^2)/(2*s2*s3)),numer /* 3辺から角度 */$
S(p1,p2,p3):=dis(p1,p2)*dis(p2,p3)*dsin(A(p3,p2,p1))/2 /* 3点から面積 */$
lAss(A,s2,s3):=sqrt(s2^2+s3^2-2*s2*s3*dcos(A)) /* 2辺と1角から辺 */$
lLB(p1,p2):=([x,y]-(p1+p2)/2).(p2-p1)=0 /* p1,p2の垂直二等分線 */$
lPB(p1,p2):=([x,y,z]-(p1+p2)/2).(p2-p1)=0 /* p1,p2の垂直二等分面 */$
vp23(p1,p2,p3):=p2+(p1-p2).(p3-p2)/dis(p3,p2)*(p3-p2)/dis(p3,p2) /* p1から直線p2p3へ下した垂線の足 */$
vp12(p1,p2,p3):=p2+dis(p1,p2)/((p3-p2).(p1-p2)/dis(p1,p2))*(p3-p2) /* 直線p1p2のp1からの垂線と直線p2p3との交点 */$
cir(p,r,tm,tM):=parametric(p[1]+r*dcos(t),p[2]+r*dsin(t),t,tm,tM) /* 中心p、半径r、偏角tm->tMの円弧 */$
lab(nam,p):=label([nam,p[1],p[2]]) /* 図中の文字 */$
sE(p1,p2,p3,p4):=block([p,q,s,a],e1:p1+p*(p2-p1),e2:p3+q*(p4-p3),s:solve([e1[1]=e2[1],e1[2]=e2[2]],[p,q]),a:subst(s[1],e1)) /* 線分p1p2と線分p3p4の交点 */$
perp(p1,p2):=block([p],p:[p1[2]*p2[3]-p1[3]*p2[2],p1[3]*p2[1]-p1[1]*p2[3],p1[1]*p2[2]-p1[2]*p2[1]],p:p/dis([0,0,0],p)) /*p1,p2に対し垂直な単位ベクトル*/$
imp(e,p,r):=implicit(e,x,-r+p[1],r+p[1],y,-r+p[2],r+p[2],z,-r+p[3],r+p[3]) /* p+-[r,r,r]の範囲で陰関数eを描く */$
volp(p1,p2,p3,d):=block([p0,py,px,vx,vy,vX,vY,p11,p21],
/**/p0:vp(p1,p2,p3),if dis(p0,p2)<0.01 then p21:ppie(p2,p3,1,1) else p21:p2,
/**/(px:perp(p21-p0,p1-p0),numer),(py:perp(px,p21-p0),numer),
/**/vx:(p1-p0).px,vy:(p1-p0).py,vX:vx*dcos(d)-vy*dsin(d),vY:vx*dsin(d)+vy*dcos(d),print(px,py,vx,vy),
/**/p11:p0+vX*(px)+vY*(py)) /* 点p1を、線分p2p3を軸にd°回転した点p11 */$

r:2;l11:4;l12:5;l13:6;
a11:As(l11,l12,l13),numer;a12:As(l12,l13,l11),numer;a13:180-a11-a12;
pv11:r*[dcos(270-a13),dsin(270-a13)],numer;pv12:r*[dcos(270+a13),dsin(270+a13)],numer;pv13:r*[dcos(270-a13-a12*2),dsin(270-a13-a12*2)],numer;
pv21:ppie(pv12,pv13,3,1),numer;pv22:ppie(pv13,pv11,1,3),numer;pv23:ppie(pv11,pv12,1,1),numer;
pv31:ppie(pv13,pv23,1*2,3*1),numer;
KAITOU:["BP:PC=",1,":",1] /*(▲変更部分2)*/ $
pL1:[pv11,pv12,pv13,pv11,pv21,pv12,pv22,pv13,pv31,pv23];
labA:lab("A",pv13);labB:lab("B",pv11);labC:lab("C",pv12);labP:lab("P",pv23);labQ:lab("Q",pv21);labR:lab("R",pv22);labO:lab("O",pv31) /**/ ;

title1:title=" " /* 図形のタイトル(頂点の位置) */;
ym:-r-1;yM:r+1$xm:ym*ap2[1]$xM:yM*ap2[1] /* "x,yの表示範囲の設定" */$

title1:title=" " /* 図形のタイトル(頂点の位置) */;
draw2d(yrange=[ym,yM],
color=gray,explicit(0,x,xm,xM),implicit(x=0,x,xm,xM,y,ym,yM),
color=gray,parametric(r*dcos(t),r*dsin(t),t,0,360),
color=blue,points_joined =true,points(pL1),
color=black,cir1,labA,labB,labC,labP,labQ,labR,labO /**/,
color=red)$

SUJIMITI:["チェバの定理から、BP:PC=(BR:RA)*(AQ:QC)=(( ):( ))*(( ):( ))となるから・・・"]/*(▲変更部分3)*/$
print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$

◎上のMaximaコマンドを実行せよ。
◎上のMaximaコマンドを、以下のように修正して実行し、考察せよ。
MONDAI:["章末問題A4 20207 三角形ABCで、AB,ACを1:3に内分する点をR,Q、BQとCRの交点をO、AOとBCの交点をPとして、△OBC:△ABCは"] /*(▲変更部分1) */$
KOUSATU:["面積比はPO:PAとなるので、メネラウスの定理から・・・"] /*(▲変更部分1) */$
KAITOU:["△OBC:△ABC=",3*1,":",3*1+1*2] /*(▲変更部分2)*/ $
SUJIMITI:["メネラウスの定理から、AO:OP=(AR:RB)*(BC:CP)=(( ):( ))*(( ):( ))となるから・・・"]/*(▲変更部分3)*/$


◆コマンド番号20208
●章末問題A5 四面体の辺の中点を頂点とする図形
●●●●●●●●●●●●●●●●
kill(all) $
MONDAI:["章末問題A5 20208 四面体A-BCDで、辺AB,BC,CD,DAの中点P,Q,R,Sを結んだ図形は"] /*(▲変更部分1)*/$
KOUSATU:["辺を共有する2面の三角形で、中点連結定理により中点を結ぶ線分は、・・・"] /**/$

KANSUU:"定数・関数定義";
ap2:[8.3/6,6.8/6] /* 2dグラフのアスペクト比の調整 */ $
ap3:[2,2,1] /* 3dグラフのアスペクト比の調整 */ $
r2d(A):=A/%pi*180 /* 弧度→角度 */$
d2r(A):=A/180*%pi /* 角度→弧度 */$
dcos(A):=cos(d2r(A));dsin(A):=sin(d2r(A)) /* 角度の余弦、正弦 */$
dacos(s):=r2d(acos(s));dasin(s):=r2d(asin(s)) /* 角度の逆余弦、逆正弦 */$
dis(p1,p2):=sqrt((p2-p1).(p2-p1)) /* 2点間の距離 */$
ppie(p1,p2,P1,P2):=p1*P2/(P1+P2)+p2*P1/(P1+P2) /* p1,p2のP1:P2の内分・外分点 */$
A(p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p2,p3)^2-dis(p3,p1)^2)/(2*dis(p1,p2)*dis(p2,p3))) /* 3点から角度 */$
A3(p4,p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p3,p4)^2-dis(p4-p3,p2-p1)^2)/(2*dis(p1,p2)*dis(p3,p4))) /* 空間の4点から角度 */$
As(s1,s2,s3):=dacos((s2^2+s3^2-s1^2)/(2*s2*s3)),numer /* 3辺から角度 */$
S(p1,p2,p3):=dis(p1,p2)*dis(p2,p3)*dsin(A(p3,p2,p1))/2 /* 3点から面積 */$
lAss(A,s2,s3):=sqrt(s2^2+s3^2-2*s2*s3*dcos(A)) /* 2辺と1角から辺 */$
lLB(p1,p2):=([x,y]-(p1+p2)/2).(p2-p1)=0 /* p1,p2の垂直二等分線 */$
lPB(p1,p2):=([x,y,z]-(p1+p2)/2).(p2-p1)=0 /* p1,p2の垂直二等分面 */$
vp23(p1,p2,p3):=p2+(p1-p2).(p3-p2)/dis(p3,p2)*(p3-p2)/dis(p3,p2) /* p1から直線p2p3へ下した垂線の足 */$
vp12(p1,p2,p3):=p2+dis(p1,p2)/((p3-p2).(p1-p2)/dis(p1,p2))*(p3-p2) /* 直線p1p2のp1からの垂線と直線p2p3との交点 */$
cir(p,r,tm,tM):=parametric(p[1]+r*dcos(t),p[2]+r*dsin(t),t,tm,tM) /* 中心p、半径r、偏角tm->tMの円弧 */$
lab(nam,p):=if length(p)=2 then label([nam,p[1],p[2]]) else label([nam,p[1],p[2],p[3]]) /* 図中の文字 */$
sE(p1,p2,p3,p4):=block([p,q,s,a],e1:p1+p*(p2-p1),e2:p3+q*(p4-p3),s:solve([e1[1]=e2[1],e1[2]=e2[2]],[p,q]),a:subst(s[1],e1)) /* 線分p1p2と線分p3p4の交点 */$
perp(p1,p2):=block([p],p:[p1[2]*p2[3]-p1[3]*p2[2],p1[3]*p2[1]-p1[1]*p2[3],p1[1]*p2[2]-p1[2]*p2[1]],p:p/dis([0,0,0],p)) /*p1,p2に対し垂直な単位ベクトル*/$
imp(e,p,r):=implicit(e,x,-r+p[1],r+p[1],y,-r+p[2],r+p[2],z,-r+p[3],r+p[3]) /* p+-[r,r,r]の範囲で陰関数eを描く */$
volp(p1,p2,p3,d):=block([p0,py,px,vx,vy,vX,vY,p11,p21],
/**/p0:vp(p1,p2,p3),if dis(p0,p2)<0.01 then p21:ppie(p2,p3,1,1) else p21:p2,
/**/(px:perp(p21-p0,p1-p0),numer),(py:perp(px,p21-p0),numer),
/**/vx:(p1-p0).px,vy:(p1-p0).py,vX:vx*dcos(d)-vy*dsin(d),vY:vx*dsin(d)+vy*dcos(d),print(px,py,vx,vy),
/**/p11:p0+vX*(px)+vY*(py)) /* 点p1を、線分p2p3を軸にd°回転した点p11 */$

pv11:[0,0,0];pv12:[3,0,0];pv13:[1,3,0];pv21:[2,1,3];
pv31:ppie(pv11,pv12,1,1);pv32:ppie(pv12,pv13,1,1);pv33:ppie(pv13,pv21,1,1);pv34:ppie(pv21,pv11,1,1) /*(▲変更部分2)*/ ;
vv3134:pv34-pv31;vv3233:pv33-pv32;vv1221:pv21-pv12;l3134:dis(pv34,pv31);l3233:dis(pv32,pv33);l1221:dis(pv12,pv21);
KAITOU:["PQ//AC,SR//ACによりPQ//SR。PQ=AC/2,SR=AC/2によりPQ=SR。よって、PQRSは平行四辺形"] /*(▲変更部分3)*/ $
pL1:[pv11,pv12,pv13,pv11,pv21,pv12,pv21,pv13,pv32,pv33,pv34,pv31,pv32];
labA:lab("A",pv21);labB:lab("B",pv11);labC:lab("C",pv12);labD:lab("D",pv13);labP:lab("P",pv34);labQ:lab("Q",pv31);labR:lab("R",pv32);labS:lab("S",pv33) /**/ ;

title1:title=" " /* 図形のタイトル(頂点の位置) */;
view0:view=[60,50] /* "北極から60度、(0,-1,0)から反時計回りに140度の方向から原点を見る" *//*(▲変更部分1) */$
zm:-0.1$zM:3.1$xm:zm*ap3[1]-1$xM:zM*ap3[1]-1$ym:zm*ap3[2]-1$yM:zM*ap3[2]-1 /* "x,y,zの表示範囲の設定" */$

wxdraw3d(title1,
/*....*/xrange=[xm,xM],yrange=[ym,yM],zrange=[zm,zM],
/*....*/view0 ,surface_hide = true,enhanced3d = true,
font_size=13,font = "Helvetica-Bold",points_joined =true,
line_width=1,color=cyan,points(pL1)/**/,
color=black,labA,labB,labC,labD,labP,labQ,labR,labS/* */,
color=blue
) /*pLのグラフ表示*/$

SUJIMITI:["中点連結定理により中点を結ぶ線分は、PQとSRはともにACに( )で、長さはACの(  )だから、・・・"]/*(▲変更部分3)*/$
print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$

◎上のMaximaコマンドを実行せよ。
◎上のMaximaコマンドを、以下のように修正して実行し、考察せよ。
MONDAI:["章末問題A5 20208 四面体A-BCDで、辺AB,BD,AC,CDの中点P,Q,R,Sを結んだ図形は"] /*(▲変更部分1)*/$
pv31:ppie(pv11,pv13,1,1);pv32:ppie(pv12,pv13,1,1);pv33:ppie(pv12,pv21,1,1);pv34:ppie(pv21,pv11,1,1) /*(▲変更部分2)*/ ;
KAITOU:["PQ//AD,SR//ADによりPQ//SR。PQ=AD/2,SR=AD/2によりPQ=SR。よって、PQRSは平行四辺形"] /*(▲変更部分3)*/ $


◆コマンド番号20209
●章末問題B6 内心を通り底辺に平行な線分
●●●●●●●●●●●●●●●●
kill(all) $
MONDAI:["章末問題B6 20209 △ABCの内心I、AIとBCの交点Dとすると、AI:IDをAB,BC,CAで表すと"] /*(▲変更部分1)*/$
KOUSATU:["内心は角の二等分線の交点で、角の二等分線は対辺を隣辺の比に内分するから、・・・"] /*(▲変更部分1)*/$

KANSUU:"定数・関数定義";
ap2:[8.3/6,6.8/6] /* 2dグラフのアスペクト比の調整 */ $
ap3:[2,2,1] /* 3dグラフのアスペクト比の調整 */ $
r2d(A):=A/%pi*180 /* 弧度→角度 */$
d2r(A):=A/180*%pi /* 角度→弧度 */$
dcos(A):=cos(d2r(A));dsin(A):=sin(d2r(A)) /* 角度の余弦、正弦 */$
dacos(s):=r2d(acos(s));dasin(s):=r2d(asin(s)) /* 角度の逆余弦、逆正弦 */$
dis(p1,p2):=sqrt((p2-p1).(p2-p1)) /* 2点間の距離 */$
ppie(p1,p2,P1,P2):=p1*P2/(P1+P2)+p2*P1/(P1+P2) /* p1,p2のP1:P2の内分・外分点 */$
A(p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p2,p3)^2-dis(p3,p1)^2)/(2*dis(p1,p2)*dis(p2,p3))) /* 3点から角度 */$
A3(p4,p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p3,p4)^2-dis(p4-p3,p2-p1)^2)/(2*dis(p1,p2)*dis(p3,p4))) /* 空間の4点から角度 */$
As(s1,s2,s3):=dacos((s2^2+s3^2-s1^2)/(2*s2*s3)),numer /* 3辺から角度 */$
S(p1,p2,p3):=dis(p1,p2)*dis(p2,p3)*dsin(A(p3,p2,p1))/2 /* 3点から面積 */$
lAss(A,s2,s3):=sqrt(s2^2+s3^2-2*s2*s3*dcos(A)) /* 2辺と1角から辺 */$
lLB(p1,p2):=([x,y]-(p1+p2)/2).(p2-p1)=0 /* p1,p2の垂直二等分線 */$
lPB(p1,p2):=([x,y,z]-(p1+p2)/2).(p2-p1)=0 /* p1,p2の垂直二等分面 */$
vp23(p1,p2,p3):=p2+(p1-p2).(p3-p2)/dis(p3,p2)*(p3-p2)/dis(p3,p2) /* p1から直線p2p3へ下した垂線の足 */$
vp12(p1,p2,p3):=p2+dis(p1,p2)/((p3-p2).(p1-p2)/dis(p1,p2))*(p3-p2) /* 直線p1p2のp1からの垂線と直線p2p3との交点 */$
cir(p,r,tm,tM):=parametric(p[1]+r*dcos(t),p[2]+r*dsin(t),t,tm,tM) /* 中心p、半径r、偏角tm->tMの円弧 */$
lab(nam,p):=if length(p)=2 then label([nam,p[1],p[2]]) else label([nam,p[1],p[2],p[3]]) /* 図中の文字 */$
sE(p1,p2,p3,p4):=block([p,q,s,a],e1:p1+p*(p2-p1),e2:p3+q*(p4-p3),s:solve([e1[1]=e2[1],e1[2]=e2[2]],[p,q]),a:subst(s[1],e1)) /* 線分p1p2と線分p3p4の交点 */$
perp(p1,p2):=block([p],p:[p1[2]*p2[3]-p1[3]*p2[2],p1[3]*p2[1]-p1[1]*p2[3],p1[1]*p2[2]-p1[2]*p2[1]],p:p/dis([0,0,0],p)) /*p1,p2に対し垂直な単位ベクトル*/$
imp(e,p,r):=implicit(e,x,-r+p[1],r+p[1],y,-r+p[2],r+p[2],z,-r+p[3],r+p[3]) /* p+-[r,r,r]の範囲で陰関数eを描く */$
volp(p1,p2,p3,d):=block([p0,py,px,vx,vy,vX,vY,p11,p21],
/**/p0:vp(p1,p2,p3),if dis(p0,p2)<0.01 then p21:ppie(p2,p3,1,1) else p21:p2,
/**/(px:perp(p21-p0,p1-p0),numer),(py:perp(px,p21-p0),numer),
/**/vx:(p1-p0).px,vy:(p1-p0).py,vX:vx*dcos(d)-vy*dsin(d),vY:vx*dsin(d)+vy*dcos(d),print(px,py,vx,vy),
/**/p11:p0+vX*(px)+vY*(py)) /* 点p1を、線分p2p3を軸にd°回転した点p11 */$

l11:4;l12:5;l13:6;a11:As(l11,l12,l13),numer;a12:As(l12,l13,l11),numer;a13:As(l13,l11,l12),numer;r:l11/dsin(a11)/2,numer;
pv11:r*[dcos(270-a13),dsin(270-a13)],numer;pv12:r*[dcos(270+a13),dsin(270+a13)],numer;pv13:r*[dcos(270-a13-a12*2),dsin(270-a13-a12*2)],numer;
pv21:ppie(pv11,pv12,dis(pv11,pv13),dis(pv12,pv13)),numer;pv22:ppie(pv21,pv13,dis(pv11,pv21),dis(pv11,pv13)),numer;
pv23:ppie(pv11,pv13,dis(pv21,pv22),dis(pv22,pv13)),numer;pv24:ppie(pv12,pv13,dis(pv21,pv22),dis(pv22,pv13)),numer;
KAITOU:["角の二等分線は対辺を隣辺の比に内分するから、AI:ID=BC*AB/(AB+CA):AB=",l13*l12/(l12+l11),":",l12,"=BC:AB+CA=",l13,":",l12+l11] /*(▲変更部分2)*/ $
pL1:[pv11,pv12,pv13,pv11,pv21,pv13,pv23,pv22,pv24];
labA:lab("A",pv13);labB:lab("B",pv11);labC:lab("C",pv12);labD:lab("D",pv21);labI:lab("I",pv22);labP:lab("P",pv23);labQ:lab("Q",pv24) /**/ ;

title1:title=" " /* 図形のタイトル(頂点の位置) */;
ym:-r-1;yM:r+1$xm:ym*ap2[1]$xM:yM*ap2[1] /* "x,yの表示範囲の設定" */$

title1:title=" " /* 図形のタイトル(頂点の位置) */;
draw2d(yrange=[ym,yM],
color=gray,explicit(0,x,xm,xM),implicit(x=0,x,xm,xM,y,ym,yM),
color=gray,parametric(r*dcos(t),r*dsin(t),t,0,360),
color=blue,points_joined =true,points(pL1),
color=black,labA,labB,labC,labD,labI,labP,labQ /**/,
color=red)$

SUJIMITI:["角の二等分線は対辺を隣辺の比に内分するから、BD:DC=( ):( )となり、・・・"]/*(▲変更部分3)*/$
print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$

◎上のMaximaコマンドを実行せよ。
◎上のMaximaコマンドを、以下のように修正して実行し、考察せよ。
MONDAI:["章末問題B6 20209 △ABCの内心Iを通る、BCの平行線とAB,ACの交点をP,Qとして、PQとPB+QCは"] /*(▲変更部分1)*/$
KOUSATU:["内心は角の二等分線の交点で、角の二等分線は対辺を隣辺の比に内分するから、PQ,PB,PCを3辺で表すと、・・・"] /*(▲変更部分1)*/$
KAITOU:["PB=AB*BC/(AB+BC+CA)=",l12*l13/(l11+l12+l13),"QC=CA*BC/(AB+BC+CA)=",l11*l13/(l11+l12+l13),"PC=BC*(AB+CA)/(AB+BC+CA)=",l13*(l11+l12)/(l11+l12+l13),"によりPQ=PB+PC"] /*(▲変更部分2)*/ $
SUJIMITI:["角の二等分線は対辺を隣辺の比に内分するから、BD:DC=( ):( ),DI:IA=( )*BC:( ),AD:AI=( ):( ),PQ=( )*BC,pB=( )*AB,QC=( )*ACとなり、・・・"]/*(▲変更部分3)*/$


◆コマンド番号20210
●章末問題B7 円に内接する四角形
●●●●●●●●●●●●●●●●
kill(all) $
MONDAI:["章末問題B7 20210 AD//BCの平行四辺形ABCDで、A,Dを通る円とAB,CDとの交点をP,Qとすると、四角形PBCQは円に内接するか"] /**/$
KOUSATU:["円に内接する四角形は、対角の和が180°だから、・・・"] /**/$

KANSUU:"定数・関数定義";
ap2:[8.3/6,6.8/6] /* 2dグラフのアスペクト比の調整 */ $
ap3:[2,2,1] /* 3dグラフのアスペクト比の調整 */ $
r2d(A):=A/%pi*180 /* 弧度→角度 */$
d2r(A):=A/180*%pi /* 角度→弧度 */$
dcos(A):=cos(d2r(A));dsin(A):=sin(d2r(A)) /* 角度の余弦、正弦 */$
dacos(s):=r2d(acos(s));dasin(s):=r2d(asin(s)) /* 角度の逆余弦、逆正弦 */$
dis(p1,p2):=sqrt((p2-p1).(p2-p1)) /* 2点間の距離 */$
ppie(p1,p2,P1,P2):=p1*P2/(P1+P2)+p2*P1/(P1+P2) /* p1,p2のP1:P2の内分・外分点 */$
A(p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p2,p3)^2-dis(p3,p1)^2)/(2*dis(p1,p2)*dis(p2,p3))) /* 3点から角度 */$
A3(p4,p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p3,p4)^2-dis(p4-p3,p2-p1)^2)/(2*dis(p1,p2)*dis(p3,p4))) /* 空間の4点から角度 */$
As(s1,s2,s3):=dacos((s2^2+s3^2-s1^2)/(2*s2*s3)),numer /* 3辺から角度 */$
S(p1,p2,p3):=dis(p1,p2)*dis(p2,p3)*dsin(A(p3,p2,p1))/2 /* 3点から面積 */$
lAss(A,s2,s3):=sqrt(s2^2+s3^2-2*s2*s3*dcos(A)) /* 2辺と1角から辺 */$
lLB(p1,p2):=([x,y]-(p1+p2)/2).(p2-p1)=0 /* p1,p2の垂直二等分線 */$
lPB(p1,p2):=([x,y,z]-(p1+p2)/2).(p2-p1)=0 /* p1,p2の垂直二等分面 */$
vp23(p1,p2,p3):=p2+(p1-p2).(p3-p2)/dis(p3,p2)*(p3-p2)/dis(p3,p2) /* p1から直線p2p3へ下した垂線の足 */$
vp12(p1,p2,p3):=p2+dis(p1,p2)/((p3-p2).(p1-p2)/dis(p1,p2))*(p3-p2) /* 直線p1p2のp1からの垂線と直線p2p3との交点 */$
cir(p,r,tm,tM):=parametric(p[1]+r*dcos(t),p[2]+r*dsin(t),t,tm,tM) /* 中心p、半径r、偏角tm->tMの円弧 */$
lab(nam,p):=if length(p)=2 then label([nam,p[1],p[2]]) else label([nam,p[1],p[2],p[3]]) /* 図中の文字 */$
sE(p1,p2,p3,p4):=block([p,q,s,a],e1:p1+p*(p2-p1),e2:p3+q*(p4-p3),s:solve([e1[1]=e2[1],e1[2]=e2[2]],[p,q]),a:subst(s[1],e1)) /* 線分p1p2と線分p3p4の交点 */$
perp(p1,p2):=block([p],p:[p1[2]*p2[3]-p1[3]*p2[2],p1[3]*p2[1]-p1[1]*p2[3],p1[1]*p2[2]-p1[2]*p2[1]],p:p/dis([0,0,0],p)) /*p1,p2に対し垂直な単位ベクトル*/$
imp(e,p,r):=implicit(e,x,-r+p[1],r+p[1],y,-r+p[2],r+p[2],z,-r+p[3],r+p[3]) /* p+-[r,r,r]の範囲で陰関数eを描く */$
volp(p1,p2,p3,d):=block([p0,py,px,vx,vy,vX,vY,p11,p21],
/**/p0:vp(p1,p2,p3),if dis(p0,p2)<0.01 then p21:ppie(p2,p3,1,1) else p21:p2,
/**/(px:perp(p21-p0,p1-p0),numer),(py:perp(px,p21-p0),numer),
/**/vx:(p1-p0).px,vy:(p1-p0).py,vX:vx*dcos(d)-vy*dsin(d),vY:vx*dsin(d)+vy*dcos(d),print(px,py,vx,vy),
/**/p11:p0+vX*(px)+vY*(py)) /* 点p1を、線分p2p3を軸にd°回転した点p11 */$

l11:5;l12:6;l13:3;a11:As(l11,l12,l13),numer;a12:As(l12,l13,l11),numer;a13:As(l13,l11,l12),numer;r:l11/dsin(a11)/2,numer;
pv11:r*[dcos(270-a13),dsin(270-a13)],numer;pv12:r*[dcos(270+a13),dsin(270+a13)],numer;pv13:r*[dcos(270-a13-a12*2),dsin(270-a13-a12*2)],numer;
pv21:pv11+pv13-pv12;pv22:ppie(pv11,pv21,3,1);pv31:ppie(pv13,pv21,1,1);pv32:vp12(pv31,pv13,pv22);pv33:vp12(ppie(pv22,pv13,1,1),pv32,pv31)/*(▲変更部分1)*/;
a22:A(pv21,pv22,pv13),numer;a13:A(pv21,pv13,pv12),numer;a212:180-a22-a13;l1241:2*dis(pv33,pv13)*dsin(a212),numer;pv41:pv13+(pv12-pv13)/dis(pv12,pv13)*l1241,numer;
pv51:ppie(pv11,pv12,1,1);pv52:vp12(pv51,pv12,pv22);pv53:vp12(ppie(pv22,pv12,1,1),pv52,pv51)/*(▲変更部分1)*/;
KAITOU:["∠BQC=∠CDP=",180-a13,"∠PAB=180-∠CDP=",a13,"により、∠BQC+∠PAB=180。よって、円に内接"] /**/ $
pL1:[pv11,pv12,pv13,pv21,pv22,pv11,pv12,pv41,pv22];
cir1:cir(pv33,dis(pv33,pv13),0,360);
cir2:cir(pv53,dis(pv53,pv12),0,360);
labA:lab("A",pv13);labB:lab("B",pv11);labC:lab("C",pv12);labD:lab("D",pv21);labP:lab("P",pv22);labQ:lab("Q",pv41) /**/ ;

title1:title=" " /* 図形のタイトル(頂点の位置) */;
ym:-r-1;yM:r+1$xm:ym*ap2[1]$xM:yM*ap2[1] /* "x,yの表示範囲の設定" */$

title1:title=" " /* 図形のタイトル(頂点の位置) */;
draw2d(yrange=[ym,yM],
color=gray,explicit(0,x,xm,xM),implicit(x=0,x,xm,xM,y,ym,yM),
color=gray,parametric(r*dcos(t),r*dsin(t),t,0,360),
color=blue,points_joined =true,points(pL1),
color=black,labA,labB,labC,labD,labP,labQ,cir1 /**/,
color=red,cir2 /**/,
color=red)$

SUJIMITI:["対角の和が180°だから、∠PQC=180-( ),∠BQP=( ),∠PAB=( )となるので、・・・"]/**/$
print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$

◎上のMaximaコマンドを実行せよ。
◎上のMaximaコマンドを、以下のように修正して実行し、考察せよ。
pv21:pv11+pv13-pv12;pv22:ppie(pv11,pv21,1,2);pv31:ppie(pv13,pv21,1,1);pv32:vp12(pv31,pv13,pv22);pv33:vp12(ppie(pv22,pv13,1,1),pv32,pv31)/*(▲変更部分1)*/;


◆コマンド番号20211
●章末問題B8 円周上に他の円の中心がある2円の交点と三角形
●●●●●●●●●●●●●●●●
kill(all) $
MONDAI:["章末問題B8 20211 円Oとその周上に中心がある円O'の交点をA,B、Aを通る直線と円O,O'との交点をD,Cとするとき、∠ACBと∠CBAは"] /**/$
KOUSATU:["円に内接する四角形は、対角の和が180°で、Oは円の中心だから、・・・"] /**/$

KANSUU:"定数・関数定義";
ap2:[8.3/6,6.8/6] /* 2dグラフのアスペクト比の調整 */ $
ap3:[2,2,1] /* 3dグラフのアスペクト比の調整 */ $
r2d(A):=A/%pi*180 /* 弧度→角度 */$
d2r(A):=A/180*%pi /* 角度→弧度 */$
dcos(A):=cos(d2r(A));dsin(A):=sin(d2r(A)) /* 角度の余弦、正弦 */$
dacos(s):=r2d(acos(s));dasin(s):=r2d(asin(s)) /* 角度の逆余弦、逆正弦 */$
dis(p1,p2):=sqrt((p2-p1).(p2-p1)) /* 2点間の距離 */$
ppie(p1,p2,P1,P2):=p1*P2/(P1+P2)+p2*P1/(P1+P2) /* p1,p2のP1:P2の内分・外分点 */$
A(p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p2,p3)^2-dis(p3,p1)^2)/(2*dis(p1,p2)*dis(p2,p3))) /* 3点から角度 */$
A3(p4,p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p3,p4)^2-dis(p4-p3,p2-p1)^2)/(2*dis(p1,p2)*dis(p3,p4))) /* 空間の4点から角度 */$
As(s1,s2,s3):=dacos((s2^2+s3^2-s1^2)/(2*s2*s3)),numer /* 3辺から角度 */$
S(p1,p2,p3):=dis(p1,p2)*dis(p2,p3)*dsin(A(p3,p2,p1))/2 /* 3点から面積 */$
lAss(A,s2,s3):=sqrt(s2^2+s3^2-2*s2*s3*dcos(A)) /* 2辺と1角から辺 */$
lLB(p1,p2):=([x,y]-(p1+p2)/2).(p2-p1)=0 /* p1,p2の垂直二等分線 */$
lPB(p1,p2):=([x,y,z]-(p1+p2)/2).(p2-p1)=0 /* p1,p2の垂直二等分面 */$
vp23(p1,p2,p3):=p2+(p1-p2).(p3-p2)/dis(p3,p2)*(p3-p2)/dis(p3,p2) /* p1から直線p2p3へ下した垂線の足 */$
vp12(p1,p2,p3):=p2+dis(p1,p2)/((p3-p2).(p1-p2)/dis(p1,p2))*(p3-p2) /* 直線p1p2のp1からの垂線と直線p2p3との交点 */$
cir(p,r,tm,tM):=parametric(p[1]+r*dcos(t),p[2]+r*dsin(t),t,tm,tM) /* 中心p、半径r、偏角tm->tMの円弧 */$
lab(nam,p):=if length(p)=2 then label([nam,p[1],p[2]]) else label([nam,p[1],p[2],p[3]]) /* 図中の文字 */$
sE(p1,p2,p3,p4):=block([p,q,s,a],e1:p1+p*(p2-p1),e2:p3+q*(p4-p3),s:solve([e1[1]=e2[1],e1[2]=e2[2]],[p,q]),a:subst(s[1],e1)) /* 線分p1p2と線分p3p4の交点 */$
perp(p1,p2):=block([p],p:[p1[2]*p2[3]-p1[3]*p2[2],p1[3]*p2[1]-p1[1]*p2[3],p1[1]*p2[2]-p1[2]*p2[1]],p:p/dis([0,0,0],p)) /*p1,p2に対し垂直な単位ベクトル*/$
imp(e,p,r):=implicit(e,x,-r+p[1],r+p[1],y,-r+p[2],r+p[2],z,-r+p[3],r+p[3]) /* p+-[r,r,r]の範囲で陰関数eを描く */$
volp(p1,p2,p3,d):=block([p0,py,px,vx,vy,vX,vY,p11,p21],
/**/p0:vp(p1,p2,p3),if dis(p0,p2)<0.01 then p21:ppie(p2,p3,1,1) else p21:p2,
/**/(px:perp(p21-p0,p1-p0),numer),(py:perp(px,p21-p0),numer),
/**/vx:(p1-p0).px,vy:(p1-p0).py,vX:vx*dcos(d)-vy*dsin(d),vY:vx*dsin(d)+vy*dcos(d),print(px,py,vx,vy),
/**/p11:p0+vX*(px)+vY*(py)) /* 点p1を、線分p2p3を軸にd°回転した点p11 */$

a11:35;a13:a11+90;a12:180-a11-a13;r:3;t11:150/*(▲変更部分1)*/;
pv11:r*[dcos(270-a13),dsin(270-a13)],numer;pv12:r*[dcos(270+a13),dsin(270+a13)],numer;pv13:r*[dcos(270-a13-a12*2),dsin(270-a13-a12*2)],numer;
pv20:vp23(pv13,pv11,pv12);pv21:ppie(pv13,pv20,2,-1);pv22:ppie(pv13,pv21,1,1);pv23:vp12(ppie(pv11,pv21,1,1),pv11,pv22),numer;pv24:dis(pv23,pv11)*[dcos(t11),dsin(t11)]+pv23;cir1:cir(pv23,dis(pv23,pv11),0,360),numer;
pv30:ppie(pv23,pv13,1,1),numer;pv31:vp12(pv30,pv23,pv12),numer;cir2:cir(pv31,dis(pv31,pv13),0,360);
a411331:180-A(pv24,pv13,pv31),numer;a413113:180-a411331*2;a133111:A(pv13,pv31,pv11),numer;pv41:pv31+dis(pv31,pv13)*[dcos(180-a133111-a413113),dsin(180-a133111-a413113)],numer;
a132351:A(pv13,pv21,pv41)*2,numer;a132312:A(pv13,pv23,pv12),numer;a512312:a132312-a132351;pv51:pv23+dis(pv13,pv23)*[dcos(a512312),dsin(a512312)];
KAITOU:["∠BCO=∠OBC、∠OCA=∠CAO=∠DBOにより、∠BCD=∠DBC。よって、二等辺三角形"] /**/ $
pL1:[pv23,pv24,pv13,pv41,pv21,pv24,pv13,pv23,pv21];
labA:lab("A",pv13);labB:lab("B",pv21);labC:lab("C",pv24);labD:lab("D",pv41);labO:lab("O",pv23) /**/ ;

title1:title=" " /* 図形のタイトル(頂点の位置) */;
ym:-r-1;yM:r+1$xm:ym*ap2[1]$xM:yM*ap2[1] /* "x,yの表示範囲の設定" */$

title1:title=" " /* 図形のタイトル(頂点の位置) */;
draw2d(yrange=[ym,yM],
color=gray,explicit(0,x,xm,xM),implicit(x=0,x,xm,xM,y,ym,yM),
color=gray,parametric(r*dcos(t),r*dsin(t),t,0,360),
color=blue,points_joined =true,points(pL1),
color=black,labA,labB,labC,labD,labO,cir1 /**/,
color=red,cir2 /**/,
color=red)$

SUJIMITI:["Oは円の中心だから、∠BCO=∠( ),∠OCA=∠( )=∠( ),対角の和が180°だから∠CAO=∠( )となるので、・・・"]/**/$
print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$

◎上のMaximaコマンドを実行せよ。
◎上のMaximaコマンドを、以下のように修正して実行し、考察せよ。
a11:20;a13:a11+90;a12:180-a11-a13;r:3;t11:60/*(▲変更部分1)*/;



◆コマンド番号20212
●章末問題B9 四面体の各面の重心を頂点とする図形
●●●●●●●●●●●●●●●●
kill(all) $
MONDAI:["章末問題B9 20211 四面体A-BCDで、各面の重心P,Q,R,Sを頂点とする多面体は"] /*(▲変更部分1)*/$
KOUSATU:["三角形の重心は中線の交点で、頂点と対辺の中点を2:1に内分するから、・・・"] /*(▲変更部分1)*/$

KANSUU:"定数・関数定義";
ap2:[8.3/6,6.8/6] /* 2dグラフのアスペクト比の調整 */ $
ap3:[2,2,1] /* 3dグラフのアスペクト比の調整 */ $
r2d(A):=A/%pi*180 /* 弧度→角度 */$
d2r(A):=A/180*%pi /* 角度→弧度 */$
dcos(A):=cos(d2r(A));dsin(A):=sin(d2r(A)) /* 角度の余弦、正弦 */$
dacos(s):=r2d(acos(s));dasin(s):=r2d(asin(s)) /* 角度の逆余弦、逆正弦 */$
dis(p1,p2):=sqrt((p2-p1).(p2-p1)) /* 2点間の距離 */$
ppie(p1,p2,P1,P2):=p1*P2/(P1+P2)+p2*P1/(P1+P2) /* p1,p2のP1:P2の内分・外分点 */$
A(p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p2,p3)^2-dis(p3,p1)^2)/(2*dis(p1,p2)*dis(p2,p3))) /* 3点から角度 */$
A3(p4,p3,p2,p1):=dacos((dis(p1,p2)^2+dis(p3,p4)^2-dis(p4-p3,p2-p1)^2)/(2*dis(p1,p2)*dis(p3,p4))) /* 空間の4点から角度 */$
As(s1,s2,s3):=dacos((s2^2+s3^2-s1^2)/(2*s2*s3)),numer /* 3辺から角度 */$
S(p1,p2,p3):=dis(p1,p2)*dis(p2,p3)*dsin(A(p3,p2,p1))/2 /* 3点から面積 */$
lAss(A,s2,s3):=sqrt(s2^2+s3^2-2*s2*s3*dcos(A)) /* 2辺と1角から辺 */$
lLB(p1,p2):=([x,y]-(p1+p2)/2).(p2-p1)=0 /* p1,p2の垂直二等分線 */$
lPB(p1,p2):=([x,y,z]-(p1+p2)/2).(p2-p1)=0 /* p1,p2の垂直二等分面 */$
vp23(p1,p2,p3):=p2+(p1-p2).(p3-p2)/dis(p3,p2)*(p3-p2)/dis(p3,p2) /* p1から直線p2p3へ下した垂線の足 */$
vp12(p1,p2,p3):=p2+dis(p1,p2)/((p3-p2).(p1-p2)/dis(p1,p2))*(p3-p2) /* 直線p1p2のp1からの垂線と直線p2p3との交点 */$
cir(p,r,tm,tM):=parametric(p[1]+r*dcos(t),p[2]+r*dsin(t),t,tm,tM) /* 中心p、半径r、偏角tm->tMの円弧 */$
lab(nam,p):=if length(p)=2 then label([nam,p[1],p[2]]) else label([nam,p[1],p[2],p[3]]) /* 図中の文字 */$
sE(p1,p2,p3,p4):=block([p,q,s,a],e1:p1+p*(p2-p1),e2:p3+q*(p4-p3),s:solve([e1[1]=e2[1],e1[2]=e2[2]],[p,q]),a:subst(s[1],e1)) /* 線分p1p2と線分p3p4の交点 */$
perp(p1,p2):=block([p],p:[p1[2]*p2[3]-p1[3]*p2[2],p1[3]*p2[1]-p1[1]*p2[3],p1[1]*p2[2]-p1[2]*p2[1]],p:p/dis([0,0,0],p)) /*p1,p2に対し垂直な単位ベクトル*/$
imp(e,p,r):=implicit(e,x,-r+p[1],r+p[1],y,-r+p[2],r+p[2],z,-r+p[3],r+p[3]) /* p+-[r,r,r]の範囲で陰関数eを描く */$
volp(p1,p2,p3,d):=block([p0,py,px,vx,vy,vX,vY,p11,p21],
/**/p0:vp23(p1,p2,p3),if dis(p0,p2)<0.01 then p21:ppie(p2,p3,1,1) else p21:p2,
/**/(px:perp(p21-p0,p1-p0),numer),(py:perp(px,p21-p0),numer),
/**/vx:(p1-p0).px,vy:(p1-p0).py,vX:vx*dcos(d)-vy*dsin(d),vY:vx*dsin(d)+vy*dcos(d),print(px,py,vx,vy),
/**/p11:p0+vX*(px)+vY*(py)) /* 点p1を、線分p2p3を軸にd°回転した点p11 */$

view0:view=[60,140] /* "北極から60度、(0,-1,0)から反時計回りに130度の方向から原点を見る" */$
n:3 /**/;
pv11:[0,0,sqrt(2/3)],numer;pv21:[sqrt(1/3),0,0],numer;pv22:volp(pv21,[0,0,-1],[0,0,3],360/n),numer;pv23:volp(pv22,[0,0,-1],[0,0,3],360/n),numer;ptL1:[pv11,pv21,pv22,pv11,pv22,pv23,pv11,pv23,pv21] /**/;
pv121:ppie(ppie(pv21,pv22,1,1),pv11,1,2),numer;pv122:volp(pv121,[0,0,-1],[0,0,3],360/n),numer;pv123:volp(pv122,[0,0,-1],[0,0,3],360/n),numer;pv221:ppie(ppie(pv21,pv22,1,1),pv23,1,2),numer /**/;
ptL2:[pv121,pv122,pv123,pv121,pv221,pv122,pv221,pv123,pv221,pv121] /**/;
KAITOU:["辺はすべて",dis(pv121,pv122),"面はすべて正三角形で面数は",4,"頂点に集まる面数は",3,"よって、正四面体"] /*(▲変更部分2)*/ $
labA:lab("A",pv11);labB:lab("B",pv21);labC:lab("C",pv22);labP:lab("P",pv121);labQ:lab("Q",pv122);labS:lab("S",pv221) /**/ ;

zm:-0.1$zM:0.82$xm:zm*ap3[1]-1$xM:zM*ap3[1]-1$ym:zm*ap3[2]-1$yM:zM*ap3[2]-1 /* "x,y,zの表示範囲の設定" */$
title1:title=" " /* 図形のタイトル(頂点の位置) */;
wxdraw3d(title1,
/*....*/xrange=[xm,xM],yrange=[ym,yM],zrange=[zm,zM],
/*....*/view0 ,surface_hide = true,enhanced3d = true,
font_size=13,font = "Helvetica-Bold",points_joined =true,
line_width=1,color=cyan,points(ptL1)/**/,
line_width=1,color=blue,points(ptL2)/**/,
color=black,labA,labB,labC,labP,labQ,labS/**/,
color=blue
) /*pLのグラフ表示*/$

SUJIMITI:["辺の中点を結ぶ線分は辺の(  )倍、重心を結ぶ線分はその(  )倍、できる立体の辺は、元の辺の(  )倍となり、できる立体の各辺は(  )","面は(  )で、面数は(  )","各頂点に集まる面の数は(  )となるので・・・"]/*(▲変更部分3)*/$
print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$

◎上のMaximaコマンドを実行せよ。
◎上のMaximaコマンドを、以下のように修正して実行し、結果を比較して考察せよ。
MONDAI:["章末問題B9 20211 正四面体A-BCDで、各面の重心P,Q,R,Sを頂点とする多面体と元の正四面体の体積の比は"] /*(▲変更部分1)*/$
KOUSATU:["相似な立体の体積の比は、辺の3乗の比となるから、・・・"] /*(▲変更部分1)*/$
KAITOU:["辺の比は1/3だから、退席の比は1/27"] /*(▲変更部分2) */ $
SUJIMITI:["辺の比は(  :  )だから、体積の比はその3乗の比となるので・・・"] /*(▲変更部分3)*/$