Formula per accorciare un segmento nel piano cartesiano
Ho un segmento sul piano cartesiano, tra le coordinate X[size=50]A[/size]Y[size=50]A[/size] e X[size=50]B[/size]Y[size=50]B[/size]. Sto cercando la formula per calcolare le coordinate dei punti A' e B' che appartengono al segmento e che stanno a distanza d da A e B.
Ad esempio se ho A=(100,100) e B=(300,200) e d=50 mi aspetto di trovare (circa, ho fatto i conti graficamente) A'=(144,122) e B'=(255,177).
Ad esempio se ho A=(100,100) e B=(300,200) e d=50 mi aspetto di trovare (circa, ho fatto i conti graficamente) A'=(144,122) e B'=(255,177).
Risposte
Il modo più semplice è considerarlo un segmento orientato, ovvero un vettore da A a B.
Poi cambiare l'origine di riferimento in A, ottenendo quindi il vettore $C=(X_B-X_A, Y_B-Y_A)$
La norma euclidea del vettore C non è altro che l'applicazione di Pitagora, quindi il vettore ha lunghezza $sqrt((X_B-X_A)^2+(Y_B-Y_A)^2)=d$
Ora se moltiplichiamo questa lunghezza per un un numero reale $0<=alpha<=1$ otteniamo tutte le lunghezze intermedie $alphad$
Quindi per ottenere qualsiasi punto del segmento originario abbiamo la formula: $alphaC+A$ (nota che sommando A torniamo nel riferimento originale)
Nel tuo esempio il punto che dista 50 da A si ricava così:
$C=(200,100)$
$d=100sqrt(5)$
$alphad=alpha100sqrt(5)=50$ (il vincolo che hai imposto)
Da cui $alpha=sqrt(5)/10$
Pertanto il punto che cerchiamo è $alphaC+A=(100+20sqrt(5), 100+10sqrt(5))~ (144.72, 122.36)$
https://www.desmos.com/calculator/mxplxnuubu
P.S. Ovviamente il punto che dista 50 da B verso A è dato da $1-alpha$
Poi cambiare l'origine di riferimento in A, ottenendo quindi il vettore $C=(X_B-X_A, Y_B-Y_A)$
La norma euclidea del vettore C non è altro che l'applicazione di Pitagora, quindi il vettore ha lunghezza $sqrt((X_B-X_A)^2+(Y_B-Y_A)^2)=d$
Ora se moltiplichiamo questa lunghezza per un un numero reale $0<=alpha<=1$ otteniamo tutte le lunghezze intermedie $alphad$
Quindi per ottenere qualsiasi punto del segmento originario abbiamo la formula: $alphaC+A$ (nota che sommando A torniamo nel riferimento originale)
Nel tuo esempio il punto che dista 50 da A si ricava così:
$C=(200,100)$
$d=100sqrt(5)$
$alphad=alpha100sqrt(5)=50$ (il vincolo che hai imposto)
Da cui $alpha=sqrt(5)/10$
Pertanto il punto che cerchiamo è $alphaC+A=(100+20sqrt(5), 100+10sqrt(5))~ (144.72, 122.36)$
https://www.desmos.com/calculator/mxplxnuubu
P.S. Ovviamente il punto che dista 50 da B verso A è dato da $1-alpha$
Grazie