Home matematicamente.itHome ForumRegistratiCercaFAQLista utentiGruppiLog in
Rispondi Pagina 1 di 2
Vai a 1, 2  Successivo
coordinate di un punto su una retta
Autore Messaggio
Rispondi citando
Messaggio coordinate di un punto su una retta 
Se io ho l'equazione di una retta, e le coordinate di due punti (A e B) che si trovano su questa retta. Devo trovare le coordinate del punto D, che si trova anch'egli sulla stessa retta, sapendo la distanza BD. Come faccio?

Profilo Invia messaggio privato
Rispondi citando
Messaggio  
Supponendo che la retta abbia equazione $y=f(x)$. se il punto $D$ appartiene alla retta, avrà cordinate $D(x_0,f(x_0))$. Il punto B lo conosci, e ha coordinate $B(b,f(b))$ (li metto tutti generici perchè tu non hai detto quali sono!)

La distanza BD è: $BD=sqrt((D_y-B_y)^2+(D_x-B_x)^2)=sqrt((f(x_0)-f(b))^2+(x_0-b)^2)$

Quindi ottieni l'equazione $BD^2 =(f(x_0)-f(b))^2+(x_0-b)^2$ dove conosci già $b$, $BD$, e $f(x)$. Hai come unica incognita $x_0$. Risolvila e hai il risultato.

Ciao!

Profilo Invia messaggio privato
Rispondi citando
Messaggio  
scrivi il punto come (x; y=mx+q) così hai solo la x come incognita fai distanza A D uguale alla distanza punto A D con la formula...

Profilo Invia messaggio privato
Rispondi citando
Messaggio  
scusate ma....non mi riesce proprio.... E' che ho tutti valori generici perchè si tratta di un programma in java...dunque, ho provato a scrivere la formula scrivendo il punto D come (x, mx+q) ma forse poi ho sbagliato a risolverla perchè mi viene sempre x=0
Come dovrebbe venire la x?

Profilo Invia messaggio privato
Rispondi citando
Messaggio  
Beh potrebbe essere... Metti caso che la retta è $y=x$, il punto $B(1,1)$ e $BD=sqrt2$, allora D può essere anche $D(0,0)$...

Posta magari un pò di codice java così vediamo meglio...

Profilo Invia messaggio privato
Rispondi citando
Messaggio  
Non so quanto si capisce così...è che sto cercando di creare un'animazione che ricrei la situazione delle bolle di sapone in due dimensioni, dunque l'intersezione di due o tre circonferenze, quando formano degli angoli di 120°. Nella loro intersezione devo disegnare un arco di cerchio. Sono arrivata al punto che mi manca solo questo punto D che sarebbe il centro da cui disegnare l'arco di cerchio che divide le due bolle.

//qui calcolo quanto vale l'angolo nel centro di uno dei due cerchi (A), poi trovo BD
//cioè la distanza dall'altro centro al centro dell'arco di intersezione delle due bolle

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);

//le coordinate del punto B sono cB.x e cB.y
//calcolo le coordinate di D
//cD_x = sqrt (BD*BD - p2*p2 + cB.x*cB.x + cB.y*cB.y) / 2*m2*m2;
cD_x = sqrt (+ p2*p2 - BD*BD + cB.x*cB.x + cB.y*cB.y) / -2*m2*m2;

cD_y = m2*cD_x + p2;

Profilo Invia messaggio privato
Rispondi citando
Messaggio  
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:
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:

$cD_x = - (sqrt(- (cB.x)^2*(m2)^2 + 2*(cB.x)*(m2)*(cB.y) - (p2) - (cB.y)^2 + 2*(cB.y)*(p2) + (BD)^2*((m2)^2 + 1) - (p2)^2) - cB.x - (m2)*(cB.y) - (p2))/((m2)^2 + 1) $

oppure

$cD_x = (sqrt(- (cB.x)^2*(m2)^2 + 2*(cB.x)*(m2)*(cB.y) - (p2) - (cB.y)^2 + 2*(cB.y)*(p2) + (BD)^2*((m2)^2 + 1) - (p2)^2) + cB.x + (m2)*(cB.y) - (p2))/((m2)^2 + 1) $

e da qui, $cD_y=cD_x*m2+p2$


Spero sia tutto giusto, ciao!

Profilo Invia messaggio privato
Rispondi citando
Messaggio  
grazie per la pazienza....però...non so perchè ma facendogli stampare il valore di cDx mi dice NaN.....va a sapere cos'ho sbagliato...

Profilo Invia messaggio privato
Rispondi citando
Messaggio  
kymala ha scritto:
grazie per la pazienza....però...non so perchè ma facendogli stampare il valore di cDx mi dice NaN.....va a sapere cos'ho sbagliato...


Se da NaN (Not a Number) al 90% è perchè la radice ha argomento negativo... strano però... prova a fargli stampare l'argomento della radice solo (senza fare la radice e tutto il resto) e vedi se viene un numero negativo...

Profilo Invia messaggio privato
Rispondi citando
Messaggio  
mi dà infinity e -infinity, nei due casi....

Profilo Invia messaggio privato
Mostra prima i messaggi di:
Rispondi Pagina 1 di 2
Vai a 1, 2  Successivo
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi