|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Sep 2001
Città: Roma
Messaggi: 2141
|
[c++] come creare un grafico di una funzione
avete una funzione y=f(t) nota.
Ogni t=1s valutate la funzione e ogni coppia (t,y) volete graficarla su un grafico con ascissa=t, ordinata=y. che istruzioni devo scrivere in c++ perchè a video appaia il grafico? e una volta creato il grafico se volessi farne apparire anche un secondo distinto in cui graficare un altra funzione z=f(w)?
__________________
..strisc...strisc...oooooOOoooO http://digilander.iol.it/pentiumII Navi da battaglia giapponesi classe Yamato WWII |
|
|
|
|
|
#2 | |
|
Member
Iscritto dal: Feb 2006
Messaggi: 30
|
Quote:
|
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Sep 2001
Città: Roma
Messaggi: 2141
|
1)uso visual studio .net e lo uso solo per visual c++
2)non ho la più pallida idea di che cambia da una all'altra. sicuramente preferirei usare una libreria che sia dentro visual studio per non impazzire a compilare. mi serve una cosa anche semplice, giusto per fare un grafico.
__________________
..strisc...strisc...oooooOOoooO http://digilander.iol.it/pentiumII Navi da battaglia giapponesi classe Yamato WWII |
|
|
|
|
|
#4 | |
|
Member
Iscritto dal: Feb 2006
Messaggi: 30
|
Quote:
(0, 0) in ALTO a sinistra (larghezza, altezza) in BASSO a destra In pratica l'asse y è ribaltato: ovviamente ti servirà fare una qualche traslazione degli assi... Per cominciare ti consiglierei di sceglierti un sistema di riferimento tuo (che ne so, l'origine al centro, l'asse x che va da -5 a 5 e l'asse y che va da -3 a 3... o come preferisci) e di capire come trasformare le coordinate cartesiane del sistema scelto in quelle corrispondenti della PictureBox. C'è solo da divertirsi un po'... IntelliSense è una vera goduria... |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Sep 2001
Città: Roma
Messaggi: 2141
|
io ho visual studio .net 7.0.9254, credo del 2001.
considerando che sono iper-ignorante di visual mi serevirebe un listato "già fatto" o istruzioni precisissime su cosa fare e come compilare, dando per scontato di avere un file .cpp di c++ in cui istante per istante si calcola la funzione.
__________________
..strisc...strisc...oooooOOoooO http://digilander.iol.it/pentiumII Navi da battaglia giapponesi classe Yamato WWII |
|
|
|
|
|
#6 | |
|
Member
Iscritto dal: Feb 2006
Messaggi: 30
|
Quote:
Quindi ti conviene andare su MFC, dato che se scegli di creare un progetto Win32 devi praticamente scrivere tutto il codice, compreso quello per creare finestra, riquadro... Comunque penso che il principio sia lo stesso: devi creare (con il mitiko drag&drop dalla casella degli strumenti) un riquadro su cui disegnare, e poi capire come si fa a disegnarci sopra: dovrebbero esistere funzioni come MoveTo (che sposta il cursore su un pixel) e LineTo (che traccia una linea dal punto corrente a un altro. Tutte queste funzioni sono metodi di un oggetto, noto come CDC, che rappresenta l'oggetto su cui vuoi disegnare. Una volta ottenuto il CDC del riquadro (se il riquadro si chiama R, prova a scrivere R-> e a vedere se IntelliSense ti suggerisce un DC() o GetDC() o simile), insomma, puoi disegnarci sopra. Magari in rete si trova qualche esempio o tutorial su MFC che potrebbe fare al caso tuo... |
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Sep 2001
Città: Roma
Messaggi: 2141
|
<<dato che se scegli di creare un progetto Win32 devi praticamente scrivere tutto il codice, compreso quello per creare finestra, riquadro... >>
è questo il metodo che vorrei usare. cioè restare dentro la programmazione c++ (file .cpp che poi compilo e trasformo in .exe. questo almeno so farlo:basta cliccare "build" hehehe) e scrivere codice da li dentro. potete incollarmi qui il codice, gli include da inserire nel mio listato per graficare (ad esempio) y=sin(x) con x che va da 0 a 6.28? purtroppo non so nulladi visual se non scribacchiare dentro un listato c++ per fare semplici programmi. aiutatemi, per favore....
__________________
..strisc...strisc...oooooOOoooO http://digilander.iol.it/pentiumII Navi da battaglia giapponesi classe Yamato WWII |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Aug 2005
Messaggi: 2755
|
purtroppo non so aiutarti, ma prova a controllare sulle msdn o sul sito di ms, in genere ci sono degli esempi
__________________
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Scusa, ma hai mai scritto programmi con interfaccia grafica?
Dalle tue domande sembrerebbe di no. Secondo me le soluzioni migliori sono librerie QT o wxWidgets, (la classe per il plotting delle QT è però decisamente migliore), le MFC per me sono sempre state arabo. Ma devi imparare un bel pò di cose su come funzionano le interfacce grafiche e soprattutto fare una scelta. |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Sep 2001
Città: Roma
Messaggi: 2141
|
èquesto il problema:
non so nulla sulle interfacce grafiche e non mi serve saperne il funzionamento. devo solo usarla per fare UNA cosa (più volte nel programma ma semprw quella, cioè graficare pl'andamento di più funzioni, una in una finestra diversa. Ad esempio spazio percorso, velocità, accelerazione: 3 grafici che vengono "creati" punto a punto a mano a mano che il programma cicla nel tempo (=ascissa). quindi mi servono delle istruzioni da mettere nude e crdude da mettere nel listato c++, da usare così come sono, alla cieca, anche senza capire perchè sono scritte così. immaginate di avere 2 funzioni. a=funzione1(t) b=funzione2(t) t varia nel tempo con un ciclo for. come faccio a diseganre: finestra1--> ascissa t, ordinata a finestra 2-->ascissa t, ordinata b tutto li. potreste incollare qui il codice c++ da inserire nel listato e l'elenco degli eventuali "include" o altro che devo infilare in testa al programma? grazie
__________________
..strisc...strisc...oooooOOoooO http://digilander.iol.it/pentiumII Navi da battaglia giapponesi classe Yamato WWII |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Sep 2001
Città: Roma
Messaggi: 2141
|
logico che finestra1 e finestra2 devono essere separate.
ah! io uso visual studio .net prima versione (credo 2001). Sarebbe meglio usare, se possibile, libreire grafiche di "default". Insomma senza installare altra roba. devo solo inserire il codice, compilare cliccando su "build" e fine. oppure divento scemo.
__________________
..strisc...strisc...oooooOOoooO http://digilander.iol.it/pentiumII Navi da battaglia giapponesi classe Yamato WWII |
|
|
|
|
|
#12 |
|
Junior Member
Iscritto dal: Aug 2004
Messaggi: 23
|
prova ad uare la libreria CPlot, la puoi trovare su sf.net
|
|
|
|
|
|
#13 | ||
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
O meglio vuoi che qualcuno lo faccia al posto tuo senza che tu muova un dito. Quote:
|
||
|
|
|
|
|
#14 | ||
|
Senior Member
Iscritto dal: Sep 2001
Città: Roma
Messaggi: 2141
|
Quote:
Quote:
non potete scrievre qualche riga di codice che stampi il grafico di una funzione a punti?
__________________
..strisc...strisc...oooooOOoooO http://digilander.iol.it/pentiumII Navi da battaglia giapponesi classe Yamato WWII |
||
|
|
|
|
|
#15 | ||
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Poi devi creare un panel, poi inserirci l'area per disegnare, poi devi impostare il brush per disegnare ed infine traslare le coordinate dei punti in modo conforme a quello della finestra di disegno, magari ricordandoti di impostare uno zoom adeguato... Quote:
Altrimenti devi arrenderti e disegnare quello che ti serve con le MFC. In ogni caso non sono proprio 2 righe di codice, ma molte di più. |
||
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Sep 2001
Città: Roma
Messaggi: 2141
|
<<In ogni caso non sono proprio 2 righe di codice, ma molte di più.>>
nessuna anima pia mi aiuta e me le scrive?
__________________
..strisc...strisc...oooooOOoooO http://digilander.iol.it/pentiumII Navi da battaglia giapponesi classe Yamato WWII |
|
|
|
|
|
#17 | |
|
Member
Iscritto dal: Feb 2006
Messaggi: 30
|
Quote:
Ripeto: prova a usare MFC. Avventurarsi in Win32 non è per niente facile... e poi richiede moooooolto tempo. Per iniziare, intanto creati un nuovo progetto MFC dal Visual Studio e aggiungi alla finestra un riquadro per disegnare: richiede molto meno codice (e tempo) rispetto a Win32, perchè a quel punto l'unico codice che serve è quello per calcolare i punti e disegnarli. Per darti un'idea, in un'applicazione Win32 nativa (che penso sia quel che vuoi usare tu... ma chi te lo fa fare Se poi hai la possibilità di creare un progetto Windows Forms .NET è molto meglio... il "nuovo C++" usato è abbastanza simile al VB. Ma poi... la caratteristica migliore del Visual Studio è proprio l'essere... visuale! |
|
|
|
|
|
|
#18 |
|
Member
Iscritto dal: Jul 2005
Città: Canelli
Messaggi: 158
|
IMHO
una alternativa semplice e veloce potrebbe essere quella di usare un programma esterno tipo GNUPlot che è in grado di fare un grafico utilizzando dati salvati su di un file: Calcoli la tua tabella dati Salvi su file usando la funzione system("Gnuplot param Filedati") richiami GNUPlot esattamente come se lo facessi da riga di comando (non so quali sono i param adatti, GNUPlot ne ha tantissimi) eventualmente ripeti il tutto in un loop oppure, alternativa ancora più semplice e veloce, fai tutto su excel o su calc di Openoffice senza impelagarti nel C++ . |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:00.



















