Flying memes

Archive for the ‘Algoritmi’ Category

Isocrono e Google Map API

Monday, January 18th, 2010

Un isocrono non è nient’altro che una curva che unisce su di una mappai punti che distano uno stesso intervallo temporale (a piedi, o con un mezzo di trasporto) da un punto dato. In questo articolo, che funge da approfondimento della homepage del progetto, vorrei entrare un pò nel merito del piccolo script da utilizzare per calcolare un’approssimazione di isocrono usando le API di Google Maps.

(more…)

QBox: uno slideshow in WebGL

Tuesday, January 5th, 2010

Di ritorno da un bellissimo capodanno a Nantes ho deciso di spendere ancora qualche ora sul nuovo binding tra Javascript e OpenGL ES 2.0, formalmente noto col nome di WebGL; il risultato ha preso il nome di QBox, uno slideshow che recupera un certo numero di immagini mappandole su di un cubo rotante (le immagini possono essere anche più di quattro, c’è un meccanismo di sostituzione automatico).

(more…)

Ruby e Gosu: un multiplayer a schermo condiviso

Tuesday, December 8th, 2009

Tutto è nato da una bellissima presentazione che ho seguito ormai quasi un anno fa: si parla dell’Euruko 2009 in quel di Barcellona; lo speech in oggetto si intitolava ‘Fun with ruby (and without r***s). Program your own games with gosu‘ e trattava di una libreria per lo sviluppo di giochi scritta in Ruby chiamata Gosu.

(more…)

Matematica e carte da Briscola

Saturday, October 10th, 2009

Ho trascorso la scorsa settimana in Kenya, durante il soggiorno ho avuto modo di assistere ad un interessante gioco eseguito da Salvo, uno degli animatori del villaggio.

(more…)

L-System con Processing

Monday, September 28th, 2009

Utilizzando un L-System è possibile descrivere un pattern evolutivo semplicemente specificando alcune regole di sostituzione; un esempio di queste grammatiche potrebbe essere riassunto nei seguenti predicati:

(more…)

Alcune osservazioni sull’algoritmo di copertura di un segmento

Friday, July 31st, 2009

Sembra che oramai si sia instaurata una sorta di simbiosi tra questo blog e quello di Eineki; questo articolo infatti trae spunto dal suo ultimo golf programming contest e dai due algoritmi che ho analizzato come candidati alla soluzione.

Il problema da risolvere è abbastanza intuitivo; dato un set di segmenti identificati da coppie di interi [inizio, fine] bisogna fondere tra loro i segmenti che si sovrappongono.
(more…)

Face recognition con Ruby e OpenCV

Sunday, June 7th, 2009

Update – 18/06 : ieri sera ho tenuto una presentazione su questo tema al Ruby Social Club: ne approfitto quindi per aggiornare questo post con il link alle slide che ho utilizzato.

Negli ultimi mesi sono emerse le prime applicazioni che fanno uso di algoritmi di riconoscimento oggetti e, più specificatamente, volti. Cito, ad esempio, Picasa ed il filtro per visionare solo le facce in Google Images ma la lista di chi ha deciso di incorporare al suo interno questa funzionalità è decisamente più lunga.

Mi sono interessato subito al lato tecnico di questa nuova feature (grazie anche ad un ottimo speech ascoltato all’Erukuo 2009) imbattendomi in un particolare classificatore chiamato ‘cascade of boosted classifiers working with haar-like features’ che funziona nel seguente modo:

(more…)

L’interessante spunto del Golf Programming

Friday, May 1st, 2009

Stavo navigando tra i miei feed RSS quando ho trovato questo interessantissimo articolo, ovviamente non ho resistito all’idea di cercare di sviluppare una soluzione usando Ruby ed il minor numero di linee di codice possibile:

(more…)

Un nuovo tile engine per google map

Sunday, April 26th, 2009

Conoscevo Google Map e le sue fantastiche API ma solo di recente ho deciso di spulciare un pò più a fondo la sua documentazione e ho scoperto la notevole possibilità di modificare i tiles visualizzati da Google Map trasformando questo strumento da strettamente cartografico a ZUI (zoomable user interface).

Come funziona? Bisogna istanziare un nuovo oggetto della classe GTileLayer e specificarne all’interno una funzione che, ricevuti due parametri (un oggetto GPoint e un numero indicativo del livello di zoom) sappia ritornarne l’immagine appropriata.

Nel prossimo articolo andrò un pò più nel dettaglio, per il momento vi lascio a questa proof-of-concept che potrebbe trasformarsi, a breve, nella gallery ufficiale del sito.

Midpoint displacement algorithm

Sunday, March 22nd, 2009

Grazie all’appuntamento settimanale con i Ruby Quiz oggi sono venuto a conoscenza del Midpoint displacement algorithm, utilissimo per la generazione di una spezzata che simuli la silhouette di una catena montuosa.

Questo algoritmo basa la sua operatività essenzialmente su di un array contenente le altezze dei punti che compongono la spezzata. Tale array all’inizio presenterà solamente due valori (capo e coda dell’intero profilo che vogliamo creare), entrambi settati a 0.

(more…)