平面図形「埼玉大学2022年前期（経済・教育）第４問」をsympyとFreeCADでやってみた。

＞(2)中学生では手に負えないか…？
？(1)なら、小学5年生が何としてくれるかも？(答えは,参考の下を見て下さい。)
？(2)ができる小学5年生がいたら、すごいですね。

https://www.google.com/search?q=%E4%B8%89%E8%A7%92%E5%BD%A2%E3%81%AE%E9%9D%A2%E7%A9%8D+%E3%81%84%E3%81%A4%E7%BF%92%E3%81%86&rlz=1C1CHBD_jaJP908JP908&oq=%E4%B8%89%E8%A7%92%E5%BD%A2%E3%81%AE%E9%9D%A2%E7%A9%8D%E3%80%80%E3%81%84%E3%81%A4&aqs=chrome.1.69i57j0i512j0i30j0i8i30.19251j0j7&sourceid=chrome&ie=UTF-8

＞5年「三角形・平行四辺形」の面積...
＞5年生の2学期で習いますよ。....

メネラウスの定理を理解していない人、私用です。
**点検用です。**

# オリジナル

https://mathmathmass.exblog.jp/32505613/

上と同じです。大学入試数学問題集成＞【４】

https://mathexamtest.web.fc2.com/2022/202210221/2022102210100mj.html#q-0104

＞（小学理系，中学数学）
かも。

# sympyで(小学5年生?用)
(2)交点計算しています。
```python
from sympy import *
def MensekiVector(P,Q):
    return Rational(1,2)*sqrt(P.distance(Point(0,0))**2*Q.distance(Point(0,0))**2-P.dot(Q)**2)
A=Point(0,9)
B=Point(0,0)
C=Point(9,0)
D=B+Rational(5,9)*(C-B)
E=C+Rational(5,9)*(A-C)
F=B+Rational(4,9)*(A-B)
ABC=MensekiVector((A-B),(C-B))
DEF=MensekiVector((E-D),(F-D))
print("#(1)",DEF/ABC)
P=Line(A,D).intersection(Line(B,E))[0]
Q=Line(B,E).intersection(Line(C,F))[0]
R=Line(C,F).intersection(Line(A,D))[0]
PQR=MensekiVector((P-Q),(R-Q))
print("#(2)",PQR/ABC)
#(1) 7/27
#(2) 1/61
```
on line sympyで、上記のソースコードを貼り付けて実行できました。私は,pycharmです。　


https://live.sympy.org/

# sympyで(メネラウスの定理を理解していない人用)
計算できると思いませんでした。
```python
from sympy import *
def MensekiVector(P,Q):
    return Rational(1,2)*sqrt(P.distance(Point(0,0))**2*Q.distance(Point(0,0))**2-P.dot(Q)**2)
L1=Symbol('L1',positive=True,real=True)
L2=Symbol('L2',positive=True,real=True)
t1=Symbol('t1',positive=True,real=True)
t2=Symbol('t2',positive=True,real=True)
A=Point(L1*cos(t1),L1*sin(t1))
B=Point(0,0)
C=Point(L2*cos(t2),L2*sin(t2))
D=B+Rational(5,9)*(C-B)
E=C+Rational(5,9)*(A-C)
F=B+Rational(4,9)*(A-B)
ABC=MensekiVector((A-B),(C-B))
DEF=MensekiVector((E-D),(F-D))
print("#(1)",(DEF/ABC).simplify())
P=Line(A,D).intersection(Line(B,E))[0]
Q=Line(B,E).intersection(Line(C,F))[0]
R=Line(C,F).intersection(Line(A,D))[0]
PQR=MensekiVector((P-Q),(R-Q))
print("#(2)",(PQR/ABC).simplify())
#(1) 7/27
#(2) 1/61
```
# sympyで(メネラウスの定理を理解している人用)
メネラウスの定理を勉強すれば、かっこよくできるはずです！！根拠？


# FreeCADのマクロで(小学5年生?用)
sympyとFreeCADの組み合わせです。分数が見えていいですね。
画面操作は現在勉強中？画面操作で、面積比や座標の分数表示はできないと思います。
3DのCADを2DのCADの無駄遣いと言われるかも。
![png1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109698/251807e2-ff70-c04a-b685-f429c5ffe8cd.png)

Top(上空？)から見ました。グリッドは、操作で非表示にしました。

![png2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109698/3d8d5dfd-1017-5035-d6b8-248131152c6b.png)

```python
import FreeCAD
import Part
import Draft
import Mesh
#########################################################################################################
from sympy import *
def MensekiVector(P,Q):
    return Rational(1,2)*sqrt(P.distance(Point(0,0))**2*Q.distance(Point(0,0))**2-P.dot(Q)**2)
A=Point(0,9)
B=Point(0,0)
C=Point(9,0)
D=B+Rational(5,9)*(C-B)
E=C+Rational(5,9)*(A-C)
F=B+Rational(4,9)*(A-B)
ABC=MensekiVector((A-B),(C-B))
DEF=MensekiVector((E-D),(F-D))
print("#(1)",DEF/ABC)
P=Line(A,D).intersection(Line(B,E))[0]
Q=Line(B,E).intersection(Line(C,F))[0]
R=Line(C,F).intersection(Line(A,D))[0]
PQR=MensekiVector((P-Q),(R-Q))
print("#(2)",PQR/ABC)
###########################################################################################################
## xxxxx 3D作図
## 2D作図
def myXYZ2Txt(A):
    return '(' + str(A.x) + ',' + str(A.y) + ')'
def myTxtXYZ(A,myWedgei):
    P5x=float(A.x)
    P5y=float(A.y)
    P5z=0
    p5 = FreeCAD.Vector(P5x, P5y, P5z)
    myText = Draft.makeText(myWedgei, p5)
    myText.Label = myWedgei
    FreeCADGui.ActiveDocument.ActiveObject.FontSize = '0.3 mm'
def myLine(A,B):
    Ax,Ay,Az=float(A.x),float(A.y),float(0.0)
    Bx,By,Bz=float(B.x),float(B.y),float(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)
def myLine_S(*args):
    for i in range(1,len(args)):
        myLine(args[i-1],args[i])
    return 0
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]) )
doc = App.activeDocument()
myTxtXYZ_S(A,"A",B,"B",C,"C")
myTxtXYZ_S(D,"D",E,"E",F,"F")
myTxtXYZ_S(P,"P",Q,"Q",R,"R")
myLine_S(A,B,C,A)
myLine_S(D,E,F,D)
myLine_S(P,Q,R,P)

App.ActiveDocument.addObject("App::Origin", "Origin")
App.ActiveDocument.getObject('Origin').Visibility = True
App.ActiveDocument.recompute()
Gui.activeDocument().activeView().viewAxonometric()
Gui.SendMsgToActiveView("ViewFit")
```


# 参考

https://www.google.com/search?q=%E5%88%86%E6%95%B0+%E4%BD%95%E5%B9%B4%E3%81%A7%E7%BF%92%E3%81%86&rlz=1C1CHBD_jaJP908JP908&oq=%E5%88%86%E6%95%B0%E3%80%80%E3%81%AA%E3%82%93%E3%81%AD%E3%82%93&aqs=chrome.2.69i57j0i4i512l2.11974j1j7&sourceid=chrome&ie=UTF-8


https://www.google.com/search?q=%E7%9B%B8%E4%BC%BC+%E4%BD%95%E5%B9%B4%E7%94%9F%E3%81%A7%E7%BF%92%E3%81%86&source=hp&hl=ja&oq=%E7%9B%B8%E4%BC%BC+%E4%BD%95%E5%B9%B4%E7%94%9F%E3%81%A7%E7%BF%92%E3%81%86&gs_l=mobile-heirloom-hp.3..0i512.6343.6343.0.7953.2.1.0.1.1.0.143.143.0j1.1.0....0...1c.2.34.mobile-heirloom-hp..1.1.143.22vXyMr2A5w


https://ja.m.wikipedia.org/wiki/%E3%83%A1%E3%83%8D%E3%83%A9%E3%82%A6%E3%82%B9%E3%81%AE%E5%AE%9A%E7%90%86

https://en.wikipedia.org/wiki/Menelaus%27s_theorem

https://showa-yojyo.github.io/notebook/python-sympy/geometry.html#id23


https://qiita.com/mrrclb48z/items/c778f2fdcd19f94966d8


# 手計算
(1)だけ。点Eの座標計算に悩みました。
ABC
9×9×1/2=40.5
DEF=ABC-(BDF+DCE+EAF)
40.5-(5×4×1/2+5×4×1/2+5×4×1/2)=10.5
10.5/40.5=21/81=7/27倍である。

(2)の手計算を教えて下さい。

申し訳ありません。相似は中学3年生でした。