Originariamente inviato da Rising1
ok grazie della risposta.
ho incominciato a fare un po' di pratica con Qpainter, l'unica vera scomodità è che può disegnare su un widget solo se si trova all'interno di paintEvent...
Si può disegnare su un widget anche al di fuori di un paintEvent, ma è una pessima idea, visto che al ridisegno successivo sparirebbe tutto. Semmai nel tuo caso può aver senso disegnare in una bitmap in memoria al momento di cambiare la funzione e nei paintEvent limitarti a copiare il contenuto della bitmap sul widget.
Programmi come, che so, Derive per disegnare grafici del genere a partire dall'equazione "canonica" (tipo x^2/4+y^2/9=1 per le ellissi) implementano qualche particolare algoritmo?
In genere si usano metodi numerici; un metodo semplice è partire dal segno della funzione implicita su punti "campionati" sul piano per poi usare il metodo di Newton. Qui trovi un articoletto sulla questione - è vecchio e relativo al BASIC, ma mi pare che spieghi in maniera semplice e chiara l'algoritmo di base.
perchè io avevo pensato ad un modo: memorizzare per ogni token il suo esponente e ciclare sul vettore dove sono contenuti tutti i token finchè tutti gli esponenti non sono naturali (detto a parole povere). dunque riordinare affinchè sia in forma esplicita. ma qualora ci sono radici c'è un problema con i segni
y^2=x ----> y=(+ o -)sqrt(x)
Fai prima con metodi numerici, se vuoi rimaneggiare l'equazione in forma analitica inizi a servirti un pacchetto tipo CAS. Ma soprattutto, funzioni implicite anche relativamente semplici in genere non si riescono a girare in forma esplicita analitica: prova a girare in forma esplicita questa roba - non è un caso che anche "a mano" si risolvano usando metodi particolari.