Leg het geheel in een rooster met de oorsprong = O = (0, 0),
en definieer
\delta = \alpha - 90^\circ
en
\epsilon = 180^\circ - \beta - \delta
dan is
punt P = (Px, Py) met
Px=0
Py=-A
punt Q = (Qx, Qy) met
Qx=C\cdot cos(\delta)
Qy=-C\cdot sin(\delta)-A
punt S = (Sx, Sy) met
Sx=Qx+B\cdot cos(\epsilon)
Sy=Qy+B\cdot sin(\epsilon)
Voor \theta = de hoek van de (rode) cirkelsector geldt:
\theta=\beta+\delta-90^\circ
en voor middelpunt M = (Mx, My) van de dragende cirkel:
Mx = Sx - R \cdot sin(\theta)
My = -R
Als we \theta omzetten naar radialen, dan is booglengte L
L = R \cdot \theta \cdot \frac{\pi}{180^\circ}
ofwel
R=\frac{L\cdot 180^\circ}{\theta \cdot \pi}
Omdat QS samen moet vallen met SM (want dan staat QS loodrecht op de cirkel), geldt:
\frac{Sy-My}{Sx-Mx} = \frac{Sy-Qy}{Sx-Qx} = tan(\epsilon)
dus
Sy-My = (Sx-Mx)\cdot tan(\epsilon)
Gebruik nu Mx en My van hierboven:
Sy+R = (Sx-(Sx - R \cdot sin(\theta)))\cdot tan(\epsilon)
en werk dit verder uit:
Sy+R = R \cdot sin(\theta)\cdot tan(\epsilon)
\Leftrightarrow
Sy+R - R \cdot sin(\theta)\cdot tan(\epsilon) = 0
\Leftrightarrow
Sy+R\cdot [ 1 - sin(\theta)\cdot tan(\epsilon)] = 0
\Leftrightarrow
Sy+R\cdot [ 1 - sin(\beta + \delta)] = 0
\Leftrightarrow
Qy+B\cdot sin(\epsilon)+\frac{L\cdot 180^\circ}{\theta \cdot \pi}\cdot [ 1 - sin(\beta + \delta)] = 0
\Leftrightarrow
-C\cdot sin(\delta)-A+B\cdot sin(180^\circ - \beta - \delta)+\frac{L\cdot 180^\circ}{(\beta+\delta-90^\circ) \cdot \pi}\cdot [ 1 - sin(\beta + \delta)] = 0
\Leftrightarrow
-C\cdot sin(\delta)-A+B\cdot sin(\beta + \delta)+\frac{L\cdot 180^\circ}{(\beta+\delta-90^\circ) \cdot \pi}\cdot [ 1 - sin(\beta + \delta)] = 0
\Leftrightarrow
B\cdot sin(\beta + \delta) - A -C\cdot sin(\delta)+\frac{L\cdot 180^\circ}{(\beta+\delta-90^\circ) \cdot \pi}\cdot [ 1 - sin(\beta + \delta)] = 0
Hierin zijn alle variabelen behalve \delta bekend, zodat we \delta kunnen gaan bepalen.
Omdat \delta hier zowel binnen als buiten een goniometrische functie voorkomt, bestaat er geen exacte formule voor \delta, maar moeten we \delta numeriek benaderen.
Veel rekenmachines en computerprogramma's hebben hiervoor een
solve-functie.
Als deze met goniometrische functies niet in graden maar in radialen werkt, moet de laatste formule hierop worden aangepast:
B\cdot sin(\beta + \delta) - A -C\cdot sin(\delta)+\frac{L}{\beta+\delta-(\pi/2)}\cdot [ 1 - sin(\beta + \delta)] = 0
Met deze formule en jouw getallen levert WolframAlpha zo:
https://www.wolframalpha.com/input?i=%7 ... 3Cx%3C1%7D
\delta = x = 0.00760394 \; rad = 0.00760394\cdot \frac{180^\circ}{\pi} = 0.435673...^\circ
waarmee
\alpha = 90^\circ+\delta = 90.435673...^\circ
of wat nauwkeuriger:
\alpha = 90.435673609016750833522266525006797...^\circ
Kom je hiermee verder?
PS:
in mijn plaatje boven in deze post is
A = B = 1.62
C=8
L = 4
\beta = 120^\circ
en krijg ik via bovenstaande formule:
\delta = 6.5660939990750221951...^\circ
dus
\alpha = 96.5660939990750221951...^\circ
PPS:
Heb je geen beschikking over zo'n
solve-functie, laat het dan even weten: er zijn nog andere manieren om de oplossing te vinden.
Voorbeeld: in Python:
copy/paste deze code:
Code: Selecteer alles
import math
# functie waarvan we een nulpunt willen bepalen:
def f(delta):
beta=120*math.pi/180
A=1.62
B=1.62
C=8
L=4
return (B*math.sin(beta+delta) - A - C*math.sin(delta) + (L/(beta+delta-math.pi/2)) * (1-math.sin(beta+delta)))
# f(0.000001) > 0
# f(1) < 0
# beginwaarden: 0.000001 < d < 1:
dmin = 0.000001
dmax = 1
# binair zoeken, 60 iteraties:
for i in range(60):
dmid = (dmin+dmax)/2
fmid = f(dmid)
if fmid>0:
dmin=dmid
else:
dmax=dmid
# nu hebben we d in radialen
d=(dmin+dmax)/2
# waarna we alpha (in graden) kunnen bepalen:
print("alpha =", 90+d*180/math.pi, "graden")
naar het main.py invoervak van
https://www.online-python.com/ en run dit programma.
Dit geeft als resultaat:
alpha = 96.56609399907502 graden
Pas de functie f(delta) in dit programma aan naar jouw waarden.