中高校生のみなさまへ。「高校入試問題。等脚台形2023神奈川県数学 問3(エ)」をsympyとFreeCADで作図しました。

**・長文です。サラサラッと見て下さい。 最後まで見てもらえると助かります。**
・問題文は2次元ですが、３次元FreeCADのマクロで、XY平面上に作図しました。

# 問3(エ) オリジナル　
??? ジャンプが調子悪い時は、URLからお願いします。pdfの７ページ目です。
2023神奈川県数学3(3)

https://homepage1.canvas.ne.jp/ynaka/R5PDF/14kanagawa.pdf#page=7

＜URL
14神奈川県＜●R5全問(頁右端)＜数学苦手な中学生，応援します
http://homepage1.canvas.ne.jp/ynaka/

# 解答 3(エ) youtube
　
**補助線も色々でした。** 色々な解法がありました。等脚台形でした。

(1:03:39〜1:27:26)　延長。線分DJと線分EJと交点Jを追加です。
＞これ大変だったね。(1:27:26)
三角形の合同でした。
東大合格請負人 時田啓光ちゃんねる 様

https://youtu.be/sPtaLFCflkg?t=3819

(0:00〜10:54)補助線FE。補助線DM
数学を数楽に 様

https://youtu.be/C_l3d7NgRZ8

(0:00〜5:02)補助線EF。正六角形。
MAスカッと塾 様

https://youtu.be/jcqWtrtNvQ8

(24:34〜30:27)補助線EF。正六角形。
＞[隣辺比？](https://www.google.com/search?q=%E9%9A%A3%E8%BE%BA%E6%AF%94&rlz=1CAUHAM_enJP1038JP1038&oq=%E9%9A%A3%E8%BE%BA%E6%AF%94&gs_lcrp=EgZjaHJvbWUyCQgAEEUYORiABDIHCAEQABiABNIBCDQyNTdqMGo3qAIAsAIA&sourceid=chrome&ie=UTF-8)。(28:50)
勉強中です。
ミャクミャク学習塾　Youtube校 様

https://youtu.be/8_Zb5Q617M4?t=1474

# sympyで(いつものスタイルで)座標計算です。
・自力です。 ← そんなに大袈裟なものなの? 
・線分と線分の交点計算です。 
class sympy.geometry.line.Segment(p1, p2, **kwargs)
https://docs.sympy.org/latest/modules/geometry/lines.html#sympy.geometry.line.Segment
```python
from sympy import *
B=Point(0,0)
E=Point(3,0)
C=Point(4,0)
A=Point(1,sqrt(2**2-1**2))
D=A+Point(2,0)
F=Rational(1,2)*(C+D)
G=Rational(1,2)*(A+D)
H=Segment(A,E).intersection(Segment(B,F))[0]
I=Segment(A,E).intersection(Segment(B,G))[0]
print("#",Triangle(I,B,H).area/Polygon(H,E,C,F).area)
# 5/4
```
**・上と同じです。**
・AB=2*aの変数にしました。ついでに、面積計算TriangleをPolygonにしました。
The area of the polygon.
https://docs.sympy.org/latest/modules/geometry/polygons.html#sympy.geometry.polygon.Polygon.area
```python
from sympy import *
var('a',real=True,positive=True)
B=Point(0  ,0)
E=Point(a*3,0)
C=Point(a*4,0)
A=Point(a,sqrt(a**a-(Rational(1,2)*a)**2))
D=A+Point(a*2,0)
F=Rational(1,2)*(C+D)
G=Rational(1,2)*(A+D)
H=Segment(A,E).intersection(Segment(B,F))[0]
I=Segment(A,E).intersection(Segment(B,G))[0]
print("#",Polygon(I,B,H).area/Polygon(H,E,C,F).area)
# 5/4
```
# sympyで(いつものスタイルで)equationの表示です。
・直線y=ax+bの表示方法です。
・面積計算は、[台形面積-台形面積(座標法風?)](https://ja.wikipedia.org/wiki/座標法)です。 
equation(x='x', y='y')
https://docs.sympy.org/latest/modules/geometry/lines.html#sympy.geometry.line.Line2D.equation
```python
from sympy import *
var('x,y',real=True)
a =1
B =Point(0  ,0)                             ;print("# B =",B )
E =Point(a*3,0)                             ;print("# E =",E )
C =Point(a*4,0)                             ;print("# C =",C )
A =Point(a,sqrt(a**a-(Rational(1,2)*a)**2)) ;print("# A =",A )
D =A+Point(a*2,0)                           ;print("# D =",D )
F =Rational(1,2)*(C+D)                      ;print("# F =",F )
G =Rational(1,2)*(A+D)                      ;print("# G =",G )
AE=Eq(y,solve(Line(A,E).equation(),y)[0])   ;print("# AE ",AE)    
BF=Eq(y,solve(Line(B,F).equation(),y)[0])   ;print("# BF ",BF)    
BG=Eq(y,solve(Line(B,G).equation(),y)[0])   ;print("# BG ",BG)    
HH=solve([AE,BF],[x,y])                     ;print("# HH ",HH)
H =Point(HH[x],HH[y])                       ;print("# H =",H )
II=solve([AE,BG],[x,y])                     ;print("# II ",II)
I =Point(II[x],II[y])                       ;print("# I =",I )
# 
IBH = (I.x-0  )*I.y*Rational(1,2) \
     +(E.x-I.x)*I.y*Rational(1,2) \
     -(H.x-0  )*H.y*Rational(1,2) \
     -(E.x-H.x)*H.y*Rational(1,2)           ;print("# IBH ",IBH )
HECF= (F.x-0  )*F.y*Rational(1,2) \
     +(C.x-F.x)*F.y*Rational(1,2) \
     -(H.x-0  )*H.y*Rational(1,2) \
     -(E.x-H.x)*H.y*Rational(1,2)           ;print("# HECF",HECF )
print("#",IBH/HECF)
# B = Point2D(0, 0)
# E = Point2D(3, 0)
# C = Point2D(4, 0)
# A = Point2D(1, sqrt(3)/2)
# D = Point2D(3, sqrt(3)/2)
# F = Point2D(7/2, sqrt(3)/4)
# G = Point2D(2, sqrt(3)/2)
# AE  Eq(y, sqrt(3)*(3 - x)/4)
# BF  Eq(y, sqrt(3)*x/14)
# BG  Eq(y, sqrt(3)*x/4)
# HH  {x: 7/3, y: sqrt(3)/6}
# H = Point2D(7/3, sqrt(3)/6)
# II  {x: 3/2, y: 3*sqrt(3)/8}
# I = Point2D(3/2, 3*sqrt(3)/8)
# IBH  5*sqrt(3)/16
# HECF sqrt(3)/4
# 5/4
```
# sympy風に(合格舎 様の方法を参考に) 延長補助線 
・線分DJと線分EJと交点Jを追加です。私は、点Jの作図省略です。
・台形の高さをhにしました。面積計算のEqです。底辺ｘ高さ÷2です。
・私は、連立方程式にしました。←そこまで必要なの?でした。
```python
from sympy import *
var('h',real=True)
var('BEI,IGA,BCF' ,real=True,positive=True)
var('BEH,BHI,ECFH',real=True,positive=True)
eq1=Eq(BEI,3* h*Rational(3,(3+1))  *Rational(1,2)) #(1:10:34)
eq2=Eq(IGA,1* h*Rational(1,(3+1))  *Rational(1,2)) #(1:10:34)
eq3=Eq(BEH,3* h*Rational(3,(2+4+3))*Rational(1,2)) #(1:12:50)延ばして合同
eq4=Eq(BCF,4* h*Rational(1,2)      *Rational(1,2)) #(1:13:37)
eq5=Eq(BHI ,BEI-BEH)
eq6=Eq(ECFH,BCF-BEH)
ans=solve([eq1,eq2,eq3,eq4,eq5,eq6],[BEI,IGA,BCF,BEH,BHI,ECFH])
print("#",ans)
print("#",ans[BHI]/ans[ECFH])
# {BEI: 9*h/8, BCF: h, BEH: h/2, BHI: 5*h/8, ECFH: h/2, IGA: h/8}
# 5/4
```
### (参考)上のプログラムで使用した関数のDOCの抜粋
・The intersection with another geometrical entity.
https://docs.sympy.org/latest/modules/geometry/lines.html#sympy.geometry.line.LinearEntity.intersection

# FreeCADのマクロで作図
・問題文は2次元ですが、３次元FreeCADのマクロで、XY平面上に作図しました。
・マクロプログラムの計算部分は、コピーしています。
・マクロプログラムで全点座標計算をしています。

```python
import FreeCAD
import Part
import DraftTools
import Draft
import Mesh
############################################################################
# 計算
from sympy import *
B=Point(0,0)
E=Point(3,0)
C=Point(4,0)
A=Point(1,sqrt(2**2-1**2))
D=A+Point(2,0)
F=Rational(1,2)*(C+D)
G=Rational(1,2)*(A+D)
H=Segment(A,E).intersection(Segment(B,F))[0]
I=Segment(A,E).intersection(Segment(B,G))[0]
print("#",Triangle(I,B,H).area/Polygon(H,E,C,F).area)
# 5/4
############################################################################
# 作図用
############################################################################
# 3D作図 z=0 XY平面に作図しました。
############################################################################
def myXYZ2Txt_2D(A):
    return '(' + str(A.x) + ',' + str(A.y) +  ')'
    #return ""
def myTxtXYZ_2D(A,myWedgei):
    P5x=float(A.x)
    P5y=float(A.y)
    P5z=0.0
    p5 = FreeCAD.Vector(P5x, P5y, P5z)
    myText = Draft.makeText(myWedgei, p5)
    myText.Label = myWedgei
    FreeCADGui.ActiveDocument.ActiveObject.FontSize = '0.15 mm'
    return
def myTxtXYZ_S_2D(*xy_tx):
    for i in range(1,int(len(xy_tx)/2)+1):
        myTxtXYZ_2D(xy_tx[2*i-2],xy_tx[2*i-1]+myXYZ2Txt_2D(xy_tx[2*i-2]) )
    return
def myLine_2D(A,B):
    Ax,Ay,Az=float(A.x),float(A.y),0.0
    Bx,By,Bz=float(B.x),float(B.y),0.0
    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_2D(*args):
    for i in range(1,len(args)):
        myLine_2D(args[i-1],args[i])
    return
def myLine_C_2D(*args):
    for i in range(1,len(args)):
        myLine_2D(args[i-1],args[i])
    myLine_2D(args[i],args[0])
    return
#######################################################################################
myLine_C_2D  ( A,B,C,D )
myLine_S_2D  ( A,E )
myLine_S_2D  ( B,F )
myLine_S_2D  ( B,G )
myTxtXYZ_S_2D( A,"A",B,"B",C,"C",D,"D")
myTxtXYZ_S_2D( E,"E",F,"F",G,"G",H,"H",I,"I" )
#######################################################################################
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")
```
・isometric方向?です。

![0png.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109698/c193ad88-91af-d2f0-5af3-7839de65ab18.png)

・上空から?です。Originは、CAD操作で非表示です。
**・角度の寸法表示は勉強中です。**

![1png.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109698/606486cc-225f-74e9-b767-a4bd3f5f5b1c.png)

# いつもの? sympyの実行環境と 参考のおすすめです。
(テンプレート)

https://qiita.com/mrrclb48z/items/00dd08b0317069be9342

# 小中学生のみなさまへ
**「高校入試のみ私のsympyシリーズ」を中断** の予定です。
2投稿でしたけど参考になっていたらうれしいです。
[(これ)中高校生のみなさまへ。<1/2>「高校入試問題。円の難問2023千葉県数学3(3)」をsympyとFreeCADで作図しました。](https://qiita.com/mrrclb48z/items/d69e52a2ed6ee9b0d4fe)

youtube他、以下のステキなサイトもあります。(再出)
＞全国公立全問PDFあり
http://homepage1.canvas.ne.jp/ynaka/index.html#top
＞(姉妹ページ)数学得意な中学生応援します 様 ポータル(発展問題・難問題あり)
http://ynaka.html.xdomain.jp/

再開の予定は、未定です。
**sympyの大学入試およびその他幅広く(支離滅裂に)、私は続けています。**
オススメは、しませんが、今は、スマホひとつで大学の講義?海外の大学の講義が
聞けるタイ?ヘンな時代ですネ。

# 2投稿のまとめ
①神奈川県の等脚台形について
　私はすっかり、三平方の定理を忘れていました。
　√(2^2-1^1)=√3 ⇒ 正三角形⇒ 60°
　次ならスグでてきます。
　√(2^2-1^1)=√3 ⇐ 正三角形⇐60°
　イケマセンネ。

②神奈川県の等脚台形について
　本問題の特徴は、三平方の定理を思い出さなくて解ける。
　三平方の定理を理解していれば、簡単に解ける。
　**間口の広い問題** に思えます。

③高校入試の図形問題は、補助線2パターン
　補助線を追加する。神奈川県パターン
　線を隠してみる。千葉県パターン。
　できると思いますますけど、[自転車君(共通テ2022)](https://qiita.com/mrrclb48z/items/297442a71820732d3ea3)も図形問題としてとらえると、
　補助線追加パターンです。

以上です。