Un classico di questo blog ovvero disegnare l'insieme di Mandelbrot con varie librerie grafiche
Per questo esempio e' stata usata come base il post "Disegnare in QT" con la differenza che in questo caso non vengono disegnate linee bensi' punti
il trucco per disegnare punti risiede nella linea che e' stata evindeziata in colore giallo ovvero utilizzando una primitiva di una ellisse di raggio molto piccolo
dialog.cpp
---------------------------------------------------
#include "dialog.h"
#include "ui_dialog.h"
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
float re_min = -2.0;
float im_min = -1.2;
float re_max = 1.0;
float im_max = 1.2;
int iterazioni = 255;
int SCREEN_WIDTH = 640;
int SCREEN_HEIGHT = 480;
float a,b;
float x,y,x_new,y_new;
int k,j,i,test;
float re_factor = (re_max-re_min);
float im_factor = (im_max-im_min);
ui->setupUi(this);
scene = new QGraphicsScene(this);
ui->graphicsView->setScene(scene);
QBrush brush(Qt::black);
QPen penna(Qt::black);
penna.setWidth(1);
for (i=0;i<SCREEN_HEIGHT;i++)
{
for (j=0;j<SCREEN_WIDTH;j++)
{
a = re_min+(j*re_factor/SCREEN_WIDTH);
b = im_min+(i*im_factor/SCREEN_HEIGHT);
x = 0;
y = 0;
test = 0;
for (k=0;k<iterazioni;k++)
{
x_new = (x*x)-(y*y)+a;
y_new = (2*x*y)+b;
if (((x_new*x_new)+(y_new*y_new))>4)
{
test = k;
if (k%2 == 0)
scene->addEllipse(j,i,0.1,0.1,penna,brush);
break;
}
x = x_new;
y = y_new;
}
}
}
//linea = scene->addLine(100,100,100,100,penna);
}
Dialog::~Dialog()
{
delete ui;
}
martedì 22 gennaio 2013
Disegnare in QT
In questo post verra' mostrato un esempio di come disegnare in una QGraphicsScene
Per prima cosa si crea un nuovo progetto definendo un QDialog
A questo punto dall'editor visuale si aggiunge al form una
Si modificano i file dialog.h e dialog.cpp come evidenziato nel listato sotto riportato
ed ecco il risultato (non e' un granche')
dialog.h
----------------------------------
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
#include <QtCore>
#include <QtGui>
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(QWidget *parent = 0);
~Dialog();
private:
Ui::Dialog *ui;
QGraphicsScene *scene;
QGraphicsLineItem *linea;
};
#endif // DIALOG_H
dialog.cpp
----------------------------------
#include "dialog.h"
#include "ui_dialog.h"
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
scene = new QGraphicsScene(this);
ui->graphicsView->setScene(scene);
QBrush brush(Qt::black);
QPen penna(Qt::black);
penna.setWidth(6);
linea = scene->addLine(100,100,100,100,penna);
}
Dialog::~Dialog()
{
delete ui;
}
si puo' vedere l'esempio di Mandelbrot in Qt per vedere come disegnare i singoli pixel
Per prima cosa si crea un nuovo progetto definendo un QDialog
A questo punto dall'editor visuale si aggiunge al form una
Si modificano i file dialog.h e dialog.cpp come evidenziato nel listato sotto riportato
ed ecco il risultato (non e' un granche')
dialog.h
----------------------------------
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
#include <QtCore>
#include <QtGui>
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(QWidget *parent = 0);
~Dialog();
private:
Ui::Dialog *ui;
QGraphicsScene *scene;
QGraphicsLineItem *linea;
};
#endif // DIALOG_H
----------------------------------
dialog.cpp
----------------------------------
#include "dialog.h"
#include "ui_dialog.h"
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
scene = new QGraphicsScene(this);
ui->graphicsView->setScene(scene);
QBrush brush(Qt::black);
QPen penna(Qt::black);
penna.setWidth(6);
linea = scene->addLine(100,100,100,100,penna);
}
Dialog::~Dialog()
{
delete ui;
}
----------------------------------
da tenere presente che non esiste una primitiva per il disegno di un puntosi puo' vedere l'esempio di Mandelbrot in Qt per vedere come disegnare i singoli pixel
Cancellare account da Android
Mi sono trovato a dover configurare un telefono Android ad un amico e per completare l'aggiornamento ho dovuto usare il mio account per accedere a Google Play Store
Contento di aver finito ho riconsegnato il telefono ma prima dovevo rimuovere le informazioni relative al mio account e parzialmente alcune parti della rubrica e delle foto che il telefono aveva sincronizzato dato che mi ero scordato di disabilitare la sincronizzazione automatica
E qui e' arrivato il problema
Per poter cancellare un account (almeno in Android 2.3.6 e penso anche precedenti) si deve prima andare nel menu Settings/Privacy e cancellare totalmente i dati (e fin qui va bene) ma anche tutte le applicazioni ed impostazioni riportando di fatto il telefono alla condizione in cui e' uscito dalla fabbrica
In soldoni il lavoro di configurazione e' stato inutile ed ho dovuto farmi dare account e password del mio amico per ripartire di nuovo con tutto il lavoro
Contento di aver finito ho riconsegnato il telefono ma prima dovevo rimuovere le informazioni relative al mio account e parzialmente alcune parti della rubrica e delle foto che il telefono aveva sincronizzato dato che mi ero scordato di disabilitare la sincronizzazione automatica
E qui e' arrivato il problema
Per poter cancellare un account (almeno in Android 2.3.6 e penso anche precedenti) si deve prima andare nel menu Settings/Privacy e cancellare totalmente i dati (e fin qui va bene) ma anche tutte le applicazioni ed impostazioni riportando di fatto il telefono alla condizione in cui e' uscito dalla fabbrica
In soldoni il lavoro di configurazione e' stato inutile ed ho dovuto farmi dare account e password del mio amico per ripartire di nuovo con tutto il lavoro
lunedì 21 gennaio 2013
All'interno di un Ipod 5th Generazione (2)
Per un caso curioso mi e' arrivato un altro Ipod 5° generazione rotto.
A quanto pare l'Ipod Video era piuttosto delicato
L'esemplare mi e' stato consegnato senza scheda logica in quanto, al momento dell'apertura, risultava che erano distaccati un paio di componenti (letteralmente esplosi) ...il problema descritto sembra essere quello riportato all'interno di questo post e sembra che fosse piuttosto comune per questo tipo di dispositivo
Avendo tutti i componenti gia' staccati e' piu' facile vedere l'interno
A quanto pare l'Ipod Video era piuttosto delicato
L'esemplare mi e' stato consegnato senza scheda logica in quanto, al momento dell'apertura, risultava che erano distaccati un paio di componenti (letteralmente esplosi) ...il problema descritto sembra essere quello riportato all'interno di questo post e sembra che fosse piuttosto comune per questo tipo di dispositivo
Avendo tutti i componenti gia' staccati e' piu' facile vedere l'interno
Disco da 1.8 pollici con batteria |
Samsung GT-S7500 Galaxy Ace Plus vs GT-S5570i Galaxy Next Plus
Un amico mi ha passato un Samsung GT-S7500 per configurarlo dato che non e' ancora pratico con Android. Questa e' stata una buona occasione per un confronto diretto con il mio GT-S5570i che costituisce il suo fratello minore e meno costoso
Il telefono viene fornito con Android 2.3.6 ed ha uno schermo da 3.6 pollici.
In generale il terminale e' piu' veloce (il processore del 7500 viaggia a 1 GHz mentre il 5570i a circa 870 MHz) e lo schermo e' decisamente piu' spazioso (la risoluzione e' di 320x480 da 3.6 pollici per il 7500 e di 240x320 a 3.1 pollici per il 5570i)
Anche la videocamera e' migliore per il 7500 (5M) contro i 3M del 5570i ma in conclusione non vale molto la pena di spendere 50 e passa euro in piu' per un le modeste differenze tra i due
PS: sul 7500 i tasti di Back e Menu non sono fisici ma legati al touch screen e non sono sempre comodi
Il telefono viene fornito con Android 2.3.6 ed ha uno schermo da 3.6 pollici.
In generale il terminale e' piu' veloce (il processore del 7500 viaggia a 1 GHz mentre il 5570i a circa 870 MHz) e lo schermo e' decisamente piu' spazioso (la risoluzione e' di 320x480 da 3.6 pollici per il 7500 e di 240x320 a 3.1 pollici per il 5570i)
Anche la videocamera e' migliore per il 7500 (5M) contro i 3M del 5570i ma in conclusione non vale molto la pena di spendere 50 e passa euro in piu' per un le modeste differenze tra i due
PS: sul 7500 i tasti di Back e Menu non sono fisici ma legati al touch screen e non sono sempre comodi
Penna USB rotta
Ultimamente mi sono capitati un paio di casi di tentativo di recupero dati da chiavetta USB corrotte, dove per corrotte non si deve intendere un banale problema al filesystem ma un danneggiamento a livello hardware
Nel caso del chiavetta in foto la situazione era peggiore in quanto la stessa e' stata schiacciata (probabilmente da un'auto) ed e' stata esposta a due giorni di pioggia prima di essere ritrovata (notare che si tratta di una 512 Mb quindi un hardware piuttosto vetusto)
In entrambi i casi in qualche modo l'elettronica era viva
Leggendo il file di log di Linux dopo aver inserito la chiavetta si vede che la stessa viene riconosciuta
------------------------------------------
Jan 17 05:10:50 debian kernel: [ 358.044339] usb 1-4: New USB device found, idVendor=13fe, idProduct=1a00
Jan 17 05:10:50 debian kernel: [ 358.044351] usb 1-4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Jan 17 05:10:50 debian kernel: [ 358.044362] usb 1-4: Product: USB DISK 28X
Jan 17 05:10:50 debian kernel: [ 358.044370] usb 1-4: Manufacturer:
Jan 17 05:10:50 debian kernel: [ 358.046446] scsi5 : usb-storage 1-4:1.0
Jan 17 05:10:50 debian mtp-probe: checking bus 1, device 6: "/sys/devices/pci0000:00/0000:00:1d.7/usb1/1-4"
Jan 17 05:10:50 debian mtp-probe: bus: 1, device: 6 was not an MTP device
Jan 17 05:10:51 debian kernel: [ 359.044987] scsi 5:0:0:0: Direct-Access USB DISK 28X 1.00 PQ: 0 ANSI: 0 CCS
Jan 17 05:10:51 debian kernel: [ 359.049623] sd 5:0:0:0: Attached scsi generic sg1 type 0
Jan 17 05:10:51 debian kernel: [ 359.051688] sd 5:0:0:0: [sdc] Attached SCSI removable disk
------------------------------------------
cio' che non riesco a capire bene e' come mai l'elettronica risponde ma non si riesce in nessun modo a montare l'unita' a disco. Mi viene il sospetto che il circuito di controllo della porta USB sia integro mentre il circuito di controllo delle memorie sia difettoso
giovedì 17 gennaio 2013
Epson SX130 in Debian
Mia moglie ha comprato la Epson Stylus SX130...io sono francamente contrario alle stampanti a getto di inchiostro per la scarsa affidabilita' dei toner...in ogni caso e' stata una occasione per cercare di installare sia la stampante sia lo scanner integrato in una Debian Testing
La stampante non viene riconosciuta in modo automatico da CUPS per cui si devono scaricare dal sito Epson i driver che consistono in un file .deb per la stampante e due file .deb per lo scanner
piu' nello specifico i file sono
stampante
epson-inkjet-printer-201101w_1.0.0-1lsb3.2_i386.deb
scanner
iscan_2.29.1-5~usb0.1.ltdl7_i386.deb
iscan-data_1.13.0-1_all.deb
Attenzione: sul sito di Epson vi sono due file .deb che differiscono per ltdl (in un caso e' a numero 3 mentre nell'altro e' il 7.. quello giusto per debian testing e' il numero 7 perche' la dipende delle librerie viene soddisfatta soltanto per quest versione)
Una volta caricati i driver il lavoro non e' finito.
Per configurare la stampante si deve aprire il browser e puntare all'indirizzo http://localhost:631 (amministrazione di CUPS) in cui ci si logga con l'utente root. Dall'interfaccia Web si aggiunge quindi la stampante Epson che da ora in poi sara' disponibile alla stampa per le varie applicazioni (si possono effettuare anche le correzioni sul formato di stampa predefinito Letter modificandolo in A4)
Per lo scanner invece non ci sono particolari attenzioni dato che e' utilizzabile immediatamente sia da XSane che da Image Scan
La stampante non viene riconosciuta in modo automatico da CUPS per cui si devono scaricare dal sito Epson i driver che consistono in un file .deb per la stampante e due file .deb per lo scanner
piu' nello specifico i file sono
stampante
epson-inkjet-printer-201101w_1.0.0-1lsb3.2_i386.deb
scanner
iscan_2.29.1-5~usb0.1.ltdl7_i386.deb
iscan-data_1.13.0-1_all.deb
Attenzione: sul sito di Epson vi sono due file .deb che differiscono per ltdl (in un caso e' a numero 3 mentre nell'altro e' il 7.. quello giusto per debian testing e' il numero 7 perche' la dipende delle librerie viene soddisfatta soltanto per quest versione)
Una volta caricati i driver il lavoro non e' finito.
Per configurare la stampante si deve aprire il browser e puntare all'indirizzo http://localhost:631 (amministrazione di CUPS) in cui ci si logga con l'utente root. Dall'interfaccia Web si aggiunge quindi la stampante Epson che da ora in poi sara' disponibile alla stampa per le varie applicazioni (si possono effettuare anche le correzioni sul formato di stampa predefinito Letter modificandolo in A4)
Prova di stampa |
Per lo scanner invece non ci sono particolari attenzioni dato che e' utilizzabile immediatamente sia da XSane che da Image Scan
Iscriviti a:
Post (Atom)
Cheshire Cat Ai
Cheshire Ai e' un progetto italiano che sta crescendo adesso Per provarlo si clona il progetto git clone https://github.com/cheshire-c...
-
In questo post viene indicato come creare uno scatterplot dinamico basato da dati ripresi da un file csv (nel dettaglio il file csv e' c...
-
La scheda ESP32-2432S028R monta un Esp Dev Module con uno schermo TFT a driver ILI9341 di 320x240 pixels 16 bit colore.Il sito di riferiment...
-
Questo post e' a seguito di quanto gia' visto nella precedente prova Lo scopo e' sempre il solito: creare un sistema che permet...