Ho capito che vuoi fare... Dammi un momento per fare i calcoli e ti dico come mi viene (sperando sia giusto)...
Tralascio il fatto che il codice:
- Codice: Seleziona tutto
float coseno;
float angolo_alpha;
float BD;
float cD_x, cD_y;
coseno = (cA.r*cA.r + rapporto - cB.r*cB.r)/ (2 * cA.r * rapporto);
angolo_alpha = acos (coseno);
BD = (rapporto2 * sin(angolo_alpha)) / sin(60 - angolo_alpha);
//Retta passante per i due centri dei cerchi
float m2,p2;
//qui uso una funzione dichiarata in un'altra parte di codice
m2 = equ_rect_m(cA.x,cA.y,cB.x,cB.y);
p2 = equ_rect_p(cA.x,cA.y,cB.x,cB.y);
è giusto fino qui, non sapendo che fanno le funzioni che usi. Ora ti scrivo le funzioni per calcolare cD_x e cD_y...
EDIT: allora, dopo un sacco di calcoli, ecco la soluzione. Innanzitutto ti faccio notare che, dato un punto e una distanza, i possibili punti D sono 2, cioè uno su una parte della retta, e uno sull'altra. Qual'è quello giusto sta a te deciderlo.
Comunque, i due possibili valori sono:
\( \displaystyle {c}{D}_{{x}}=-\frac{{\sqrt{{-{{\left({c}{B}.{x}\right)}}^{{2}}\cdot{{\left({m}{2}\right)}}^{{2}}+{2}\cdot{\left({c}{B}.{x}\right)}\cdot{\left({m}{2}\right)}\cdot{\left({c}{B}.{y}\right)}-{\left({p}{2}\right)}-{{\left({c}{B}.{y}\right)}}^{{2}}+{2}\cdot{\left({c}{B}.{y}\right)}\cdot{\left({p}{2}\right)}+{{\left({B}{D}\right)}}^{{2}}\cdot{\left({{\left({m}{2}\right)}}^{{2}}+{1}\right)}-{{\left({p}{2}\right)}}^{{2}}}}-{c}{B}.{x}-{\left({m}{2}\right)}\cdot{\left({c}{B}.{y}\right)}-{\left({p}{2}\right)}}}{{{{\left({m}{2}\right)}}^{{2}}+{1}}} \)
oppure
\( \displaystyle {c}{D}_{{x}}=\frac{{\sqrt{{-{{\left({c}{B}.{x}\right)}}^{{2}}\cdot{{\left({m}{2}\right)}}^{{2}}+{2}\cdot{\left({c}{B}.{x}\right)}\cdot{\left({m}{2}\right)}\cdot{\left({c}{B}.{y}\right)}-{\left({p}{2}\right)}-{{\left({c}{B}.{y}\right)}}^{{2}}+{2}\cdot{\left({c}{B}.{y}\right)}\cdot{\left({p}{2}\right)}+{{\left({B}{D}\right)}}^{{2}}\cdot{\left({{\left({m}{2}\right)}}^{{2}}+{1}\right)}-{{\left({p}{2}\right)}}^{{2}}}}+{c}{B}.{x}+{\left({m}{2}\right)}\cdot{\left({c}{B}.{y}\right)}-{\left({p}{2}\right)}}}{{{{\left({m}{2}\right)}}^{{2}}+{1}}} \)
e da qui, \( \displaystyle {c}{D}_{{y}}={c}{D}_{{x}}\cdot{m}{2}+{p}{2} \)
Spero sia tutto giusto, ciao!