高校入試 切頭三角柱「【2023年山梨県】公立高校受験 数学解説 大問６ 2(3)」をsympyとFreeCADでやってみたい。

・私の解答の方法は、中学生の学習指導要領の範囲外です。ベクトル成分表示です。
https://www.deepl.com/ja/translator#ja/大人げないです。

・「**切頭三角柱**」は、大学入試問題の過去問類題にありませんでした。
　共通テストの太郎さんと花子さんは、2024/03/05　現在。
 　切頭三角柱を扱っていないです。
・３次元FreeCADのワイヤーフレームです。
・勉強中。軸線方向の見え方。文字の回転です。

(追加)　教えて下さい。ver0.2の変数名をリストにすると、
　　　　計算箇所が5行？になりますか？？？


# オリジナル
pdf 問題文 最後の大問、最後の小問です。
https://www.toshin.com/koukou_nyushi/files/2023/sugaku_q/yamanashi_sugaku_q.pdf#page=6

youtube　又は　過去５年分 様 から
~~https://homepage1.canvas.ne.jp/ynaka/R5PDF/19yamanashi.pdf#page=6~~

19山梨県＜過去５年分
＜http://homepage1.canvas.ne.jp/ynaka/zenmon.html

数学・英語のトリセツ! 様
解答解説 youtube 13:46
(コメントに私のコメントがあります。)

https://youtu.be/Yt8ahuESK1k

# sympyで(オリジナル 様の方法で)
・勉強中。三平方の定理

# sympyで
・ver0.１　対称性利用。四角錐2個と屋根形です。
・(追加)Rationalについて、コメントいただきました。ありがとうございました。
```python
# ver0.1
from sympy import *
def myTaiseki(PTO,PTA,PTB,PTC):
    return abs(Matrix([[PTA.x-PTO.x, PTA.y-PTO.y, PTA.z-PTO.z],
                       [PTB.x-PTO.x, PTB.y-PTO.y, PTB.z-PTO.z],
                       [PTC.x-PTO.x, PTC.y-PTO.y, PTC.z-PTO.z]]
              ).det()/6)
d      =8
D,A,B,C=map(Point,[(0,0,d),(d,0,d),(d,d,d),(0,d,d)])                
H,E,F,G=map(Point,[(0,0,0),(d,0,0),(d,d,0),(0,d,0)])                
I      =F+Rational(1,2)  *(E-F)
J      =G+Rational(1,2)  *(F-G)
K      =H+Rational(1,2)  *(G-H)
L      =E+Rational(1,2)  *(H-E)
M      =B+Rational(1,2)  *(D-B)
P      =B+Rational(3,3+1)*(M-B)
Q      =D+Rational(3,3+1)*(M-D)
# 
IJd    =I+Rational(1,2)  *(J-I)+Point(0,0,d)
v= (myTaiseki(A,L,I,P)+myTaiseki(P,L,A,Q))*2 \
  +(Rational(1,2)*I.distance(J)*d*I.distance(L)) \
  -(myTaiseki(I,J,P,IJd))*2
print("#",v)
# 704/3
```
・ver0.２ 積分で。水平断面の多角形の面積計算です。
The intersection with other geometrical entity.
https://docs.sympy.org/latest/modules/geometry/plane.html#sympy.geometry.plane.Plane.intersection
The area of the polygon.
https://docs.sympy.org/latest/modules/geometry/polygons.html#sympy.geometry.polygon.Polygon.area
```python
# ver0.2
from sympy import *
var('z',real=True,positive=True)
d      =8
A,B,C,D=map(Point,[(0,0,d),(d,0,d),(d,d,d),(0,d,d)])                
E,F,G,H=map(Point,[(0,0,0),(d,0,0),(d,d,0),(0,d,0)])                
I,J,K,L=Rational(1,2)*(E+F),Rational(1,2)*(F+G),Rational(1,2)*(G+H),Rational(1,2)*(H+E)
M      =B+Rational(1,2)  *(D-B)
P      =B+Rational(3,3+1)*(M-B)
Q      =D+Rational(3,3+1)*(M-D)
# 
myPlane=Plane(Point3D(0,0,z),normal_vector=(0,0,1))
LA=myPlane.intersection(Line(L,A))[0]  
AI=myPlane.intersection(Line(A,I))[0]  
IP=myPlane.intersection(Line(I,P))[0]  
PJ=myPlane.intersection(Line(P,J))[0]  
JC=myPlane.intersection(Line(J,C))[0]  
CK=myPlane.intersection(Line(C,K))[0]  
KQ=myPlane.intersection(Line(K,Q))[0]  
QL=myPlane.intersection(Line(Q,L))[0]  
area=Polygon( Point( LA.x,LA.y ),
              Point( AI.x,AI.y ),
              Point( IP.x,IP.y ),
              Point( PJ.x,PJ.y ),
              Point( JC.x,JC.y ),
              Point( CK.x,CK.y ),
              Point( KQ.x,KQ.y ),
              Point( QL.x,QL.y )
             ).area
v=integrate(area,(z,0,d))
print("#",v)
# 704/3
# 
area_max =maximum(area,z,Interval(0,d)) ;area_max_z=solveset( Eq(area,area_max),z,Interval(0,d)).args[0] 
area_min =minimum(area,z,Interval(0,d)) ;area_min_z=solveset( Eq(area,area_min),z,Interval(0,d)).args[0] 
print()
print("#",area)
print("#",area_max,area_max_z)
print("#",area_min,area_min_z)
print("#",float( v/d**3 ))
from sympy.plotting import plot
plot(0,area,(z,0,8),aspect_ratio=(1.0,1.0))
# -z**2/2 + 2*z + 32
# 34 2
# 16 8
# 0.4583333333333333
```
グラフ

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109698/4f785a73-86e1-93cd-eedf-57c68923435f.png)

# FreeCADで作図

・作図勉強中

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109698/456a8eb3-f601-9980-37d4-5b2feb53f819.png)

```python
import FreeCAD
import Part
import Draft
import Mesh
#########################################################################################################
# 計算
##############################################################
# 2023 yamanasi 大問6 2(3) 
from sympy import *
d      =8
# D,A,B,C=map(Point,[(0,0,d),(d,0,d),(d,d,d),(0,d,d)])                
# H,E,F,G=map(Point,[(0,0,0),(d,0,0),(d,d,0),(0,d,0)])                
A,B,C,D=map(Point,[(0,0,d),(d,0,d),(d,d,d),(0,d,d)])                
E,F,G,H=map(Point,[(0,0,0),(d,0,0),(d,d,0),(0,d,0)])                
I,J,K,L=Rational(1,2)*(E+F),Rational(1,2)*(F+G),Rational(1,2)*(G+H),Rational(1,2)*(H+E)
M      =B+Rational(1,2)  *(D-B)
P      =B+Rational(3,3+1)*(M-B)
Q      =D+Rational(3,3+1)*(M-D)
##########################################################################################################
### 作図用
##########################################################################################################
### 3D作図
def myXYZ2Txt(A):
    # return '(' + str(A.x) + ',' + str(A.y) + ',' + str(A.z) + ')'
    return ''
def myTxtXYZ(A,myWedgei):
    P5x=float(A.x)
    P5y=float(A.y)
    P5z=float(A.z)
    p5 = FreeCAD.Vector(P5x, P5y, P5z)
    myText = Draft.makeText(myWedgei, p5)
    myText.Label = myWedgei
    FreeCADGui.ActiveDocument.ActiveObject.FontSize = '1.0 mm'
    return
def myTxtXYZ_S(*xy_tx):
    for i in range(1,int(len(xy_tx)/2)+1):
        myTxtXYZ(xy_tx[2*i-2],xy_tx[2*i-1]+myXYZ2Txt(xy_tx[2*i-2]) )
    return
def myLine(A,B):
    Ax,Ay,Az=float(A.x),float(A.y),float(A.z)
    Bx,By,Bz=float(B.x),float(B.y),float(B.z)
    pl = FreeCAD.Placement()
    pl.Rotation.Q = (0.4247081540122249, 0.17592004639554645, 0.33985110062924484, 0.8204732460821097)
    pl.Base = FreeCAD.Vector(-3.9166066876399563, -2.1670824762243774, 1.7495260956243028)
    points = [FreeCAD.Vector(Ax,Ay,Az), FreeCAD.Vector(Bx,By,Bz)]
    line = Draft.make_wire(points, placement=pl, closed=False, face=True, support=None)
    Draft.autogroup(line)
    return
def myLine_S(*args):
    for i in range(1,len(args)):
        myLine(args[i-1],args[i])
    return
def myLine_C(*args):
    for i in range(1,len(args)):
        myLine(args[i-1],args[i])
    myLine(args[i],args[0])
    return
def myLine_H(*args):
    for i in range(1,len(args)):
        myLine(args[0],args[i])
    return
#
myLine_C  (D,A,B,C)
myLine_C  (H,E,F,G)
myLine_C  (I,J,K,L)
myLine_C  (A,P,C,Q)
myLine_C  (A,I,P,J,C,K,Q,L  )
myLine_S  (D,H)
myLine_S  (A,E)
myLine_S  (B,F)
myLine_S  (C,G)
myTxtXYZ_S(D,"D",A,"A",B,"B",C,"C")
myTxtXYZ_S(E,"E",F,"F",G,"G",H,"H")
myTxtXYZ_S(I,"I",J,"J",K,"K",L,"L")
myTxtXYZ_S(P,"P",M,"M",Q,"Q")
#
doc = App.activeDocument()
App.ActiveDocument.addObject("App::Origin", "Origin")
# App.ActiveDocument.getObject('Origin').Visibility = True
App.ActiveDocument.recompute()
Gui.activeDocument().activeView().viewAxonometric()
Gui.SendMsgToActiveView("ViewFit")
```

# 大学入試問題の過去問の類題
”**切頭三角柱**”でサイト内検索。表示がないだけかもしれません。

大学入試数学問題集成 様
一致する結果はありません

数学入試問題 様
site://kamelink.com ”切頭三角柱”との一致はありません。

T氏の数学日記 様

site://mathmathmass.exblog.jp ”切頭三角柱”との一致はありません。

# いつもの? sympyの実行環境と 参考のおすすめです。
[(テンプレート)](https://qiita.com/mrrclb48z/items/00dd08b0317069be9342)

# いつもと違うおすすめです。

https://www.google.com/search?q=%E5%88%87%E9%A0%AD%E4%B8%89%E8%A7%92%E6%9F%B1&sca_esv=02097b259e5129ad&rlz=1CAUHAM_enJP1089&sxsrf=ACQVn08Lr64oAPelJLQoQF2i25TmiZ7L4g%3A1709630851897&ei=g-XmZZv4Nb6N2roPk_6w2A4&ved=0ahUKEwjbxf6c59yEAxW-hlYBHRM_DOsQ4dUDCBA&uact=5&oq=%E5%88%87%E9%A0%AD%E4%B8%89%E8%A7%92%E6%9F%B1&gs_lp=Egxnd3Mtd2l6LXNlcnAiD-WIh-mgreS4ieinkuafsTIKECMYgAQYigUYJzIFEAAYgAQyBRAAGIAEMgUQABiABDIFEAAYgAQyBRAAGIAESPsiUNoHWKoacAJ4AZABApgBtwGgAdILqgEEMC4xMbgBA8gBAPgBAfgBApgCBKAC1gKoAhTCAgoQABhHGNYEGLADwgIHEAAYgAQYBMICBxAjGOoCGCfCAhYQABgDGI8BGOUCGOoCGLQCGIwD2AEBmAMsiAYBkAYKugYGCAEQARgLkgcDMi4yoAeGMw&sclient=gws-wiz-serp

https://en.wikipedia.org/wiki/Chamfer_(geometry)#Chamfered_cube

https://ja.wikipedia.org/wiki/切稜立方体