パイソニスタの方へ
・ver0.2のPoint(1,0)を使わない方法を教えて下さい。angle_betweenにしました。
問題文は2次元ですが、3次元FreeCADのマクロで、XY平面上に作図しました。
いつものベクトルの成分表示?です。
オリジナル
中日進学ナビ 様
大問3(2)。ページの下半分です。正方形の問題です。
https://edu.chunichi.co.jp/site_home/highschool/pdf/2024_sugaku_q.pdf#page=7
東進 様
2024/03/13
現在、ご利用いただけない状態となっております。
時間を置いて再度ご利用願います。
大問3(2)。ページの下半分です。正方形の問題です。
https://www.toshin.com/koukou_nyushi/files/2024/sugaku_q/aichi_sugaku_q.pdf#page=7
<2024年全国公立高校入試解答速報|大学受験の予備校・塾 東進
https://www.toshin.com/koukou_nyushi/
東亜紗美moveforward数学教室 様
youtube 大問3(2)。途中からです。(1:06:07) 2024年愛知県公立高校入試<数学>解説
https://youtu.be/ogDFpAdUqW0?t=2435
>愛知県は相似が好き...
>数学には、『この問題にはこの解き方!』という制限は全くない...
sympyで(オリジナル 様のやり方で)
・ver0.1
・ADの延長とBEの延長の交点を、点Iとしました。
・この問題のポイントは、FGの長さです。
裏返しの相似でした。「この記事は以下の記事からリンクされています」で。
・私は、相似の勉強中です。中点連結定理?も。
# ver0.1
from sympy import *
var('FG,HF',real=True,nonnegative=True)
d =4
EB=sqrt(d**2+(Rational(1,2)*d)**2)
EF=EB/2
#
AB=d
BF=EF
AF=sqrt(AB**2-BF**2)
IA=2*d
IF=EF*3
FG=solve(Eq(IA/AF,IF/FG),FG)[0]
HF=solve(Eq( 2/AF,HF/FG),HF)[0]
#
print("# ア ", EF )
print("# イウ", HF/EB)
# ア sqrt(5)
# イウ 3/8
sympyで(いつものやり方で)
・ver0.2
・ベクトルの成分表示です。
Point angle_between(l2)
https://docs.sympy.org/latest/modules/geometry/lines.html#sympy.geometry.line.LinearEntity.angle_between
# ver0.2
from sympy import *
var('d,θ',real=True,nonnegative=True)
d =4
B,C,D,A=map(Point,[(0,0),(d,0),(d,d),(0,d)])
E =(D+C)/2
F =(B+E)/2
θ =Line(A,F).angle_between(Line(A,D))
dumθ =Line(F,F+Point(1,0)).angle_between(Line(F,E))
dumG =F+Point(1,0).rotate(dumθ+θ)
G =Line(A,D).intersection(Line(F,dumG))[0]
H =Line(B,E).projection(G)
#
print("# ア ",E.distance(F) )
print("# イウ",H.distance(F)/E.distance(B) )
# ア sqrt(5)
# イウ 3/8
・ver0.3
・sympyらしく? 最後にrepしました。比は、正方形の辺の長さと無関係でした。
# ver0.3
from sympy import *
var('d,θ',real=True,nonnegative=True)
var('d ',real=True,nonnegative=True)
A,B,C,D=map(Point,[(0,d),(0,0),(d,0),(d,d)])
E =(D+C)/2
F =(B+E)/2
θ =Line(A,F).angle_between(Line(A,D))
dumθ =Line(F,F+Point(1,0)).angle_between(Line(F,E))
dumG =F+Point(1,0).rotate(dumθ+θ)
G =Line(A,D).intersection(Line(F,dumG))[0]
H =Line(B,E).projection(G)
#
print("# ア ", E.distance(F) )
print("# イウ", H.distance(F)/E.distance(B) )
rep ={d:4}
print("# ア ", E.distance(F) .subs(rep) )
print("# イウ",(H.distance(F)/E.distance(B)).subs(rep) )
# ア sqrt(5)*d/4
# イウ 3/8
# ア sqrt(5)
# イウ 3/8
FreeCADのマクロで作図
・計算部分は、コピー貼り付けです。
import FreeCAD
import Part
import DraftTools
import Draft
import Mesh
############################################################################
# 計算
from sympy import *
var('d,θ',real=True,nonnegative=True)
d =4
B,C,D,A=map(Point,[(0,0),(d,0),(d,d),(0,d)])
E =(D+C)/2
F =(B+E)/2
θ =Line(A,F).angle_between(Line(A,D))
dumθ =Line(F,F+Point(1,0)).angle_between(Line(F,E))
dumG =F+Point(1,0).rotate(dumθ+θ)
G =Line(A,D).intersection(Line(F,dumG))[0]
H =Line(B,E).projection(G)
############################################################################
# 作図用
############################################################################
# 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.3 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 (B,E)
myLine_S_2D (A,F,G,H)
myTxtXYZ_S_2D(A,"A",B,"B",C,"C",D,"D",E,"E",F,"F",G,"G",H,"H",)
#######################################################################################
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")
・問題文は2次元ですが、3次元FreeCADのマクロで、XY平面上に作図しました。
・isometric方向です。
・上空からです。拡大図
・Originは、マウス操作で非表示です。
いつもの? sympyの実行環境と 参考のおすすめです。
いつもと違うおすすめです。
「この記事は以下の記事からリンクされています」で。