Ricavare Coordinate Polari Arco?

Pasolino
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

Risposte
axpgn
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

Summerwind78
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


'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

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.