coordinate di un punto su una retta

Messaggioda kymala » 17/09/2007, 13:42

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?
kymala
Starting Member
Starting Member
 
Messaggio: 7 di 12
Iscritto il: 27/08/2007, 16:00

Messaggioda gygabyte017 » 17/09/2007, 14:39

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!
gygabyte017
Average Member
Average Member
 
Messaggio: 124 di 628
Iscritto il: 09/04/2006, 17:21

Messaggioda The borg » 17/09/2007, 14:42

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...
The borg
Junior Member
Junior Member
 
Messaggio: 55 di 197
Iscritto il: 03/09/2007, 23:31
Località: Costigliole d'Asti

Messaggioda kymala » 17/09/2007, 15:57

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?
kymala
Starting Member
Starting Member
 
Messaggio: 8 di 12
Iscritto il: 27/08/2007, 16:00

Messaggioda gygabyte017 » 17/09/2007, 16:08

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...
gygabyte017
Average Member
Average Member
 
Messaggio: 125 di 628
Iscritto il: 09/04/2006, 17:21

Messaggioda kymala » 17/09/2007, 16:19

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;
kymala
Starting Member
Starting Member
 
Messaggio: 9 di 12
Iscritto il: 27/08/2007, 16:00

Messaggioda gygabyte017 » 17/09/2007, 16:46

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!
gygabyte017
Average Member
Average Member
 
Messaggio: 126 di 628
Iscritto il: 09/04/2006, 17:21

Messaggioda kymala » 17/09/2007, 18:02

grazie per la pazienza....però...non so perchè ma facendogli stampare il valore di cDx mi dice NaN.....va a sapere cos'ho sbagliato...
kymala
Starting Member
Starting Member
 
Messaggio: 10 di 12
Iscritto il: 27/08/2007, 16:00

Messaggioda gygabyte017 » 17/09/2007, 18:05

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...
gygabyte017
Average Member
Average Member
 
Messaggio: 127 di 628
Iscritto il: 09/04/2006, 17:21

Messaggioda kymala » 17/09/2007, 18:10

mi dà infinity e -infinity, nei due casi....
kymala
Starting Member
Starting Member
 
Messaggio: 11 di 12
Iscritto il: 27/08/2007, 16:00

Prossimo

Torna a Secondaria II grado

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite