Autore Topic: [c] stupido problema di algebra lineare  (Letto 1517 volte)

Offline raistlin77it

  • Tech Guru
  • *****
  • Post: 221
  • Karma: +2/-0
    • Mostra profilo
[c] stupido problema di algebra lineare
« il: 26 Agosto 2011, 17:06:32 »
Purtroppo ho un problemino stupidissimo di algebra lineare, e mi vergogno quasi ad esporvelo.
Però non riesco a risolverlo (sarà il caldo :P )

allora io ho una funzione y=f(x) che è il coseno di x ovvero
x+=1;
y=cos(DegToRad(x));
e plotto il mio bel coseno a schermo.

ora voglio invece plottare il coseno  ruotato di 45 gradi rispetto all'origine.
procedo quindi a trovare la retta a 45 gradi che è
x+=sin(atan2(400,400));
y+=cos(atan2(400,400));

incrementando i valori di x ed y disegno la retta.

E qui viene il bello se io ad y aggiungo l'equazione di prima ovvero y+=cos(atan2(400,400))+cos(DegToRad(x)); disegno un coseno ruotato, ma mi rimane "schiacciato" , non ho le belle "gobbe" del coseno in "piano"

E' di sicuro una stupidata, ma  non riesco a capire il perchè

« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Re: [c] stupido problema di algebra lineare
« Risposta #1 il: 26 Agosto 2011, 17:18:41 »
non funziona così :-)

Una funzione del tipo y = f(x) ha solo 1 parametro variabile ed uno libero, tu invece cerchi un "grafico" g € { (x,y) / x,y € R }, che è un insieme di punti del piano, quindi ti servono 2 parametri variabili.

Infatti, se ruotassi il tuo coseno di 90 gradi, avresti che per alcuni punti della X (da -1 a +1) corrispondono infiniti valori di Y, il che contraddice la stessa definizione di "funzione".

Ci sono tanti approcci che puoi usare, ma non conoscendo il tuo livello di preparazione in matematica, procedo per gradi e intanto te li elenco. Poi vediamo se e come implementarli:

- Calcola la matrice di trasformazione affine per la rototraslazione ricercata, calcola ogni coppia (x,y) e moltiplica questo vettore per la matrice, ottenendo (x',y') che stamperai a schermo

- Calcola la funzione y di x, converti in coordinate polari (r, theta), somma 45° al tuo angolo theta e riconverti in coordinate cartesiane, ottenendo (x',y')

In realtà entrambi i metodi matematicamente si equivalgono, ma la differenza sta nell'efficienza di calcolo. Il secondo metodo è più facile da programmare, mentre il primo è più complesso ma efficiente (viene usato in tutti i motori grafici).
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline raistlin77it

  • Tech Guru
  • *****
  • Post: 221
  • Karma: +2/-0
    • Mostra profilo
Re: [c] stupido problema di algebra lineare
« Risposta #2 il: 26 Agosto 2011, 17:35:56 »
visto che io e le matrici non siamo molto amici, andrò di coordinate polari :D
me le stò ripassando http://it.wikipedia.org/wiki/Sistema_di ... ate_polari, perchè sono giusto 15 anni che ho finito le superiori :D :D

Edit: ripensandoci bene è come ruotare un punto su di un piano, solo che qua si ruotano tutti i punti dell'equazione :D

ri-edit : sistemato grazie :D :D

« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Tags: