Lasciami provare a darti qualcosa tra la risposta di The Light Spark e la risposta di Elliot, perché da quello che ho letto, stai davvero cercando un algoritmo da seguire e non solo la matematica lanciata su di te.
Dichiarazione del problema: dato che hai una posizione A (50, 50)e un'intestazione (dal momento che non ne hai fornito uno, lo affermerò come y = 2 * x + 25), trova dove B (80, 90)è relativo Ae l'intestazione.
Quello che vuoi fare è in realtà abbastanza semplice. 1) Trasferisciti Aall'origine del tuo sistema. Questo significa semplicemente che i Avalori da locale a valori saranno i valori della posizione globale meno i valori della posizione globale di A. Adiventa (0, 0)e Bdiventa (30, 40).
1.1) Anche l'intestazione deve essere spostata. Questo è in realtà molto facile da fare, perché l'intercetta y in Atermini locali è sempre 0 e la pendenza non cambierà, quindi abbiamo y = 2 * xcome rotta.
2) Ora dobbiamo allineare la prua precedente all'asse X. Quindi, come possiamo farlo? Il modo più semplice, concettualmente per farlo, è convertire da coordinate x, y in un sistema di coordinate polari. Il sistema di coordinate polari comporta Rla distanza da una posizione e phiun angolo di rotazione dall'asse x. Rè definito come sqrt(x^2 + y^2)ed phiè definito come atan(y / x). La maggior parte dei linguaggi informatici oggigiorno va avanti e definisce una atan2(y, x)funzione che fa esattamente la stessa cosa atan(y/x)ma lo fa in modo tale che l'output tenda da -180 gradi a 180 gradi anziché da 0 gradi a 360 gradi, ma entrambi funzionano.
Bcosì diventa R = sqrt(30^2 + 40^2) = sqrt(2500) = 50, e phi = atan2(40, 30) = 53.13in gradi.
Allo stesso modo, l'intestazione ora cambia. Questo è un po 'complicato da spiegare, ma perché l'intestazione, per definizione, passa sempre attraverso la nostra origine A, non dobbiamo preoccuparci del Rcomponente. I titoli saranno sempre nella forma di phi = Cdove Cè una costante. In questo caso, phi = atan(2 * x / x) = atan(2) = 63.435gradi.
Ora, possiamo ruotare il sistema per spostare la direzione sull'asse X del sistema locale A. Proprio come quando ci siamo trasferiti Aall'origine del sistema, tutto ciò che dobbiamo fare è sottrarre phil'intestazione da tutti i phivalori nel sistema. Quindi il phiof Bdiventa 53.13 - 63.435 = -10.305gradi.
Infine, dobbiamo riconvertire le coordinate polari in coordinate x, y. Le formule per fare quella trasformazione sono X = R * cos(phi)e Y = R * sin(phi). Per Bconseguenza, si ottiene X = 50 * cos(-10.305) = 49.2e Y = 50 * sin(-10.305) = 8.9, così Bin locali-to Acoordinate è vicino a (49,9).
Spero che questo aiuti, ed è abbastanza leggero in matematica da seguire.