角の2等分線「2023北海道大学前期文系【２】」をsympyとFreeCADでやってみたい。 

問題文は2次元ですが、３次元FreeCADのマクロで、XY平面上に作図しました。

オリジナル

https://kamelink.com/blog/2023/03/21/6-3-23-hokkaidodai-bun-2/

上と同じです。大学入試数学問題集成＞【２】テキスト

https://mathexamtest.web.fc2.com/2023/202310001/2023100010100mj.html#top-0107

# sympyで(オリジナルのやり方で)
数学入試問題 様の方法を勉強中。
2通り。solveの連立方程式でできる?はずです。

# sympyで(sympy的?安易なやり方で)
・全点の座標計算を先にしました。
・角の2等分線は、単位ベクトルの真ん中？にしました。(参考あります。)
```python
from sympy import *
u,v=symbols("u v", real=True)
def myVectorAB(OQ, OA,OB):
    return solve([
                  Eq(OQ.x,u*OA.x+v*OB.x),
                  Eq(OQ.y,u*OA.y+v*OB.y)
                 ],
                 [u,v])
OA,OB,AB=3,5,7
O=Point (0 ,0 )
A=Point (OA,0 )
B=Circle(O ,OB).intersection( Circle(A,AB) )[1]
P=Line(A,B).intersection( Line(O,  Rational(1,2)*(A.unit+   B .unit)) )[0]
Q=Line(O,P).intersection( Line(B,B+Rational(1,2)*(B.unit+(A-B).unit)) )[0]
print("#(1)",myVectorAB(P, A,B),P.distance(O) )
print("#(2)",myVectorAB(Q, A,B),Q.distance(O) )
#(1) {u: 5/8, v: 3/8} 15/8
#(2) {u: 5, v: 3} 15
```
①私の環境は,pycharmです。
②よく聞くのは、Jupyterです。
③web上で、上記のソースを「SymPy Live shell」に、コピー貼り付けでもできました。
黒背景の右上に、マウスを移動すると、コピーマークが発生します。

https://live.sympy.org/

# FreeCADのマクロで作図
```python
import FreeCAD
import Part
import DraftTools
import Draft
import Mesh
############################################################################
# 計算
from sympy import *
u,v=symbols("u v", real=True)
def myVectorAB(OQ, OA,OB):
    return solve([
                  Eq(OQ.x,u*OA.x+v*OB.x),
                  Eq(OQ.y,u*OA.y+v*OB.y)
                 ],
                 [u,v])
OA,OB,AB=3,5,7
O=Point (0 ,0 )
A=Point (OA,0 )
B=Circle(O ,OB).intersection( Circle(A,AB) )
B=Circle(O ,OB).intersection( Circle(A,AB) )[1]
P=Line(A,B).intersection( Line(O,  Rational(1,2)*(A.unit+   B .unit)) )[0]
Q=Line(O,P).intersection( Line(B,B+Rational(1,2)*(B.unit+(A-B).unit)) )[0]
print("#(1)",myVectorAB(P, A,B),P.distance(O) )
print("#(2)",myVectorAB(Q, A,B),Q.distance(O) )
#(1) {u: 5/8, v: 3/8} 15/8
#(2) {u: 5, v: 3} 15
############################################################################
# 3D作図 z=0 XY平面に作図しました。
def myXYZ2Txt_2D(A):
    return '(' + str(A.x) + ',' + str(A.y) +  ')'
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.5 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
    return
myTxtXYZ_S_2D(O,"O",A,"A",B,"B",P,"P",Q,"Q")
myLine_C_2D  (O,A,B)
myLine_S_2D  (O,P,Q,B)
#
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/6e3ac60e-f8cb-c0ad-74a0-8c24ef3281d1.png)

上空から?です。
Originを非表示しています。マウスの操作勉強中です。

![1png.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109698/e9e850d2-3085-b868-b099-7f24ed5fed24.png)

# 参考

Return the Point that is in the same direction as self and a distance of 1 from the origin

https://docs.sympy.org/latest/modules/geometry/points.html#sympy.geometry.point.Point.unit

https://qiita.com/mrrclb48z/items/881a72b88333798afbc1

＞解答速報様　＞2023北海道大学前期文系【２】
点Oの位置が、左下でなくて、上の位置にありました。
オリジナル様は、点Oの位置が、左下です。座標計算に便利です。

https://kamelink.com/exam/index.php?2023%C7%AF%B2%F2%C5%FA%C2%AE%CA%F3#w18623d7:~:text=%E5%8C%97%E6%B5%B7%E9%81%93%E5%A4%A7%E5%AD%A6-,%E2%80%A0,-%E7%90%86%E7%B3%BB%E5%AD%A6%E9%83%A8%E3%80%80%E5%95%8F%E9%A1%8C


# 参考(傍心)
勉強中

https://ja.wikipedia.org/wiki/%E4%B8%89%E8%A7%92%E5%BD%A2%E3%81%AE%E5%86%85%E6%8E%A5%E5%86%86%E3%81%A8%E5%82%8D%E6%8E%A5%E5%86%86