Ricavare Coordinate Polari Arco?
Ciao a tutti, mi trovo a dover risolvere un problema a livello di programmazione, poiche' non ho ben chiaro come applicare le formule matematiche. Sono un pò a digiuno di trigonometria, e al lavoro mi sono trovato a dover sviluppare questa funzioncina per un CAD.
Conoscendo le coordinate(X,Y) su un piano cartesiano 2d del centro dell'arco, l'angolo dell'arco, e le coordinate(X,Y) del punto di inizio dell'arco, come ricavo il punto di arrivo espresso in coordinate dell'arco? dovrei tradurlo in linguaggio di programmazione Vb6, o al massimo .Net, quindi poca teoria e molta praticità mi serve, magari con un esempi con dei valori reali.
Grazie mille
Conoscendo le coordinate(X,Y) su un piano cartesiano 2d del centro dell'arco, l'angolo dell'arco, e le coordinate(X,Y) del punto di inizio dell'arco, come ricavo il punto di arrivo espresso in coordinate dell'arco? dovrei tradurlo in linguaggio di programmazione Vb6, o al massimo .Net, quindi poca teoria e molta praticità mi serve, magari con un esempi con dei valori reali.
Grazie mille
Risposte
Beh, la relazione tra coordinate cartesiane e coordinate polari è la seguente:
$x=r*cosphi$ e $y=r*sinphi$ dove $r$ è il modulo del vettore (oppure se vuoi l'ipotenusa del triangolo rettangolo fatto dalle coordinate e cioè $r^2=x^2+y^2$) mentre $phi$ è l'angolo formato dal vettore con l'asse delle ascisse (altrimenti detto asse delle $x$).
Penso che ti serva questo ...
Cordialmente, Alex
$x=r*cosphi$ e $y=r*sinphi$ dove $r$ è il modulo del vettore (oppure se vuoi l'ipotenusa del triangolo rettangolo fatto dalle coordinate e cioè $r^2=x^2+y^2$) mentre $phi$ è l'angolo formato dal vettore con l'asse delle ascisse (altrimenti detto asse delle $x$).
Penso che ti serva questo ...
Cordialmente, Alex
Ciao
ci ho lavorato un po' su e penso di aver trovato un modo, ma non sono sicuro che sia il più rapido
in pratica calcolo le coordinate del punto di arrivo riferendole ad un nuovo sistema di riferimento con il centro nel centro della circonferenza
prendiamo l'immagine che segue per capirci meglio

ricaviamo il raggio del cerchio facendo
$r = sqrt( (x_2-x_1)^2 + (y_2-y_1)^2 )$
poi ricaviamo
l'angolo $phi$ facendo
$phi = arctg ( (y_2-y_1)/(x_2-x_1) )$
l'angolo di rotazione totale sarà quindi $phi + theta$
calcolo le coordinate di punto di arrivo relative al nuovo sistema di riferimento
$x_3 = r cos (phi + theta) $
$y_3 = r sin (phi + theta) $
e infine sommo le coordinate del centro
$x_f = x_3 + x_1$
$y_f = y_3 + y_1$
proviamo a tradurre tutto in vb.net
prova e dimmi se ti funziona
ci ho lavorato un po' su e penso di aver trovato un modo, ma non sono sicuro che sia il più rapido
in pratica calcolo le coordinate del punto di arrivo riferendole ad un nuovo sistema di riferimento con il centro nel centro della circonferenza
prendiamo l'immagine che segue per capirci meglio

ricaviamo il raggio del cerchio facendo
$r = sqrt( (x_2-x_1)^2 + (y_2-y_1)^2 )$
poi ricaviamo
l'angolo $phi$ facendo
$phi = arctg ( (y_2-y_1)/(x_2-x_1) )$
l'angolo di rotazione totale sarà quindi $phi + theta$
calcolo le coordinate di punto di arrivo relative al nuovo sistema di riferimento
$x_3 = r cos (phi + theta) $
$y_3 = r sin (phi + theta) $
e infine sommo le coordinate del centro
$x_f = x_3 + x_1$
$y_f = y_3 + y_1$
proviamo a tradurre tutto in vb.net
'assumiamo di avere le variabili x1, y1, x2, y2, theta che corrispondono ai valori nell'immagine indicata sopra dim r as single dim phi as single dim x3 as single dim y3 as single dim xf as single dim yf as single dim diffX as single dim diffY as single diffX = x2-x1 diffY = y2-y1 'recavo il raggio r = Math.Sqrt( diffX^2 + diffY^2 ) 'calcolo phi phi = Math.Atan2(diffY , diffX) 'ricavo le coordinate nel finali nel nuovo sistema di riferimento x3 = r * Math.cos (phi + theta) y3 = r * Math.sin (phi + theta) 'arriviamo alle coordinate finali xf = x3+x1 yf = y3+y1
prova e dimmi se ti funziona