<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/1.5.2" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
>

<channel>
	<title>Gian Carlo Mingati</title>
	<link>http://www.gcmingati.net/wordpress</link>
	<description>---</description>
	<pubDate>Wed, 17 Mar 2010 13:33:09 +0000</pubDate>
	<generator>http://wordpress.org/?v=1.5.2</generator>
	<language>en</language>

		<item>
		<title>Automata</title>
		<link>http://www.gcmingati.net/wordpress/2010/03/12/automata/</link>
		<comments>http://www.gcmingati.net/wordpress/2010/03/12/automata/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 18:49:44 +0000</pubDate>
		<dc:creator>Gian Carlo</dc:creator>
		
	<category>Processing</category>
		<guid>http://www.gcmingati.net/wordpress/2010/03/12/automata/</guid>
		<description><![CDATA[	
Image credits:  Conus Textile. Wikipedia.Il pattern del guscio é generato con meccanismi che ricordano quelli degli automi cellulari, cioé ogni cellula secerne pigmento a seconda dello stato di attività delle cellule adiacenti.
	Ho indagato sull&#8217; offscreen buffer di Processing, ed in particolare su come lo si può usare per ottenere e manipolare immagini generate a [...]]]></description>
			<content:encoded><![CDATA[	<p><img src='http://www.gcmingati.net/wordpress/wp-content/uploads/conesnail.jpg' alt='' /><br />
<span style="font: normal 9px Tahoma, Arial, Sans-Serif; padding: 6px 0 0 0; color: #565656; display: block;">Image credits:  Conus Textile. Wikipedia.<br />Il pattern del guscio é generato con meccanismi che ricordano quelli degli automi cellulari, cioé ogni cellula secerne pigmento a seconda dello stato di attività delle cellule adiacenti.</span></p>
	<p>Ho indagato sull&#8217; offscreen buffer di Processing, ed in particolare su come lo si può usare per ottenere e manipolare immagini generate a runtime. Con l&#8217;oggetto <a href="http://www.processing.org/reference/PGraphics.html">PGraphics</a> e i metodi beginDraw() ed endDraw(), è possibile disegnare (anche in 3D) fuori dallo schermo, e poi usare l&#8217;immagine ottenuta per eseguire ulteriori calcoli e/o applicare effetti e usarla come fosse una qualsiasi immagine da visualizzare a schermo; in realtà pGraphics si usa molto spesso per l&#8217;output ad alta risoluzione da Processing (per es. immagini TIFF da 3000 px di larghezza), ma in questo caso, ho utilizzato questi buffer (nel mio caso sono 6, 251 px di lato) per disegnare una serie di patterns per mezzo di un <a href="http://en.wikipedia.org/wiki/Cellular_automaton">automa unidimensionale</a>. Gli automi sono molto interessanti perchè a dispetto della loro apparente semplicità producono risultati inaspettati e sorprendenti; frattali, automi, L-systems e in genere tutte le funzioni ricorsive governate da &#8216;regole&#8217; servono a comprendere e spiegare i modelli morfologici di una grande varietà di organismi del mondo che ci circonda; in computer graphics quindi, questa serie di algoritmi e regole rappresentano l&#8217;unica via per poter simulare efficacemente organismi complessi, come le piante.</p>
	<p><img src='http://www.gcmingati.net/wordpress/wp-content/uploads/cautomata.jpg' alt='' /><br />
<span style="font: normal 9px Tahoma, Arial, Sans-Serif; padding: 6px 0 0 0; color: #565656; display: block;">Elementary Cellular Automaton<br /><a href="http://www.openprocessing.org/visuals/?visualID=8207">http://www.openprocessing.org/visuals/?visualID=8207</a> - GC Mingati</span></p>
	<p>Un Cellular Cutomata (<a href="http://www.stephenwolfram.com/publications/articles/ca/82-cellular/index.html">CA</a>) di tipo unidimensionale é un sistema composto da griglie di celle e regole che definiscono le modalità di comportamento di ogni cella, per ogni nuova generazione, a seconda dello stato (colore) dei suoi vicini. In altre parole, supponendo di avere una riga di 3 pixel posti orizzontalmente ed il pixel di mezzo bianco con gli altre due vicini neri, possiamo stabilire, di generazione in generazione quale sarà il colore risultante da questa condizione di vicinato. Avremo quindi una nuova condizione, a cui applicare una nuova regola. E così via. Ci sono 8 possibili configurazioni di vicinato da cui scaturiscono 256 possibili regole. </p>
	<p>Nella <a href="http://www.openprocessing.org/visuals/?visualID=8207">Applet</a> ho usato l&#8217;oggetto PGraphics per disegnare un automa su ogni faccia. Una volta completato il render delle facce, potete premere &#8216;r&#8217; da tastiera per disegnare nuovi pattern.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.gcmingati.net/wordpress/2010/03/12/automata/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>noise</title>
		<link>http://www.gcmingati.net/wordpress/2010/03/09/noise/</link>
		<comments>http://www.gcmingati.net/wordpress/2010/03/09/noise/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 09:42:04 +0000</pubDate>
		<dc:creator>Gian Carlo</dc:creator>
		
	<category>Processing</category>
		<guid>http://www.gcmingati.net/wordpress/2010/03/09/noise/</guid>
		<description><![CDATA[	


Image credits: Perlin noise visualization.http://www.openprocessing.org/visuals/?visualID=8172 - GC Mingati
	La funzione noise() é comoda per generare una serie di numeri in successione con casualità controllata; la tecnica inventata da Ken Perlin negli anni &#8216;80 é stata spesso usata in computer graphics per imitare l&#8217; apparente randomicità delle textures in natura o per riprodurre terreni, forme ecc. In [...]]]></description>
			<content:encoded><![CDATA[	<p><img src='http://www.gcmingati.net/wordpress/wp-content/uploads/screen0499.jpg' alt='' /><br />
<img src='http://www.gcmingati.net/wordpress/wp-content/uploads/screen0211.jpg' alt='' /><br />
<img src='http://www.gcmingati.net/wordpress/wp-content/uploads/pnoise3d.jpg' alt='' /><br />
<span style="font: normal 9px Tahoma, Arial, Sans-Serif; padding: 6px 0 0 0; color: #565656; display: block;">Image credits: Perlin noise visualization.<br /><a href="http://www.openprocessing.org/visuals/?visualID=8172">http://www.openprocessing.org/visuals/?visualID=8172</a> - GC Mingati</span></p>
	<p>La funzione noise() é comoda per generare una serie di numeri in successione con casualità controllata; la tecnica inventata da Ken Perlin negli anni &#8216;80 é stata spesso usata in computer graphics per imitare l&#8217; apparente randomicità delle textures in natura o per riprodurre terreni, forme ecc. In queste immagini, si può vedere come il &#8216;Perlin noise&#8217;, influenzando la velocità delle particelle rosse, faccia variare il moto delle stesse ammassandole in forme sinuose che ricordano i vasi sanguigni e i meandri dei fiumi visti da grande altitudine. Nella <a href="http://www.openprocessing.org/visuals/?visualID=8172">Applet</a>, ho aggiunto attrito e gravità orizzontale per influenzare ulteriormente questo ordine aggiungendo disordine; ne é derivato un caos su cui ho voluto indagare qualche ora.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.gcmingati.net/wordpress/2010/03/09/noise/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>MiniMag</title>
		<link>http://www.gcmingati.net/wordpress/2010/03/01/103/</link>
		<comments>http://www.gcmingati.net/wordpress/2010/03/01/103/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 19:51:07 +0000</pubDate>
		<dc:creator>Gian Carlo</dc:creator>
		
	<category>R/C and Full-Scale Aviation</category>
		<guid>http://www.gcmingati.net/wordpress/2010/03/01/103/</guid>
		<description><![CDATA[	
	Lo scorso mese di ottobre, ho acquistato un MiniMag  - della tedesca Multiplex. Dicevo ma che aerei, non c&#8217;è paragone; vuoi mettere la complessità, le performances, la bellezza del volo stazionario e traslato degli elicotteri? E invece inizio a prenderci sempre più gusto, al punto che in tutto questo periodo invernale ho raramente levato [...]]]></description>
			<content:encoded><![CDATA[	<p><img src='http://www.gcmingati.net/wordpress/wp-content/uploads/mmagsmall.jpg' alt='' /></p>
	<p>Lo scorso mese di ottobre, ho acquistato un MiniMag  - della tedesca <a href="http://www.multiplex-rc.de/">Multiplex</a>. Dicevo ma che aerei, non c&#8217;è paragone; vuoi mettere la complessità, le performances, la bellezza del volo stazionario e traslato degli elicotteri? E invece inizio a prenderci sempre più gusto, al punto che in tutto questo periodo invernale ho raramente levato in volo il <a href="http://www.gcmingati.net/wordpress/2008/10/18/logo-500/">Logo500</a> in favore di questo piccolo e leggerissimo modello in Elapor&reg; - un materiale brevettato da Multiplex simile all&#8217;EPP (Expanded PolyPropylene), ma molto più resistente. </p>
	<p>Ecco una breve recensione su questo famigerato modello stravenduto in tutto il mondo, adatto a principianti e piloti con esperienza intermedia; il MiniMag è un trainer ad ala alta del peso di 550/600 gr. (all-up-weight), molto semplice da montare, leggero e facile da far volare. Tutti i modelli Multiplex sono fatti in Elapor e si assemblano con poche ore di lavoro incollando le parti con colla cianoacrilica; il kit contiene i due gusci della fusoliera, le ali (costituite da un unico pezzo) con relativi incavi per i servi, la deriva, il piano di coda, un resistente carrello in acciaio, tiranteria, rinforzi, decals ed un motore a spazzole classe 400. Investigando un po sui vari forum ho capito che era meglio dotarlo da subito di un motore più potente tipo brushless Hacker A20-22L ed elica 8&#215;6; scelta azzeccata visto che con questo motore, associato ad una batteria 3S (11,1V 1300mAh) si ottengono decolli &#8216;verticali&#8217; e si esce facilmente da qualsiasi situazione di incertezza con &#8216;un tocco&#8217; alla manetta del gas; gli assorbimenti sono inferiori ai 20A, e per ogni pacco batterie ci si diverte per una decina di minuti.</p>
	<div class="flv-player-instance">
<div id="logo" style="text-align: center;"><strong>You need to upgrade your Flash Player</strong></div>
<script type="text/javascript" src="http://www.gcmingati.net/rc/i-hacr/mmag01.js"></script><span>Multiplex MiniMag (I-HACR) with FlyCamOne2 on board. <br />Pilot: Gian Carlo Mingati. Flight assitant: Peter.</span></div>
	<p>Il modello non é dotato di ruotino di coda sterzante, quindi non c&#8217;è possibilità di rullare in posizione attendendo l&#8217;ok della torre così come non c&#8217;è modo di mantenerlo allineato alla pista una volta atterrati ma il decollo (col motore Hacker) avviene in 3 metri scarsi ed una volta in aria il MiniMag rivela da subito caratteristiche di volo molto prevedibili, buona manovrabilità, ottime doti di planata ed è molto, molto rilassante (rispetto al mio Logo500 con i suoi 700 Watt di assorbimento ed un peso di 2.5Kg che ti costringe ad un continuo controllo ed impegno perchè non permette errori); un modello adatto a tutti, che si può far volare anche senza gli alettoni (ricavabili dalle apposite scanalature nelle ali) ma che consiglio di utilizzare, perchè rendono il tutto molto più governabile e si riesce a volare con venti medio/sostenuti - a patto di avere un pista di atterraggio orientata nella direzione del vento, perchè per esperienza vi assicuro che atterrare con venti laterali con un modello così leggero non è facile; piccolo e facilmente trasportabile, il MiniMag sarà il vostro compagno di viaggio per le scampagnate e le vacanze al lago (si possono mettere galleggianti per atterrare e partire dall&#8217;acqua) e vi permetterà di farvi le ossa per poter passare a modelli più grandi ed impegnativi in balsa e/o materiali compositi come questi, che sono i candidati al mio prossimo acquisto ma tra i quali in realtà non saprei proprio quale scegliere.</p>
	<p><img src='http://www.gcmingati.net/wordpress/wp-content/uploads/calmatospep.jpg' alt='' /><br />
<span style="font: normal 9px Tahoma, Arial, Sans-Serif; padding: 6px 0 0 0; color: #565656; display: block;">Calmato SP EP 1400. &copy; Kyosho Corporation</span></p>
	<p><img src='http://www.gcmingati.net/wordpress/wp-content/uploads/bonanza15e.jpg' alt='' /><br />
<span style="font: normal 9px Tahoma, Arial, Sans-Serif; padding: 6px 0 0 0; color: #565656; display: block;">Beechcraft Bonanza 15e ARF. &copy; E-flite - Advancing Electric Flight</span></p>
	<p>Alcuni dati sul MiniMag: apertura alare 1010 mm;  lunghezza 820 mm;  area delle ali 22 dm2; carico alare (FAI)  26 gr/dm2; motorizzazione consigliata Hacker A20-22L + prop 8&#215;6 + batteria 3S; funzioni: timone/elevatore/alettoni.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.gcmingati.net/wordpress/2010/03/01/103/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>Tentacles</title>
		<link>http://www.gcmingati.net/wordpress/2010/01/28/tentacles/</link>
		<comments>http://www.gcmingati.net/wordpress/2010/01/28/tentacles/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 13:14:05 +0000</pubDate>
		<dc:creator>Gian Carlo</dc:creator>
		
	<category>Java</category>
	<category>Processing</category>
		<guid>http://www.gcmingati.net/wordpress/2010/01/28/tentacles/</guid>
		<description><![CDATA[	


	Investigando ulteriormente nella modellazione di coni e clindri al fine di poter generare alberi realistici, ho preso (come é naturale se si usa Processing) tutta un&#8217;altra strada; per realizzare ciò che avevo in mente avevo due problemi da risolvere: (1) orientare un oggetto nella direzione di un punto in continuo movimento e/o generato randomicamente e [...]]]></description>
			<content:encoded><![CDATA[	<p><img src='http://www.gcmingati.net/wordpress/wp-content/uploads/tent01.jpg' alt='' /><br />
<img src='http://www.gcmingati.net/wordpress/wp-content/uploads/tent02.jpg' alt='' /><br />
<img src='http://www.gcmingati.net/wordpress/wp-content/uploads/tent03.jpg' alt='' /></p>
	<p>Investigando ulteriormente nella modellazione di coni e clindri al fine di poter generare alberi realistici, ho preso (come é naturale se si usa Processing) tutta un&#8217;altra strada; per realizzare ciò che avevo in mente avevo due problemi da risolvere: (1) orientare un oggetto nella direzione di un punto in continuo movimento e/o generato randomicamente e (2) scrivere una funzione di branching per i rami. Il punto 1 mi sembrava ragionevolmente semplice da risolvere, ma ben presto mi sono reso conto che non lo era affatto. Il punto 2, senza aver risolto il punto 1 era inutile affrontarlo. Grazie all&#8217;aiuto di <a href="http://www.davebollinger.com/works/">Dave Bollinger</a> però ho potuto fare il reverse-engineering del codice che descrive le coordinate sferiche ed in particolare, dato un punto iniziale ed uno finale, trattarli come fossero il centro ed un punto sulla superficie di una sfera e quindi calcolare raggio e rotazione sugli assi.</p>
	<p><code class="java"><br />
// Let particle b coords be the desired base center, and particle a coords be the desired top center.<br />
Particle a;<br />
Particle b;<br />
//If that's where the center of the base stays, then the center of the top needs to end up at:<br />
PVector c = new PVector(a.position().x()-b.position().x(),a.position().y()-b.position().y(),a.position().z()-b.position().z());<br />
float h = dist(0,0,0,c.x,c.y,c.z);<br />
//then define the radius<br />
float r = sqrt(pow(c.x,2)+pow(c.y,2)+pow(c.z,2));<br />
float theta = atan2(c.y,c.x);<br />
float phi = acos(c.z/r); //thank you Dave!<br />
pushMatrix();<br />
//now translate to b position<br />
translate(b.position().x(),b.position().y(),b.position().z());<br />
//and rotate the new tentacle segment<br />
rotateZ(theta);<br />
rotateY(phi);<br />
rotateX(-HALF_PI);<br />
//Segment to rotate<br />
popMatrix();<br />
</code></p>
	<p>Queste poche righe, in Processing permettono di ruotare un qualsiasi oggetto nella direzione definita da un altro sistema di coordinate; se volete usarlo per i vostri esperimenti, troverete la Applet corredata di classi nel link sotto al video, o anche <a href="http://www.openprocessing.org/visuals/?visualID=7207">qui</a>; col mouse e tasto sx premuto potete ruotare la bestia, e avvicinarvi ed allontanarvi col tasto dx.</p>
	<p><strong>Tentacles.</strong><br />
Il mostro é nato perchè una volta trovato il modo di orientare i nuovi coni verso la direzione voluta, ed avendo definito ognuno dei due punti di ancoraggio del cono (centro della circonferenza inferiore e centro della circonferenza superiore) con altrettante particelle unite da una spring (una molla), ecco che variando le distanze variava la lunghezza del cono ed anche (per via del &#8216;molleggio&#8217; e qualche altro parametro) la rotazione. E&#8217; stato un attimo creare tentacoli. Le particelle e le springs sono realizzate con la libreria per Processing <a href="http://www.cs.princeton.edu/~traer/physics/">traer.physics</a> la quale permette anche - dato un sistema di particelle - di definire una gravità sui 3 assi ed un attrito. Applicando attrito, una gravità negativa sull&#8217;asse y, una differente massa per ogni particella del tentacolo (crescente verso la parte più lontana dalla base) ed una gravità che varia continuamente tra -1 ed 1 sull&#8217;asse x, ecco che i tentacoli hanno iniziato a muoversi sinuosamente e l&#8217;effetto finale é davvero naturale. Ho aggiunto una texture &#8216;urticante&#8217; et voilà: Tentacles. Una bestia velenosissima - in genere le creature marine con colori sgargianti sono sempre velenose. </p>
	<p><object width="450" height="330"><br />
<param name="allowfullscreen" value="true">
<param name="allowscriptaccess" value="always">
<param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=10214554&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=01AAEA&amp;fullscreen=1"><embed src="http://vimeo.com/moogaloop.swf?clip_id=10214554&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=01AAEA&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="450" height="330"></object></p>
	<p><span style="font: normal 9px Tahoma, Arial, Sans-Serif; padding: 6px 0 0 0; color: #565656; display: block;">Image credits: magTentacle<br /><a href="http://www.openprocessing.org/visuals/?visualID=7207">http://www.openprocessing.org/visuals/?visualID=7207</a> - GC Mingati</span>
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.gcmingati.net/wordpress/2010/01/28/tentacles/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>Web Design All-in-One For Dummies</title>
		<link>http://www.gcmingati.net/wordpress/2010/01/21/web-design-all-in-one-for-dummies/</link>
		<comments>http://www.gcmingati.net/wordpress/2010/01/21/web-design-all-in-one-for-dummies/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 13:29:47 +0000</pubDate>
		<dc:creator>Gian Carlo</dc:creator>
		
	<category>Web Design</category>
	<category>my jQuery plugins</category>
		<guid>http://www.gcmingati.net/wordpress/2010/01/21/web-design-all-in-one-for-dummies/</guid>
		<description><![CDATA[	
	Qualche mese fa, Sue Jenkins (Luckychair) mi ha chiesto il permesso - prontamente accordato - per poter pubblicare sul suo libro di prossima uscita &#8220;Web Design All-in-One For Dummies&#8220;, in una sezione relativa alla creazione di gallerie di immagini, un tutorial su slideViewer - il mio famigerato quanto semplice (per dummies?) jQuery plugin; il libro [...]]]></description>
			<content:encoded><![CDATA[	<div><img class="dropshadow" src="http://www.gcmingati.net/wordpress/wp-content/uploads/waiofd.jpg" alt="Web Design All-in-One For Dummies - the book" /></div>
	<p>Qualche mese fa, <a href="http://www.luckychair.com">Sue Jenkins</a> (Luckychair) mi ha chiesto il permesso - prontamente accordato - per poter pubblicare sul suo libro di prossima uscita &#8220;<a href="http://books.google.com/books?id=Yn7XXH64V7oC&#038;printsec=frontcover&#038;source=gbs_v2_summary_r&#038;cad=0#v=onepage&#038;q=&#038;f=false">Web Design All-in-One For Dummies</a>&#8220;, in una sezione relativa alla creazione di gallerie di immagini, un tutorial su <a href="http://www.gcmingati.net/wordpress/wp-content/lab/jquery/imagestrip/imageslide-plugin.html">slideViewer</a> - il mio famigerato quanto semplice (per dummies?) jQuery plugin; il libro è uscito, e alle pagine 447-449 (Chapter 8 > Creating slide shows) si parla proprio del mio plugin e di come costruire una galleria di immagini per il proprio sito. Sono piccole soddisfazioni, ma questo dimostra quanto alla fine, lavorare &#8216;per gli altri&#8217; porti sempre buoni frutti.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.gcmingati.net/wordpress/2010/01/21/web-design-all-in-one-for-dummies/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>jQuery 1.4 Released</title>
		<link>http://www.gcmingati.net/wordpress/2010/01/14/jquery-14-released/</link>
		<comments>http://www.gcmingati.net/wordpress/2010/01/14/jquery-14-released/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 11:31:01 +0000</pubDate>
		<dc:creator>Gian Carlo</dc:creator>
		
	<category>jQuery</category>
		<guid>http://www.gcmingati.net/wordpress/2010/01/14/jquery-14-released/</guid>
		<description><![CDATA[	In celebration of jQuery’s 4th birthday, the jQuery team announces the latest major release of the jQuery JavaScript library! A lot of coding, testing, and documenting has gone into this release.

]]></description>
			<content:encoded><![CDATA[	<p>In celebration of <a href="http://www.jquery.com">jQuery</a>’s 4th birthday, the jQuery team announces the latest major release of the jQuery JavaScript library! A lot of coding, testing, and <a href="http://api.jquery.com">documenting</a> has gone into this release.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.gcmingati.net/wordpress/2010/01/14/jquery-14-released/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>pineTree forest</title>
		<link>http://www.gcmingati.net/wordpress/2010/01/05/pinetree-forest/</link>
		<comments>http://www.gcmingati.net/wordpress/2010/01/05/pinetree-forest/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 13:36:52 +0000</pubDate>
		<dc:creator>Gian Carlo</dc:creator>
		
	<category>Java</category>
	<category>Processing</category>
		<guid>http://www.gcmingati.net/wordpress/2010/01/05/pinetree-forest/</guid>
		<description><![CDATA[	Innanzi tutto, felice 2010. 
	Sarà stata l&#8217;aria di Ortisei, la neve e i boschi ma da quando sono tornato ho in mente di voler realizzare degli alberi con Processing. Ho creato una versione molto semplificata e stilizzata di un pino (per il momento é quanto sono riusciuto a pensare con qualche ora di tempo libero) [...]]]></description>
			<content:encoded><![CDATA[	<p>Innanzi tutto, felice 2010. </p>
	<p>Sarà stata l&#8217;aria di Ortisei, la neve e i boschi ma da quando sono tornato ho in mente di voler realizzare degli alberi con Processing. Ho creato una versione molto semplificata e stilizzata di un pino (per il momento é quanto sono riusciuto a pensare con qualche ora di tempo libero) ma ammetto che per realizzare forme convincenti c&#8217;è molto da approfondire sulle strutture geometriche e matematiche costruite dalla natura - in particolare sui frattali. Si può trovare qualche compromesso, probabilmente, ma ritengo interessante cercare di riprodurre il pattern col quale si dispongono e suddividono i rami nelle piante. Si lo so, non ci siamo. Almeno non al primo sketch.</p>
	<p><img src='http://www.gcmingati.net/wordpress/wp-content/uploads/forest.jpg' alt='' /></p>
	<p>Per creare questi alberelli &#8217;simil-Lego&#8217; ho pensato di partire disegnando un tronco principale (una linea posizionata randomicamente e con altezza casuale, il cui spessore diminuisce mentre si sale) e dei rami, anche questi con spessore e lunghezza decrescente.</p>
	<p><img src='http://www.gcmingati.net/wordpress/wp-content/uploads/forest02.jpg' alt='' /></p>
	<p>Per i rami ho quindi semplicemente disegnato delle rette le cui coordinate esterne x e z (come fosse solo in 2D) fossero:  x = initPos.x + radius * cos(theta); z = initPos.z + radius * sin(theta); qui <a href="http://processing.org/reference/PVector.html">PVector</a> initPos contiene le coordinate x, y, z del tronco; radius è la lunghezza del ramo, e diminuisce mentre si sale. In pratica non ho fatto altro che calcolare alcuni dei punti che descrivono una serie di cerchi con raggio decrescente e poi ho usato tali coordinate per descrive l&#8217;ancoraggio del secondo punto (quello esterno) dei rami (i punti iniziali sono gli stessi del tronco). Salendo con la y (-y) ecco che i rami vengono wrappati attorno al tronco e divengono sempre più corti, fino alla cima, dove radius è 0. Il codice dello sketch e la Applet li trovate nel link sotto al video (il risultato finale è abbastanza gradevole).</p>
	<p><img src='http://www.gcmingati.net/wordpress/wp-content/uploads/fractalcones.jpg' alt='' /><br />
<span style="font: normal 9px Tahoma, Arial, Sans-Serif; padding: 6px 0 0 0; color: #565656; display: block;">Image credits: Recursive Tree. Rendered with p5sunflow lib - GC Mingati</span></p>
	<p>Ecco invece una versione in cui rami e tronchi sono formati da coni/cilindri. Questo mi permette di ottenere un effetto 3D pieno e - se riesco - texturizabile; ma quello che appare subito evidente é che usando una funzione ricorsiva si ottengono rapidamente più rami (una funzione ricorsiva richiama se stessa fino a quando una data condizione non viene raggiunta - in questo esempio un numero di 5 cicli). Anche questo esempio é visibile sotto forma di Applet a <a href="http://www.openprocessing.org/visuals/?visualID=6991">questa url</a>, ma credo dovrò cambiare radicalmente modalità di generazione: la ricursività non soddisfa la randomicità di forma/lunghezza che desidero poichè in realtà i rami nascono ruotati randomicamente sugli assi Z ed X solo alla prima generazione; i rami più piccoli sono copie rimpicciolite dei primi e non sono riuscito a trovare un modo per allontanarli dai loro &#8217;simili&#8217;; credo però che aggiungendo una forza magnetico-repulsiva ad ogni ramo eviterò che essi si sovrappongano (al momento è inevitabile) e probabilmente avranno una forma più naturale.</p>
	<p><object width="450" height="330"><br />
<param name="allowfullscreen" value="true">
<param name="allowscriptaccess" value="always">
<param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=8577533&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=01AAEA&amp;fullscreen=1"><embed src="http://vimeo.com/moogaloop.swf?clip_id=8577533&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=01AAEA&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="450" height="330"></object></p>
	<p><span style="font: normal 9px Tahoma, Arial, Sans-Serif; padding: 6px 0 0 0; color: #565656; display: block;">Image credits: pineTree forest<br /><a href="http://www.openprocessing.org/visuals/?visualID=6824">http://www.openprocessing.org/visuals/?visualID=6824</a> - GC Mingati</span></p>
	<p>Anche quest&#8217;anno quindi parecchi progetti da realizzare - alcuni ancora troppo complessi visti i miei skills attuali e per il tempo che richiedono (terreni 3D, alberi, flocking e piante mosse dal vento) e altri certamente più &#8216;alla portata&#8217; (approfondire Struts e lo sviluppo delle apps J2EE) ma tutti comunque necessiteranno di costanza ed impegno. Ho un anno a diposizione, e Saturno contro&#8230;
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.gcmingati.net/wordpress/2010/01/05/pinetree-forest/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>lineMorph</title>
		<link>http://www.gcmingati.net/wordpress/2009/11/25/linemorph/</link>
		<comments>http://www.gcmingati.net/wordpress/2009/11/25/linemorph/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 13:20:21 +0000</pubDate>
		<dc:creator>Gian Carlo</dc:creator>
		
	<category>Java</category>
	<category>Processing</category>
		<guid>http://www.gcmingati.net/wordpress/2009/11/25/linemorph/</guid>
		<description><![CDATA[	





Image credits: 3D lineMorphhttp://www.openprocessing.org/visuals/?visualID=6221 - GC Mingati
	Continua l&#8217;esplorazione. Queste immagini sono frames salvati (e ridotti) della Applet 3D lineMorph. Con questo progetto ho voluto dare uno sguardo alle tecniche necessarie a posizionare una serie di punti (Particelle) in uno spazio tridimensionale al fine di formare una sfera con superficie irregolare. A prescindere dal bellissimo (per [...]]]></description>
			<content:encoded><![CDATA[	<p><img src='http://www.gcmingati.net/wordpress/wp-content/uploads/lm01.jpg' alt='' /><br />
<img src='http://www.gcmingati.net/wordpress/wp-content/uploads/lm02.jpg' alt='' /><br />
<img src='http://www.gcmingati.net/wordpress/wp-content/uploads/lm03.jpg' alt='' /><br />
<img src='http://www.gcmingati.net/wordpress/wp-content/uploads/lm04.jpg' alt='' /><br />
<img src='http://www.gcmingati.net/wordpress/wp-content/uploads/lm05.jpg' alt='' /><br />
<img src='http://www.gcmingati.net/wordpress/wp-content/uploads/lm07.jpg' alt='' /><br />
<span style="font: normal 9px Tahoma, Arial, Sans-Serif; padding: 6px 0 0 0; color: #565656; display: block;">Image credits: 3D lineMorph<br /><a href="http://www.openprocessing.org/visuals/?visualID=6221">http://www.openprocessing.org/visuals/?visualID=6221</a> - GC Mingati</span></p>
	<p>Continua l&#8217;esplorazione. Queste immagini sono frames salvati (e ridotti) della Applet <a href="http://www.openprocessing.org/visuals/?visualID=6221">3D lineMorph</a>. Con questo progetto ho voluto dare uno sguardo alle tecniche necessarie a posizionare una serie di punti (Particelle) in uno spazio tridimensionale al fine di formare una sfera con superficie irregolare. A prescindere dal bellissimo (per me) risultato, ho impiegato una equazione semplificata che descrivere il volume (e le coordinate) della sfera, perchè in realtà i punti sono stati dapprima posizionati in maniera randomica e poi col solito metodo del &#8220;trial-and-error&#8221; li ho wrappati come fosse una spirale. L&#8217;effetto era interessante (immagine 4), ma il progetto prevedeva appunto di realizzare una superficie irregolare - variando le distanze dei punti dal centro, un pò come se ci fossero delle catene montuose alternate a valli e pianure.</p>
	<p><object width="450" height="330"><br />
<param name="allowfullscreen" value="true">
<param name="allowscriptaccess" value="always">
<param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=7839513&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=01AAEA&amp;fullscreen=1"><embed src="http://vimeo.com/moogaloop.swf?clip_id=7839513&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=01AAEA&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="450" height="330"></object></p>
	<p>In ogni caso, per risolvere il problema quale miglior modo di affidarsi alla potenza del caso, e di attrattori e springs per dare randomicità alle distanze dei punti dal centro della sfera? Ed ecco un&#8217;altra utilissima libreria per processing: <a href="http://www.cs.princeton.edu/~traer/physics/">traer.physics.</a> Con questa ho potuto creare una serie di &#8216;molle&#8217; (springs) che colleganoo la particella/attrattore al centro (invisibile) con ognuno dei punti; le springs, a prescindere dal raggio iniziale della sfera, mantengono in modo elastico i punti ad una certa distanza e poi ho aggiunto un attrattore: questo attrae i punti verso il centro, e questi si concentrerebbero tutti in un unico mucchio di particelle, come se collassassero, quindi per mantenerli distanti ecco che le &#8216;molle&#8217; aiutano a contenere l&#8217;attrazione, annullandone la forza. Ma come posizionare le 3000 particelle a distanze differenti dalla superficie? Dando massa differente (per es. compresa tra 1.0 e 10.0) ad ognuna di esse.<br />
Newton dice che &#8220;due corpi, rispettivamente di massa m1 ed m2, si attraggono con una forza di intensità direttamente proporzionale al prodotto delle masse ed inversamente proporzionale al quadrato della distanza che li separa. Tale forza ha la direzione parallela alla retta congiungente i baricentri dei corpi considerati.&#8221; <a href="http://www.shiffman.net/teaching/nature/forces/">Quindi</a> : F = G * m1 * m2 / D2, dove G = gravitational constant, m1 = mass of M1, m2 = mass of M2, D = distance M1 - M2.<br />
Se ogni particella ha massa differente, l&#8217;attrazione e la repulsione avranno effetti differenti. Poi hoi collegato tutti i punti in sequenza tra loro a formare una linea continua col metodo <a href="http://www.processing.org/reference/curveVertex_.html">curveVertex</a>(x,y,z) ed ho ottenuto il tratto. La linea si muove fino a trovare un equilibrio quando tutte le forze si annullano.<br />
Nella <a href="http://www.openprocessing.org/visuals/?visualID=6221">Applet</a>, premendo &#8216;i&#8217; ci si posiziona al centro della sfera e si può osservare l&#8217;interno (ultima immagine) e con &#8216;o&#8217; si torna alla coordinata z originaria. Ho aggiunto uno slider che permette di variare la massa della particella attrattore, e settando massa a 0 noterete che si torna alla &#8216;forma&#8217; della immagine 4. Invece aumentando la massa, aumenta l&#8217;attrazione. Premendo e trascinando si ruota la sfera.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.gcmingati.net/wordpress/2009/11/25/linemorph/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>p5sunflow</title>
		<link>http://www.gcmingati.net/wordpress/2009/11/10/p5sunflow/</link>
		<comments>http://www.gcmingati.net/wordpress/2009/11/10/p5sunflow/#comments</comments>
		<pubDate>Tue, 10 Nov 2009 15:35:31 +0000</pubDate>
		<dc:creator>Gian Carlo</dc:creator>
		
	<category>Java</category>
	<category>Processing</category>
		<guid>http://www.gcmingati.net/wordpress/2009/11/10/p5sunflow/</guid>
		<description><![CDATA[	
Image credits: p5sunflow rendering test - GC Mingati
Primi test con p5sunflow, un 3D render engine open source con tanto di global illumination (una serie di algoritmi realizzati per aggiungere realismo alle scene 3D - riflessi, rifrazioni, ombre) originariamente chiamato Sunflow. Sunflow è un raytracer scritto in Java e reso compatibile con Processing da hipstersinc più [...]]]></description>
			<content:encoded><![CDATA[	<p><img src='http://www.gcmingati.net/wordpress/wp-content/uploads/p5sf03.jpg' alt='' /><br />
<span style="font: normal 9px Tahoma, Arial, Sans-Serif; padding: 6px 0 0 0; color: #565656; display: block;">Image credits: p5sunflow rendering test - GC Mingati</span><br />
Primi test con <a href="http://hipstersinc.com/p5sunflow/">p5sunflow</a>, un 3D render engine open source con tanto di global illumination (una serie di algoritmi realizzati per aggiungere realismo alle scene 3D - riflessi, rifrazioni, ombre) originariamente chiamato <a href="http://sunflow.sourceforge.net/">Sunflow</a>. Sunflow è un <a href="http://en.wikipedia.org/wiki/Ray_tracing_%28graphics%29">raytracer</a> scritto in Java e reso compatibile con Processing da hipstersinc più di un anno fa col nome p5sunflow che poi però, a partire dalla versione 1.0 del framework, non ha più funzionato.<br />
Finalmente <a href="http://www.punyblog.com/2009/10/sunflow-output-from-processing.html">qualcuno</a> ha apportato le opportune modifiche e p5sunflow può nuovamente essere utilizzato per rendere &#8220;your Processing sketches look sexy as hell&#8221;.<br />
Niente male davvero.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.gcmingati.net/wordpress/2009/11/10/p5sunflow/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>Visualizing data</title>
		<link>http://www.gcmingati.net/wordpress/2009/10/23/visualizing-data/</link>
		<comments>http://www.gcmingati.net/wordpress/2009/10/23/visualizing-data/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 14:26:33 +0000</pubDate>
		<dc:creator>Gian Carlo</dc:creator>
		
	<category>Java</category>
	<category>Processing</category>
		<guid>http://www.gcmingati.net/wordpress/2009/10/23/visualizing-data/</guid>
		<description><![CDATA[	



	3D and XML dataApplet and code http://www.openprocessing.org/visuals/?visualID=5451 - GC Mingati
Tutti conoscete Google Analitycs. Se lo avete installato su qualcuna delle pagine del vs. sito, avrete visto che bei report che fa (con Flash) e quante opzioni abbia; inoltre si possono esportare i report in vari formati e oggi, quello che ha destato il mio interesse [...]]]></description>
			<content:encoded><![CDATA[	<p><object width="450" height="330"><br />
<param name="allowfullscreen" value="true">
<param name="allowscriptaccess" value="always">
<param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=7294576&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=01AAEA&amp;fullscreen=1"><embed src="http://vimeo.com/moogaloop.swf?clip_id=7294576&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=01AAEA&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="450" height="330"></object></p>
	<p><span style="font: normal 9px Tahoma, Arial, Sans-Serif; padding: 6px 0 0 0; color: #565656; display: block;">3D and XML data<br />Applet and code http://www.openprocessing.org/visuals/?visualID=5451 - GC Mingati</span><br />
Tutti conoscete Google Analitycs. Se lo avete installato su qualcuna delle pagine del vs. sito, avrete visto che bei report che fa (con Flash) e quante opzioni abbia; inoltre si possono esportare i report in vari formati e oggi, quello che ha destato il mio interesse è il formato XML.<br />
Processing permette di leggere un file XML, ma la libreria <a href="http://creativecomputing.cc/p5libs/proxml/">proXML</a> permette di leggere e scrivere un file XML. In particolare, di questa nuova libreria scritta da Christian Riekoff, mi piace il modo intuitivo in cui si può navigare il DOM di un XML&#8230;  bene, e allora? Ho usato proXML per costruire (facilmente) un grafico 3D delle visite al mio plugin jQuery slideViewer, sulla base dei dati di un report di Analitycs per il periodo 22 settembre - 22 ottobre 2009. La Applet ed il codice sorgente sono visualizzabili a <a href="http://www.openprocessing.org/visuals/?visualID=5451">questa URL</a>.</p>
	<blockquote><p><cite>The Extensible Markup Language XML has become the standard for exchanging structured data in Internet applications. proXML allows you to easily integrate and manipulate this data in Processing. </cite></p></blockquote>
	<p>Se usate Processing e volete smanettare coi vostri report, andate sul vostro Analitycs e salvatevi il report in formato XML. Questo sketch costruirà un grafico a barre navigabile (via peasyCam) esponendo dati per: URL della pagina, periodo di riferimento, visite totali, giorno con maggiori visite (cubo blu), giorni del periodo di riferimento; non è che aggiunga chissà cosa ai report di Analitycs, però è un altro modo di visualizzarli e sopratutto per me, è un modo per esplorare nuove librerie e nuovi modi per fare le cose che mi piacciono, e alla fine, per integrare Processing col mio lavoro di tutti i giorni. Per muoversi intorno al grafico tasto sx click + drag; per avvicinarsi/allontanarsi tasto dx click + drag.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.gcmingati.net/wordpress/2009/10/23/visualizing-data/feed/</wfw:commentRSS>
	</item>
	</channel>
</rss>
