<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://kata.coderdojo.it/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="it">
		<id>https://kata.coderdojo.it/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mbert</id>
		<title>WIKI CoderDojo Firenze - Contributi utente [it]</title>
		<link rel="self" type="application/atom+xml" href="https://kata.coderdojo.it/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mbert"/>
		<link rel="alternate" type="text/html" href="https://kata.coderdojo.it/wiki/index.php?title=Speciale:Contributi/Mbert"/>
		<updated>2026-06-17T08:46:00Z</updated>
		<subtitle>Contributi utente</subtitle>
		<generator>MediaWiki 1.23.2</generator>

	<entry>
		<id>https://kata.coderdojo.it/wiki/index.php?title=Cells</id>
		<title>Cells</title>
		<link rel="alternate" type="text/html" href="https://kata.coderdojo.it/wiki/index.php?title=Cells"/>
				<updated>2016-05-22T16:39:31Z</updated>
		
		<summary type="html">&lt;p&gt;Mbert: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;font face=&amp;quot;Trebuchet MS, sans-serif&amp;quot;&amp;gt;Cells&amp;lt;/font&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Trebuchet MS, sans-serif&amp;quot;&amp;gt;Il file 'cells.html' (trovate tutto in [[Media:Cells.zip|Cells.zip]]) realizza un gioco ispirato a ciò che è stato detto all'ultima riunione su agar.io. Il concetto è cellula grande mangia cellula piccola. Il giocatore controlla il movimento della cellula blu, il computer (ovvero il caso) controlla le altre cellule, rosse o cambiando il commento di colore casuale.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Trebuchet MS, sans-serif&amp;quot;&amp;gt;La parte html ha un titolo, una riga per punteggio e record e l'elemento canvas che consente di disegnare il campo da gioco e le cellule in movimento.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Trebuchet MS, sans-serif&amp;quot;&amp;gt;Il codice inizia con la definizione delle variabili, una serie di funzioni, la gestione dei tasti freccia e la chiamata alla funzione 'init' che crea la cellula del giocatore, le altre cellule ed il loop del gioco.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Trebuchet MS, sans-serif&amp;quot;&amp;gt;La funzione 'scena' controlla lo svolgimento del gioco, muove la cellula del giocatore in base ai tasti premuti e le altre cellule casualmente. Controlla se qualche cellula mangia altre cellule o esce dallo schermo. Quando una cellula mangia cresce, quando viene mangiata o esce dallo schermo esce dal gioco. Il giocatore vince quando rimane l'unica cellula o cresce troppo. Perde quando viene mangiato o esce dallo schermo. Ad ogni ciclo del gioco e ogni volta che una cellula viene mangiata, può nascere una nuova cellula.&amp;lt;/font&amp;gt;&lt;br /&gt;
[[Category:Javascript|C]]&lt;/div&gt;</summary>
		<author><name>Mbert</name></author>	</entry>

	<entry>
		<id>https://kata.coderdojo.it/wiki/index.php?title=Cells</id>
		<title>Cells</title>
		<link rel="alternate" type="text/html" href="https://kata.coderdojo.it/wiki/index.php?title=Cells"/>
				<updated>2016-05-22T12:53:51Z</updated>
		
		<summary type="html">&lt;p&gt;Mbert: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;font face=&amp;quot;Trebuchet MS, sans-serif&amp;quot;&amp;gt;[[Category:Javascript|C]]Cells&amp;lt;/font&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Trebuchet MS, sans-serif&amp;quot;&amp;gt;Il file 'cells.html' (trovate tutto in [[Cells.zip|Cells.zip]]) realizza un gioco ispirato a ciò che è stato detto all'ultima riunione su agar.io. Il concetto è cellula grande mangia cellula piccola. Il giocatore controlla il movimento della cellula blu, il computer (ovvero il caso) controlla le altre cellule, rosse o cambiando il commento di colore casuale.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Trebuchet MS, sans-serif&amp;quot;&amp;gt;La parte html ha un titolo, una riga per punteggio e record e l'elemento canvas che consente di disegnare il campo da gioco e le cellule in movimento.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Trebuchet MS, sans-serif&amp;quot;&amp;gt;Il codice inizia con la definizione delle variabili, una serie di funzioni, la gestione dei tasti freccia e la chiamata alla funzione 'init' che crea la cellula del giocatore, le altre cellule ed il loop del gioco.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Trebuchet MS, sans-serif&amp;quot;&amp;gt;La funzione 'scena' controlla lo svolgimento del gioco, muove la cellula del giocatore in base ai tasti premuti e le altre cellule casualmente. Controlla se qualche cellula mangia altre cellule o esce dallo schermo. Quando una cellula mangia cresce, quando viene mangiata o esce dallo schermo esce dal gioco. Il giocatore vince quando rimane l'unica cellula o cresce troppo. Perde quando viene mangiato o esce dallo schermo. Ad ogni ciclo del gioco e ogni volta che una cellula viene mangiata, può nascere una nuova cellula.&amp;lt;/font&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mbert</name></author>	</entry>

	<entry>
		<id>https://kata.coderdojo.it/wiki/index.php?title=File:Cells.zip</id>
		<title>File:Cells.zip</title>
		<link rel="alternate" type="text/html" href="https://kata.coderdojo.it/wiki/index.php?title=File:Cells.zip"/>
				<updated>2016-05-22T12:51:42Z</updated>
		
		<summary type="html">&lt;p&gt;Mbert: Gioco Cells&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Gioco Cells&lt;/div&gt;</summary>
		<author><name>Mbert</name></author>	</entry>

	<entry>
		<id>https://kata.coderdojo.it/wiki/index.php?title=Cells</id>
		<title>Cells</title>
		<link rel="alternate" type="text/html" href="https://kata.coderdojo.it/wiki/index.php?title=Cells"/>
				<updated>2016-05-22T12:50:43Z</updated>
		
		<summary type="html">&lt;p&gt;Mbert: Javascript gioco Cells&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;font face=&amp;quot;Trebuchet MS, sans-serif&amp;quot;&amp;gt;Cells&amp;lt;/font&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Trebuchet MS, sans-serif&amp;quot;&amp;gt;Il file 'cells.html' (trovate tutto in Cells.zip) realizza un gioco ispirato a ciò che è stato detto all'ultima riunione su agar.io. Il concetto è cellula grande mangia cellula piccola. Il giocatore controlla il movimento della cellula blu, il computer (ovvero il caso) controlla le altre cellule, rosse o cambiando il commento di colore casuale.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Trebuchet MS, sans-serif&amp;quot;&amp;gt;La parte html ha un titolo, una riga per punteggio e record e l'elemento canvas che consente di disegnare il campo da gioco e le cellule in movimento.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Trebuchet MS, sans-serif&amp;quot;&amp;gt;Il codice inizia con la definizione delle variabili, una serie di funzioni, la gestione dei tasti freccia e la chiamata alla funzione 'init' che crea la cellula del giocatore, le altre cellule ed il loop del gioco.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Trebuchet MS, sans-serif&amp;quot;&amp;gt;La funzione 'scena' controlla lo svolgimento del gioco, muove la cellula del giocatore in base ai tasti premuti e le altre cellule casualmente. Controlla se qualche cellula mangia altre cellule o esce dallo schermo. Quando una cellula mangia cresce, quando viene mangiata o esce dallo schermo esce dal gioco. Il giocatore vince quando rimane l'unica cellula o cresce troppo. Perde quando viene mangiato o esce dallo schermo. Ad ogni ciclo del gioco e ogni volta che una cellula viene mangiata, può nascere una nuova cellula.&amp;lt;/font&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mbert</name></author>	</entry>

	<entry>
		<id>https://kata.coderdojo.it/wiki/index.php?title=Snake</id>
		<title>Snake</title>
		<link rel="alternate" type="text/html" href="https://kata.coderdojo.it/wiki/index.php?title=Snake"/>
				<updated>2016-01-24T16:37:57Z</updated>
		
		<summary type="html">&lt;p&gt;Mbert: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [[Category:Javascript|S]]'Snake' - il gioco del serpente =&lt;br /&gt;
&lt;br /&gt;
Il file 'snake.html' (trovate tutto in [[Media:Snake.zip|Snake.zip]]) realizza il gioco del serpente, passatempo presente su molti telefonini di prima generazione.&lt;br /&gt;
&lt;br /&gt;
Data la lunghezza del codice ho inserito nello zip anche 6 file intermedi da cui poter partire.&lt;br /&gt;
&lt;br /&gt;
La parte html ha un titolo, due righe per punteggio e record e l'elemento canvas che consente di disegnare il campo da gioco, serpente e cibo.&lt;br /&gt;
&lt;br /&gt;
Il codice inizia con la definizione delle variabili, una serie di funzioni, la gestione dei tasti freccia e la chiamata alla funzione 'init' che crea il serpente, il cibo ed il loop del gioco.&lt;br /&gt;
&lt;br /&gt;
Il serpente è un array, ogni elemento rappresente una cella del serpente. Quando il serpente si muove una nuova testa viene aggiunta al serpente e la coda, l'ultimo elemento del serpente viene eliminata. In questo modo si ottiene il movimento del serpente guidato dai tasti. La funzione 'scena' decide la nuova posizione della testa e verifica le condizioni di gioco: il serpente esce dal campo, il serpente si mangia. Quando la nuova testa è sul cibo il punteggio viene incrementato e creato un nuovo cibo.&lt;br /&gt;
&lt;br /&gt;
= Possibili varianti =&lt;br /&gt;
&lt;br /&gt;
Inserire degli ostacoli.&lt;br /&gt;
&lt;br /&gt;
Creare più cibo.&lt;br /&gt;
&lt;br /&gt;
Creare dei tunnel o porte comunicanti (come suggerito da un ninja).&lt;/div&gt;</summary>
		<author><name>Mbert</name></author>	</entry>

	<entry>
		<id>https://kata.coderdojo.it/wiki/index.php?title=Snake</id>
		<title>Snake</title>
		<link rel="alternate" type="text/html" href="https://kata.coderdojo.it/wiki/index.php?title=Snake"/>
				<updated>2016-01-24T16:37:32Z</updated>
		
		<summary type="html">&lt;p&gt;Mbert: Creata pagina con &amp;quot;= 'Snake' - il gioco del serpente =  Il file 'snake.html' (trovate tutto in Snake.zip) realizza il gioco del serpente, passatempo presente su molti telefon...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 'Snake' - il gioco del serpente =&lt;br /&gt;
&lt;br /&gt;
Il file 'snake.html' (trovate tutto in [[Media:Snake.zip|Snake.zip]]) realizza il gioco del serpente, passatempo presente su molti telefonini di prima generazione.&lt;br /&gt;
&lt;br /&gt;
Data la lunghezza del codice ho inserito nello zip anche 6 file intermedi da cui poter partire.&lt;br /&gt;
&lt;br /&gt;
La parte html ha un titolo, due righe per punteggio e record e l'elemento canvas che consente di disegnare il campo da gioco, serpente e cibo.&lt;br /&gt;
&lt;br /&gt;
Il codice inizia con la definizione delle variabili, una serie di funzioni, la gestione dei tasti freccia e la chiamata alla funzione 'init' che crea il serpente, il cibo ed il loop del gioco.&lt;br /&gt;
&lt;br /&gt;
Il serpente è un array, ogni elemento rappresente una cella del serpente. Quando il serpente si muove una nuova testa viene aggiunta al serpente e la coda, l'ultimo elemento del serpente viene eliminata. In questo modo si ottiene il movimento del serpente guidato dai tasti. La funzione 'scena' decide la nuova posizione della testa e verifica le condizioni di gioco: il serpente esce dal campo, il serpente si mangia. Quando la nuova testa è sul cibo il punteggio viene incrementato e creato un nuovo cibo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Possibili varianti =&lt;br /&gt;
&lt;br /&gt;
Inserire degli ostacoli.&lt;br /&gt;
&lt;br /&gt;
Creare più cibo.&lt;br /&gt;
&lt;br /&gt;
Creare dei tunnel o porte comunicanti (come suggerito da un ninja).&lt;/div&gt;</summary>
		<author><name>Mbert</name></author>	</entry>

	<entry>
		<id>https://kata.coderdojo.it/wiki/index.php?title=File:Snake.zip</id>
		<title>File:Snake.zip</title>
		<link rel="alternate" type="text/html" href="https://kata.coderdojo.it/wiki/index.php?title=File:Snake.zip"/>
				<updated>2016-01-24T16:35:34Z</updated>
		
		<summary type="html">&lt;p&gt;Mbert: Snake tutorial&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Snake tutorial&lt;/div&gt;</summary>
		<author><name>Mbert</name></author>	</entry>

	<entry>
		<id>https://kata.coderdojo.it/wiki/index.php?title=Grafico</id>
		<title>Grafico</title>
		<link rel="alternate" type="text/html" href="https://kata.coderdojo.it/wiki/index.php?title=Grafico"/>
				<updated>2016-01-24T14:12:01Z</updated>
		
		<summary type="html">&lt;p&gt;Mbert: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Disegnare un grafico in una pagina HTML =&lt;br /&gt;
&lt;br /&gt;
Il file Grafico.html (trovate tutto in [[Media:Grafico.zip|Grafico.zip]]) contiene la parte html e javascript necessarie per visualizzare il grafico di una funzione matematica ''y = f(x)'', naturalmente questa funzione deve essere inserita come funzione javascript con un parametro, ovvero la variabile ''x'' ed un valore di ritorno che contiene il valore ''y di f(x)''. Ponete attenzione al valore di ritorno: deve essere un numero; a parte questo la funzione non ha altre restrizioni.&lt;br /&gt;
&lt;br /&gt;
La parte html ha un titolo e l'elemento che consente di disegnare il grafico, un tag canvas con 'id' e dimensioni desiderate.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Grafici&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      .container {&lt;br /&gt;
        width: 700px;&lt;br /&gt;
        margin-left: auto;&lt;br /&gt;
        margin-right: auto;&lt;br /&gt;
      }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
  &amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;container&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;center&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Grafico&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;canvas id=&amp;quot;grafico&amp;quot; width=&amp;quot;640&amp;quot; height=&amp;quot;480&amp;quot;&amp;gt;&amp;lt;/canvas&amp;gt;&lt;br /&gt;
      &amp;lt;/center&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
La parte javascript contiene 4 funzioni utilizzabili come esempi di ''y = f(x)''.&lt;br /&gt;
&amp;lt;pre&amp;gt;// Esempi di funzione&lt;br /&gt;
  function fun1(x) {return Math.sin(x);  }&lt;br /&gt;
  function fun2(x) {return Math.cos(3*x);}&lt;br /&gt;
  function fun3(x) {return fun1(x) * fun2(5*x);}&lt;br /&gt;
  function fun4(x) {return fun1(x*x) * fun2(x);}&lt;br /&gt;
&lt;br /&gt;
  //Inizializzazione Canvas&lt;br /&gt;
  var canvas = document.getElementById('grafico'),&lt;br /&gt;
    ctx = canvas.getContext(&amp;quot;2d&amp;quot;),&lt;br /&gt;
    graph = {},&lt;br /&gt;
    axes = {};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;Nella parte di definizione delle variabili il tag canvas viene inserito in una variabile e recuperato il suo contesto bidimensionale. In Html il canvas è un oggetto complesso, cioé contenente molti metodi per disegnare, sia in 2D che in 3D, questi metodi sono esposti nel contesto ottenuto con ''getContext''.&lt;br /&gt;
&lt;br /&gt;
Seguono le due funzioni che disegnano gli assi ed il grafico vero e proprio.&lt;br /&gt;
&lt;br /&gt;
La funzione 'funGraph' prende 3 parametri il primo è la funzione da disegnare, seguono il colore e lo spessore della linea utilizzata.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;function funGraph (func,color,thick) {&lt;br /&gt;
    var dx = graph.step || 4;&lt;br /&gt;
    var iMax = Math.round((ctx.canvas.width - axes.x0)/dx);&lt;br /&gt;
    var iMin = graph.drawNegative&amp;amp;nbsp;? Math.round(-axes.x0/dx)&amp;amp;nbsp;: 0;&lt;br /&gt;
&lt;br /&gt;
    graph.scaleX = graph.scaleX || 40;&lt;br /&gt;
    graph.scaleY = graph.scaleY || graph.scaleX || 40;&lt;br /&gt;
    ctx.beginPath();&lt;br /&gt;
    ctx.lineWidth = thick;&lt;br /&gt;
    ctx.strokeStyle = color;&lt;br /&gt;
&lt;br /&gt;
    for (var i=iMin;i&amp;lt;=iMax;i++) {&lt;br /&gt;
      var x = dx*i;&lt;br /&gt;
      var y = graph.scaleY*func(x/graph.scaleX);&lt;br /&gt;
      if (i==iMin)&lt;br /&gt;
        ctx.moveTo(axes.x0 + x, axes.y0 - y);&lt;br /&gt;
      else&lt;br /&gt;
        ctx.lineTo(axes.x0 + x, axes.y0 - y);&lt;br /&gt;
    }&lt;br /&gt;
    ctx.stroke();&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  function showAxes() {&lt;br /&gt;
    var xmin = graph.drawNegative&amp;amp;nbsp;? 0&amp;amp;nbsp;: axes.x0;&lt;br /&gt;
&lt;br /&gt;
    ctx.beginPath();&lt;br /&gt;
    ctx.strokeStyle = &amp;quot;rgb(128,128,128)&amp;quot;;&lt;br /&gt;
    // X axis&lt;br /&gt;
    ctx.moveTo(xmin, axes.y0);&lt;br /&gt;
    ctx.lineTo(ctx.canvas.width, axes.y0);&lt;br /&gt;
    // Y axis&lt;br /&gt;
    ctx.moveTo(axes.x0, 0);&lt;br /&gt;
    ctx.lineTo(axes.x0, ctx.canvas.height);&lt;br /&gt;
    ctx.stroke();&lt;br /&gt;
  };&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
La parte che segue disegna lo sfondo ed il contorno del grafico ed inizializza la posizione degli assi, la scala del grafico e la definizione cioè il numero di pixel usati ad ogni passo della variabile x.&lt;br /&gt;
&lt;br /&gt;
Infine chiama le funzioni precedenti per disegnare gli assi e due delle funzioni di esempio.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  // Preparo il grafico&lt;br /&gt;
  graph.scaleX = 50;           // 50 pixels from x=0 to x=1&lt;br /&gt;
  graph.scaleY = 80;           // 80 pixels from y=0 to y=1&lt;br /&gt;
  graph.step = 2;              // 2 pixels step&lt;br /&gt;
  graph.drawNegative = true;&lt;br /&gt;
&lt;br /&gt;
  // Coloriamo lo sfondo&lt;br /&gt;
  ctx.fillStyle = &amp;quot;lightgreen&amp;quot;;&lt;br /&gt;
  ctx.fillRect(0, 0, canvas.width, canvas.height);&lt;br /&gt;
  // Disegniamo il bordo&lt;br /&gt;
  ctx.strokeStyle = &amp;quot;black&amp;quot;;&lt;br /&gt;
  ctx.strokeRect(0, 0, canvas.width, canvas.height);&lt;br /&gt;
&lt;br /&gt;
  // Preparo gli assi&lt;br /&gt;
  axes.x0 = (canvas.width + 1.) / 2;&lt;br /&gt;
  axes.y0 = (canvas.height + 1.) / 2;&lt;br /&gt;
&lt;br /&gt;
  // visualizzo assi cartesiani&lt;br /&gt;
  showAxes();&lt;br /&gt;
  // disegno funzioni&lt;br /&gt;
  funGraph(fun1,&amp;quot;rgb(11,153,11)&amp;quot;,1); &lt;br /&gt;
  funGraph(fun3,&amp;quot;rgb(66,44,255)&amp;quot;,2);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Evoluzione ==&lt;br /&gt;
&lt;br /&gt;
Il file grafico2.html contiene una evoluzione del precedente.&lt;br /&gt;
&lt;br /&gt;
Contiene sostanzialmente lo stesso codice, ma inserito in un oggetto che espone 3 metodi. Riscritto in questo modo l'oggetto, inserito nella variabile 'grafico', rende possibile la creazione di più grafici nella stessa pagina.&lt;br /&gt;
&lt;br /&gt;
Il metodo 'attach' da chiamare per primo, associa un tag canvas al grafico e opzionalmente mdifica le variabili di disegno.&lt;br /&gt;
&lt;br /&gt;
Il metodo 'drawAxes' disegna gli assi.&lt;br /&gt;
&lt;br /&gt;
E naturalmente il metodo 'drawGraph' disegna la funzione passata.&lt;br /&gt;
[[Category:Javascript|G]]&lt;/div&gt;</summary>
		<author><name>Mbert</name></author>	</entry>

	<entry>
		<id>https://kata.coderdojo.it/wiki/index.php?title=Grafico</id>
		<title>Grafico</title>
		<link rel="alternate" type="text/html" href="https://kata.coderdojo.it/wiki/index.php?title=Grafico"/>
				<updated>2016-01-24T14:11:01Z</updated>
		
		<summary type="html">&lt;p&gt;Mbert: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [[Category:Javascript|G]]Disegnare un grafico in una pagina HTML =&lt;br /&gt;
&lt;br /&gt;
Il file Grafico.html (trovate tutto in [[Media:Grafico.zip|Grafico.zip]]) contiene la parte html e javascript necessarie per visualizzare il grafico di una funzione matematica ''y = f(x)'', naturalmente questa funzione deve essere inserita come funzione javascript con un parametro, ovvero la variabile ''x'' ed un valore di ritorno che contiene il valore ''y di f(x)''. Ponete attenzione al valore di ritorno: deve essere un numero; a parte questo la funzione non ha altre restrizioni.&lt;br /&gt;
&lt;br /&gt;
La parte html ha un titolo e l'elemento che consente di disegnare il grafico, un tag canvas con 'id' e dimensioni desiderate.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Grafici&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      .container {&lt;br /&gt;
        width: 700px;&lt;br /&gt;
        margin-left: auto;&lt;br /&gt;
        margin-right: auto;&lt;br /&gt;
      }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
  &amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;container&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;center&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Grafico&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;canvas id=&amp;quot;grafico&amp;quot; width=&amp;quot;640&amp;quot; height=&amp;quot;480&amp;quot;&amp;gt;&amp;lt;/canvas&amp;gt;&lt;br /&gt;
      &amp;lt;/center&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
La parte javascript contiene 4 funzioni utilizzabili come esempi di ''y = f(x)''.&lt;br /&gt;
&amp;lt;pre&amp;gt;// Esempi di funzione&lt;br /&gt;
  function fun1(x) {return Math.sin(x);  }&lt;br /&gt;
  function fun2(x) {return Math.cos(3*x);}&lt;br /&gt;
  function fun3(x) {return fun1(x) * fun2(5*x);}&lt;br /&gt;
  function fun4(x) {return fun1(x*x) * fun2(x);}&lt;br /&gt;
&lt;br /&gt;
  //Inizializzazione Canvas&lt;br /&gt;
  var canvas = document.getElementById('grafico'),&lt;br /&gt;
    ctx = canvas.getContext(&amp;quot;2d&amp;quot;),&lt;br /&gt;
    graph = {},&lt;br /&gt;
    axes = {};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;Nella parte di definizione delle variabili il tag canvas viene inserito in una variabile e recuperato il suo contesto bidimensionale. In Html il canvas è un oggetto complesso, cioé contenente molti metodi per disegnare, sia in 2D che in 3D, questi metodi sono esposti nel contesto ottenuto con ''getContext''.&lt;br /&gt;
&lt;br /&gt;
Seguono le due funzioni che disegnano gli assi ed il grafico vero e proprio.&lt;br /&gt;
&lt;br /&gt;
La funzione 'funGraph' prende 3 parametri il primo è la funzione da disegnare, seguono il colore e lo spessore della linea utilizzata.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;function funGraph (func,color,thick) {&lt;br /&gt;
    var dx = graph.step || 4;&lt;br /&gt;
    var iMax = Math.round((ctx.canvas.width - axes.x0)/dx);&lt;br /&gt;
    var iMin = graph.drawNegative&amp;amp;nbsp;? Math.round(-axes.x0/dx)&amp;amp;nbsp;: 0;&lt;br /&gt;
&lt;br /&gt;
    graph.scaleX = graph.scaleX || 40;&lt;br /&gt;
    graph.scaleY = graph.scaleY || graph.scaleX || 40;&lt;br /&gt;
    ctx.beginPath();&lt;br /&gt;
    ctx.lineWidth = thick;&lt;br /&gt;
    ctx.strokeStyle = color;&lt;br /&gt;
&lt;br /&gt;
    for (var i=iMin;i&amp;lt;=iMax;i++) {&lt;br /&gt;
      var x = dx*i;&lt;br /&gt;
      var y = graph.scaleY*func(x/graph.scaleX);&lt;br /&gt;
      if (i==iMin)&lt;br /&gt;
        ctx.moveTo(axes.x0 + x, axes.y0 - y);&lt;br /&gt;
      else&lt;br /&gt;
        ctx.lineTo(axes.x0 + x, axes.y0 - y);&lt;br /&gt;
    }&lt;br /&gt;
    ctx.stroke();&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  function showAxes() {&lt;br /&gt;
    var xmin = graph.drawNegative&amp;amp;nbsp;? 0&amp;amp;nbsp;: axes.x0;&lt;br /&gt;
&lt;br /&gt;
    ctx.beginPath();&lt;br /&gt;
    ctx.strokeStyle = &amp;quot;rgb(128,128,128)&amp;quot;;&lt;br /&gt;
    // X axis&lt;br /&gt;
    ctx.moveTo(xmin, axes.y0);&lt;br /&gt;
    ctx.lineTo(ctx.canvas.width, axes.y0);&lt;br /&gt;
    // Y axis&lt;br /&gt;
    ctx.moveTo(axes.x0, 0);&lt;br /&gt;
    ctx.lineTo(axes.x0, ctx.canvas.height);&lt;br /&gt;
    ctx.stroke();&lt;br /&gt;
  };&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
La parte che segue disegna lo sfondo ed il contorno del grafico ed inizializza la posizione degli assi, la scala del grafico e la definizione cioè il numero di pixel usati ad ogni passo della variabile x.&lt;br /&gt;
&lt;br /&gt;
Infine chiama le funzioni precedenti per disegnare gli assi e due delle funzioni di esempio.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  // Preparo il grafico&lt;br /&gt;
  graph.scaleX = 50;           // 50 pixels from x=0 to x=1&lt;br /&gt;
  graph.scaleY = 80;           // 80 pixels from y=0 to y=1&lt;br /&gt;
  graph.step = 2;              // 2 pixels step&lt;br /&gt;
  graph.drawNegative = true;&lt;br /&gt;
&lt;br /&gt;
  // Coloriamo lo sfondo&lt;br /&gt;
  ctx.fillStyle = &amp;quot;lightgreen&amp;quot;;&lt;br /&gt;
  ctx.fillRect(0, 0, canvas.width, canvas.height);&lt;br /&gt;
  // Disegniamo il bordo&lt;br /&gt;
  ctx.strokeStyle = &amp;quot;black&amp;quot;;&lt;br /&gt;
  ctx.strokeRect(0, 0, canvas.width, canvas.height);&lt;br /&gt;
&lt;br /&gt;
  // Preparo gli assi&lt;br /&gt;
  axes.x0 = (canvas.width + 1.) / 2;&lt;br /&gt;
  axes.y0 = (canvas.height + 1.) / 2;&lt;br /&gt;
&lt;br /&gt;
  // visualizzo assi cartesiani&lt;br /&gt;
  showAxes();&lt;br /&gt;
  // disegno funzioni&lt;br /&gt;
  funGraph(fun1,&amp;quot;rgb(11,153,11)&amp;quot;,1); &lt;br /&gt;
  funGraph(fun3,&amp;quot;rgb(66,44,255)&amp;quot;,2);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Evoluzione&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il file grafico2.html contiene una evoluzione del precedente.&lt;br /&gt;
&lt;br /&gt;
Contiene sostanzialmente lo stesso codice, ma inserito in un oggetto che espone 3 metodi. Riscritto in questo modo l'oggetto, inserito nella variabile 'grafico', rende possibile la creazione di più grafici nella stessa pagina.&lt;br /&gt;
&lt;br /&gt;
Il metodo 'attach' da chiamare per primo, associa un tag canvas al grafico e opzionalmente mdifica le variabili di disegno.&lt;br /&gt;
&lt;br /&gt;
Il metodo 'drawAxes' disegna gli assi.&lt;br /&gt;
&lt;br /&gt;
E naturalmente il metodo 'drawGraph' disegna la funzione passata.&lt;/div&gt;</summary>
		<author><name>Mbert</name></author>	</entry>

	<entry>
		<id>https://kata.coderdojo.it/wiki/index.php?title=Grafico</id>
		<title>Grafico</title>
		<link rel="alternate" type="text/html" href="https://kata.coderdojo.it/wiki/index.php?title=Grafico"/>
				<updated>2016-01-24T14:09:49Z</updated>
		
		<summary type="html">&lt;p&gt;Mbert: Creata pagina con &amp;quot;= Disegnare un grafico in una pagina HTML =  Il file Grafico.html (trovate tutto in Grafico.zip) contiene la parte html e javascript necessarie per visua...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Disegnare un grafico in una pagina HTML =&lt;br /&gt;
&lt;br /&gt;
Il file Grafico.html (trovate tutto in [[Media:Grafico.zip|Grafico.zip]]) contiene la parte html e javascript necessarie per visualizzare il grafico di una funzione matematica ''y = f(x)'', naturalmente questa funzione deve essere inserita come funzione javascript con un parametro, ovvero la variabile ''x'' ed un valore di ritorno che contiene il valore ''y di f(x)''. Ponete attenzione al valore di ritorno: deve essere un numero; a parte questo la funzione non ha altre restrizioni.&lt;br /&gt;
&lt;br /&gt;
La parte html ha un titolo e l'elemento che consente di disegnare il grafico, un tag canvas con 'id' e dimensioni desiderate.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Grafici&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      .container {&lt;br /&gt;
        width: 700px;&lt;br /&gt;
        margin-left: auto;&lt;br /&gt;
        margin-right: auto;&lt;br /&gt;
      }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
  &amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;container&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;center&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Grafico&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;canvas id=&amp;quot;grafico&amp;quot; width=&amp;quot;640&amp;quot; height=&amp;quot;480&amp;quot;&amp;gt;&amp;lt;/canvas&amp;gt;&lt;br /&gt;
      &amp;lt;/center&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
La parte javascript contiene 4 funzioni utilizzabili come esempi di ''y = f(x)''.&lt;br /&gt;
&amp;lt;pre&amp;gt;// Esempi di funzione&lt;br /&gt;
  function fun1(x) {return Math.sin(x);  }&lt;br /&gt;
  function fun2(x) {return Math.cos(3*x);}&lt;br /&gt;
  function fun3(x) {return fun1(x) * fun2(5*x);}&lt;br /&gt;
  function fun4(x) {return fun1(x*x) * fun2(x);}&lt;br /&gt;
&lt;br /&gt;
  //Inizializzazione Canvas&lt;br /&gt;
  var canvas = document.getElementById('grafico'),&lt;br /&gt;
    ctx = canvas.getContext(&amp;quot;2d&amp;quot;),&lt;br /&gt;
    graph = {},&lt;br /&gt;
    axes = {};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;Nella parte di definizione delle variabili il tag canvas viene inserito in una variabile e recuperato il suo contesto bidimensionale. In Html il canvas è un oggetto complesso, cioé contenente molti metodi per disegnare, sia in 2D che in 3D, questi metodi sono esposti nel contesto ottenuto con ''getContext''.&lt;br /&gt;
&lt;br /&gt;
Seguono le due funzioni che disegnano gli assi ed il grafico vero e proprio.&lt;br /&gt;
&lt;br /&gt;
La funzione 'funGraph' prende 3 parametri il primo è la funzione da disegnare, seguono il colore e lo spessore della linea utilizzata.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;function funGraph (func,color,thick) {&lt;br /&gt;
    var dx = graph.step || 4;&lt;br /&gt;
    var iMax = Math.round((ctx.canvas.width - axes.x0)/dx);&lt;br /&gt;
    var iMin = graph.drawNegative&amp;amp;nbsp;? Math.round(-axes.x0/dx)&amp;amp;nbsp;: 0;&lt;br /&gt;
&lt;br /&gt;
    graph.scaleX = graph.scaleX || 40;&lt;br /&gt;
    graph.scaleY = graph.scaleY || graph.scaleX || 40;&lt;br /&gt;
    ctx.beginPath();&lt;br /&gt;
    ctx.lineWidth = thick;&lt;br /&gt;
    ctx.strokeStyle = color;&lt;br /&gt;
&lt;br /&gt;
    for (var i=iMin;i&amp;lt;=iMax;i++) {&lt;br /&gt;
      var x = dx*i;&lt;br /&gt;
      var y = graph.scaleY*func(x/graph.scaleX);&lt;br /&gt;
      if (i==iMin)&lt;br /&gt;
        ctx.moveTo(axes.x0 + x, axes.y0 - y);&lt;br /&gt;
      else&lt;br /&gt;
        ctx.lineTo(axes.x0 + x, axes.y0 - y);&lt;br /&gt;
    }&lt;br /&gt;
    ctx.stroke();&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  function showAxes() {&lt;br /&gt;
    var xmin = graph.drawNegative&amp;amp;nbsp;? 0&amp;amp;nbsp;: axes.x0;&lt;br /&gt;
&lt;br /&gt;
    ctx.beginPath();&lt;br /&gt;
    ctx.strokeStyle = &amp;quot;rgb(128,128,128)&amp;quot;;&lt;br /&gt;
    // X axis&lt;br /&gt;
    ctx.moveTo(xmin, axes.y0);&lt;br /&gt;
    ctx.lineTo(ctx.canvas.width, axes.y0);&lt;br /&gt;
    // Y axis&lt;br /&gt;
    ctx.moveTo(axes.x0, 0);&lt;br /&gt;
    ctx.lineTo(axes.x0, ctx.canvas.height);&lt;br /&gt;
    ctx.stroke();&lt;br /&gt;
  };&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
La parte che segue disegna lo sfondo ed il contorno del grafico ed inizializza la posizione degli assi, la scala del grafico e la definizione cioè il numero di pixel usati ad ogni passo della variabile x.&lt;br /&gt;
&lt;br /&gt;
Infine chiama le funzioni precedenti per disegnare gli assi e due delle funzioni di esempio.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  // Preparo il grafico&lt;br /&gt;
  graph.scaleX = 50;           // 50 pixels from x=0 to x=1&lt;br /&gt;
  graph.scaleY = 80;           // 80 pixels from y=0 to y=1&lt;br /&gt;
  graph.step = 2;              // 2 pixels step&lt;br /&gt;
  graph.drawNegative = true;&lt;br /&gt;
&lt;br /&gt;
  // Coloriamo lo sfondo&lt;br /&gt;
  ctx.fillStyle = &amp;quot;lightgreen&amp;quot;;&lt;br /&gt;
  ctx.fillRect(0, 0, canvas.width, canvas.height);&lt;br /&gt;
  // Disegniamo il bordo&lt;br /&gt;
  ctx.strokeStyle = &amp;quot;black&amp;quot;;&lt;br /&gt;
  ctx.strokeRect(0, 0, canvas.width, canvas.height);&lt;br /&gt;
&lt;br /&gt;
  // Preparo gli assi&lt;br /&gt;
  axes.x0 = (canvas.width + 1.) / 2;&lt;br /&gt;
  axes.y0 = (canvas.height + 1.) / 2;&lt;br /&gt;
&lt;br /&gt;
  // visualizzo assi cartesiani&lt;br /&gt;
  showAxes();&lt;br /&gt;
  // disegno funzioni&lt;br /&gt;
  funGraph(fun1,&amp;quot;rgb(11,153,11)&amp;quot;,1); &lt;br /&gt;
  funGraph(fun3,&amp;quot;rgb(66,44,255)&amp;quot;,2);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Evoluzione&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il file grafico2.html contiene una evoluzione del precedente.&lt;br /&gt;
&lt;br /&gt;
Contiene sostanzialmente lo stesso codice, ma inserito in un oggetto che espone 3 metodi. Riscritto in questo modo l'oggetto, inserito nella variabile 'grafico', rende possibile la creazione di più grafici nella stessa pagina.&lt;br /&gt;
&lt;br /&gt;
Il metodo 'attach' da chiamare per primo, associa un tag canvas al grafico e opzionalmente mdifica le variabili di disegno.&lt;br /&gt;
&lt;br /&gt;
Il metodo 'drawAxes' disegna gli assi.&lt;br /&gt;
&lt;br /&gt;
E naturalmente il metodo 'drawGraph' disegna la funzione passata.&lt;/div&gt;</summary>
		<author><name>Mbert</name></author>	</entry>

	<entry>
		<id>https://kata.coderdojo.it/wiki/index.php?title=File:Grafico.zip</id>
		<title>File:Grafico.zip</title>
		<link rel="alternate" type="text/html" href="https://kata.coderdojo.it/wiki/index.php?title=File:Grafico.zip"/>
				<updated>2016-01-24T13:56:09Z</updated>
		
		<summary type="html">&lt;p&gt;Mbert: Tutorial Grafico.html&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Tutorial Grafico.html&lt;/div&gt;</summary>
		<author><name>Mbert</name></author>	</entry>

	<entry>
		<id>https://kata.coderdojo.it/wiki/index.php?title=Earth3D</id>
		<title>Earth3D</title>
		<link rel="alternate" type="text/html" href="https://kata.coderdojo.it/wiki/index.php?title=Earth3D"/>
				<updated>2014-12-17T08:23:49Z</updated>
		
		<summary type="html">&lt;p&gt;Mbert: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= '''La terra in 3D''' =&lt;br /&gt;
&lt;br /&gt;
Come ho pensato lo sviluppo dell'esempio.&lt;br /&gt;
&lt;br /&gt;
Occorre copiare lo zip [[Media:Earth3D.zip|Earth3D.zip]]&amp;amp;nbsp;e il file delle immagini aggiuntive [[Media:Earth3DImmaginiAdd.zip|Earth3DImmaginiAdd.zip]] sulla macchina del coderNinja.&lt;br /&gt;
&lt;br /&gt;
Il file&amp;amp;nbsp;&amp;lt;tt&amp;gt;EarthFinale.html&amp;lt;/tt&amp;gt;&amp;amp;nbsp;è il risultato alla fine del tutorial.&lt;br /&gt;
&lt;br /&gt;
Il file&amp;amp;nbsp;&amp;lt;tt&amp;gt;EarthStart.html&amp;lt;/tt&amp;gt; è la base di partenza e nel seguito faccio riferimento ad esso, in copia qui sotto.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Il Mondoooo&amp;lt;/title&amp;gt;&lt;br /&gt;
	&amp;lt;style&amp;gt;&lt;br /&gt;
		body {&lt;br /&gt;
			margin: 0px;&lt;br /&gt;
			padding: 0px;&lt;br /&gt;
		}&lt;br /&gt;
	&amp;lt;/style&amp;gt;&lt;br /&gt;
	&amp;lt;script src=&amp;quot;js/three.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
	&amp;lt;script src=&amp;quot;js/TrackballControls.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
	&amp;lt;script src=&amp;quot;js/coderDojoLib.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body onload=&amp;quot;start()&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
		var canvas3d, r = 16;&lt;br /&gt;
		function start() {&lt;br /&gt;
			canvas3d = new cdRender3d();&lt;br /&gt;
&lt;br /&gt;
			var geometry = new THREE.SphereGeometry(r, 32, 32);&lt;br /&gt;
			var material  = new THREE.MeshBasicMaterial( { color: 0x0000ff } );&lt;br /&gt;
&lt;br /&gt;
			canvas3d.addMesh(geometry, material);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
			canvas3d.runRender();&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
// 1 Step&lt;br /&gt;
//			var material = new THREE.MeshPhongMaterial();&lt;br /&gt;
//			canvas3d.addLight();&lt;br /&gt;
//			canvas3d.addSpot(0xaf9f8f, 0.3);&lt;br /&gt;
&lt;br /&gt;
// 2 Step&lt;br /&gt;
//			material.map = THREE.ImageUtils.loadTexture('img/earthmap1k.jpg', undefined, canvas3d.getRender());&lt;br /&gt;
//			material.bumpMap = THREE.ImageUtils.loadTexture('img/earthbump1k.jpg', undefined, canvas3d.getRender());&lt;br /&gt;
//			material.bumpScale = 0.6;&lt;br /&gt;
//			material.specularMap = THREE.ImageUtils.loadTexture('img/earthspec1k.jpg', undefined, canvas3d.getRender());&lt;br /&gt;
//			material.specular  = new THREE.Color('grey');&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
// Alternative&lt;br /&gt;
// riga 20		//canvas3d = new cdRender3d({ctrl: true});&lt;br /&gt;
// riga 22&lt;br /&gt;
			//var geometry = new THREE.OctahedronGeometry(r, 0);&lt;br /&gt;
			//var geometry = new THREE.DodecahedronGeometry(r, 0);&lt;br /&gt;
			//var geometry = new THREE.BoxGeometry(r, r, r);&lt;br /&gt;
			//var geometry = new THREE.TorusGeometry( r, 0.4 * r, 32, 64 );&lt;br /&gt;
&lt;br /&gt;
// riga 25		//material.map = THREE.ImageUtils.loadTexture('img/BabyTux.png', undefined, canvas3d.getRender());&lt;br /&gt;
		&lt;br /&gt;
		&lt;br /&gt;
// posizioni GPS di Firenze, Parigi, Londra, New York, Sidney&lt;br /&gt;
		//var parameters = [ &lt;br /&gt;
		//	[ 43.771417, 11.253836, 1.4 ], &lt;br /&gt;
		//	[ 48.859405, 2.353880, 1.1 ],&lt;br /&gt;
		//	[ 51.518809, -0.127056, 1.3 ],&lt;br /&gt;
		//	[ 40.735661, -73.996460, 1.5 ],&lt;br /&gt;
		//	[ -33.849974, 151.208077, 1.2 ],&lt;br /&gt;
		//];&lt;br /&gt;
&lt;br /&gt;
// Riga 45			//canvas3d.addPositions(parameters);&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Partenza ==&lt;br /&gt;
&lt;br /&gt;
Il file base crea una palla o meglio un cerchio blu su sfondo nero.&lt;br /&gt;
&lt;br /&gt;
Cambiando il valore di color alla riga 23 si cambia il colore della palla&lt;br /&gt;
&lt;br /&gt;
== Passo 1) ==&lt;br /&gt;
&lt;br /&gt;
Commento riga 23 e aggiungo la prima riga di step1&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; var material = new THREE.MeshPhongMaterial();&lt;br /&gt;
&lt;br /&gt;
Tutto nero, manca una luce&lt;br /&gt;
&lt;br /&gt;
Aggiungo a riga 28 una luce, la seconda riga di step1&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; canvas3d.addLight();&lt;br /&gt;
&lt;br /&gt;
Ricompare un cerchio (bianco grigio), il colore si può cambiare passando il valore numerico in addLight es: 0xc2 è blu, 0xc20000 è rosso.&lt;br /&gt;
&lt;br /&gt;
In partenza è stato usato un materiale base che ha un colore, adesso usiamo un materiale riflettente, quindi serve una luce per vederlo.&lt;br /&gt;
&lt;br /&gt;
L'impressione è ancora piatta, aggiungiamo un faretto per creare l'effetto 3D con luci e ombre.&lt;br /&gt;
&lt;br /&gt;
Aggiungo a riga 29 un faretto, la terza riga di step1&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; canvas3d.addSpot(0xaf9f8f, 0.3);&lt;br /&gt;
&lt;br /&gt;
Il primo parametro è il colore, il secondo l'intensità.&lt;br /&gt;
&lt;br /&gt;
Notate che il faretto sta ruotando intorno alla sfera.&lt;br /&gt;
&lt;br /&gt;
== Passo 2) ==&lt;br /&gt;
&lt;br /&gt;
Diamo l'aspetto della terra alla sfera.&lt;br /&gt;
&lt;br /&gt;
Aggiungo a riga 25 la texture della terra, la prima riga di step2&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; material.map = THREE.ImageUtils.loadTexture('img/earthmap1k.jpg', undefined, canvas3d.getRender());&lt;br /&gt;
&lt;br /&gt;
Cambiando la riga 20 ovvero aggiungendo il parametro {ctrl: true}, passiamo dalla rotazione automatica a quella manuale.&lt;br /&gt;
&lt;br /&gt;
Trascinando (btn sinistro) il mouse la terra ruota, con la rotella si fa lo zoom.&lt;br /&gt;
&lt;br /&gt;
Aggiungo a riga 26 e 27 la rugosità, la seconda e terza riga di step2&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; material.bumpMap = THREE.ImageUtils.loadTexture('img/earthbump1k.jpg', undefined, canvas3d.getRender());&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; material.bumpScale = 0.6;&lt;br /&gt;
&lt;br /&gt;
Il parametro bumpScale dà la proporzione di 'rugosità' definita nella texture.&lt;br /&gt;
&lt;br /&gt;
Aggiungo a riga 28 e 29 l'effetto specchio, la quarta e quinta riga di step2&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; material.specularMap = THREE.ImageUtils.loadTexture('img/earthspec1k.jpg', undefined, canvas3d.getRender());&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; material.specular = new THREE.Color('grey');&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Alternative ==&lt;br /&gt;
&lt;br /&gt;
Nello step alternative ho messo alcune modifiche oltre al già citato controllo manuale, e ai giochi con i colori&lt;br /&gt;
&lt;br /&gt;
Cambiando la gemetria, dalla sfera al toro ...&lt;br /&gt;
&lt;br /&gt;
Cambiando le texture o cambiando pianeta (le mappe sono prese da [http://planetpixelemporium.com/earth.html http://planetpixelemporium.com/earth.html])&lt;br /&gt;
&lt;br /&gt;
== Step aggiuntivo. ==&lt;br /&gt;
&lt;br /&gt;
Date delle posizioni GPS il comando addPositions le mostra sulla sfera&lt;br /&gt;
[[Category:Javascript|T]]&lt;/div&gt;</summary>
		<author><name>Mbert</name></author>	</entry>

	<entry>
		<id>https://kata.coderdojo.it/wiki/index.php?title=Earth3D</id>
		<title>Earth3D</title>
		<link rel="alternate" type="text/html" href="https://kata.coderdojo.it/wiki/index.php?title=Earth3D"/>
				<updated>2014-12-17T08:21:46Z</updated>
		
		<summary type="html">&lt;p&gt;Mbert: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= '''La terra in 3D''' =&lt;br /&gt;
&lt;br /&gt;
Come ho pensato lo sviluppo dell'esempio.&lt;br /&gt;
&lt;br /&gt;
Occorre copiare lo zip [[Media:Earth3D.zip|Earth3D.zip]]&amp;amp;nbsp;e il file delle immagini aggiuntive [[Media:Earth3DImmaginiAdd.zip|Earth3DImmaginiAdd.zip]] sulla macchina del coderNinja.&lt;br /&gt;
&lt;br /&gt;
Il file&amp;amp;nbsp;&amp;lt;tt&amp;gt;EarthFinale.html&amp;lt;/tt&amp;gt;&amp;amp;nbsp;è il risultato alla fine del tutorial.&lt;br /&gt;
&lt;br /&gt;
Il file&amp;amp;nbsp;&amp;lt;tt&amp;gt;EarthStart.html&amp;lt;/tt&amp;gt; è la base di partenza e nel seguito faccio riferimento ad esso, in copia qui sotto.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Il Mondoooo&amp;lt;/title&amp;gt;&lt;br /&gt;
	&amp;lt;style&amp;gt;&lt;br /&gt;
		body {&lt;br /&gt;
			margin: 0px;&lt;br /&gt;
			padding: 0px;&lt;br /&gt;
		}&lt;br /&gt;
	&amp;lt;/style&amp;gt;&lt;br /&gt;
	&amp;lt;script src=&amp;quot;js/three.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
	&amp;lt;script src=&amp;quot;js/TrackballControls.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
	&amp;lt;script src=&amp;quot;js/coderDojoLib.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body onload=&amp;quot;start()&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
		var canvas3d, r = 16;&lt;br /&gt;
		function start() {&lt;br /&gt;
			canvas3d = new cdRender3d();&lt;br /&gt;
&lt;br /&gt;
			var geometry = new THREE.SphereGeometry(r, 32, 32);&lt;br /&gt;
			var material  = new THREE.MeshBasicMaterial( { color: 0x0000ff } );&lt;br /&gt;
&lt;br /&gt;
			canvas3d.addMesh(geometry, material);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
			canvas3d.runRender();&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
// 1 Step&lt;br /&gt;
//			var material = new THREE.MeshPhongMaterial();&lt;br /&gt;
//			canvas3d.addLight();&lt;br /&gt;
//			canvas3d.addSpot(0xaf9f8f, 0.3);&lt;br /&gt;
&lt;br /&gt;
// 2 Step&lt;br /&gt;
//			material.map = THREE.ImageUtils.loadTexture('img/earthmap1k.jpg', undefined, canvas3d.getRender());&lt;br /&gt;
//			material.bumpMap = THREE.ImageUtils.loadTexture('img/earthbump1k.jpg', undefined, canvas3d.getRender());&lt;br /&gt;
//			material.bumpScale = 0.6;&lt;br /&gt;
//			material.specularMap = THREE.ImageUtils.loadTexture('img/earthspec1k.jpg', undefined, canvas3d.getRender());&lt;br /&gt;
//			material.specular  = new THREE.Color('grey');&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
// Alternative&lt;br /&gt;
// riga 20		//canvas3d = new cdRender3d({ctrl: true});&lt;br /&gt;
// riga 22&lt;br /&gt;
			//var geometry = new THREE.OctahedronGeometry(r, 0);&lt;br /&gt;
			//var geometry = new THREE.DodecahedronGeometry(r, 0);&lt;br /&gt;
			//var geometry = new THREE.BoxGeometry(r, r, r);&lt;br /&gt;
			//var geometry = new THREE.TorusGeometry( r, 0.4 * r, 32, 64 );&lt;br /&gt;
&lt;br /&gt;
// riga 25		//material.map = THREE.ImageUtils.loadTexture('img/BabyTux.png', undefined, canvas3d.getRender());&lt;br /&gt;
		&lt;br /&gt;
		&lt;br /&gt;
// posizioni GPS di Firenze, Parigi, Londra, New York, Sidney&lt;br /&gt;
		//var parameters = [ &lt;br /&gt;
		//	[ 43.771417, 11.253836, 1.4 ], &lt;br /&gt;
		//	[ 48.859405, 2.353880, 1.1 ],&lt;br /&gt;
		//	[ 51.518809, -0.127056, 1.3 ],&lt;br /&gt;
		//	[ 40.735661, -73.996460, 1.5 ],&lt;br /&gt;
		//	[ -33.849974, 151.208077, 1.2 ],&lt;br /&gt;
		//];&lt;br /&gt;
&lt;br /&gt;
// Riga 45			//canvas3d.addPositions(parameters);&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Partenza ==&lt;br /&gt;
&lt;br /&gt;
Il file base crea una palla o meglio un cerchio blu su sfondo nero.&lt;br /&gt;
&lt;br /&gt;
Cambiando il valore di color alla riga 23 si cambia il colore della palla&lt;br /&gt;
&lt;br /&gt;
== Passo 1) ==&lt;br /&gt;
&lt;br /&gt;
Commento riga 23 e aggiungo la prima riga di step1&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; var material = new THREE.MeshPhongMaterial();&lt;br /&gt;
&lt;br /&gt;
Tutto nero, manca una luce&lt;br /&gt;
&lt;br /&gt;
Aggiungo a riga 28 una luce, la seconda riga di step1&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; canvas3d.addLight();&lt;br /&gt;
&lt;br /&gt;
Ricompare un cerchio (bianco grigio), il colore si può cambiare passando il valore numerico in addLight es: 0xc2 è blu, 0xc20000 è rosso.&lt;br /&gt;
&lt;br /&gt;
In partenza è stato usato un materiale base che ha un colore, adesso usiamo un materiale riflettente, quindi serve una luce per vederlo.&lt;br /&gt;
&lt;br /&gt;
L'impressione è ancora piatta, aggiungiamo un faretto per creare l'effetto 3D con luci e ombre.&lt;br /&gt;
&lt;br /&gt;
Aggiungo a riga 29 un faretto, la terza riga di step1&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; canvas3d.addSpot(0xaf9f8f, 0.3);&lt;br /&gt;
&lt;br /&gt;
Il primo parametro è il colore, il secondo l'intensità.&lt;br /&gt;
&lt;br /&gt;
Notate che il faretto sta ruotando intorno alla sfera.&lt;br /&gt;
&lt;br /&gt;
== Passo 2) ==&lt;br /&gt;
&lt;br /&gt;
Diamo l'aspetto della terra alla sfera.&lt;br /&gt;
&lt;br /&gt;
Aggiungo a riga 25 la texture della terra, la prima riga di step2&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; material.map = THREE.ImageUtils.loadTexture('img/earthmap1k.jpg', undefined, canvas3d.getRender());&lt;br /&gt;
&lt;br /&gt;
Cambiando la riga 20 ovvero aggiungendo il parametro {ctrl: true}, passiamo dalla rotazione automatica a quella manuale.&lt;br /&gt;
&lt;br /&gt;
Trascinando (btn sinistro) il mouse la terra ruota, con la rotella si fa lo zoom.&lt;br /&gt;
&lt;br /&gt;
Aggiungo a riga 26 e 27 la rugosità, la seconda e terza riga di step2&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; material.bumpMap = THREE.ImageUtils.loadTexture('img/earthbump1k.jpg', undefined, canvas3d.getRender());&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; material.bumpScale = 0.6;&lt;br /&gt;
&lt;br /&gt;
Il parametro bumpScale dà la proporzione di rugosità definita nella texture.&lt;br /&gt;
&lt;br /&gt;
Aggiungo a riga 28 e 29 l'effetto specchio, la quarta e quinta riga di step2&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; material.specularMap = THREE.ImageUtils.loadTexture('img/earthspec1k.jpg', undefined, canvas3d.getRender());&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; material.specular = new THREE.Color('grey');&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Alternative ==&lt;br /&gt;
&lt;br /&gt;
Nello step alternative ho messo alcune modifiche oltre al già citato controllo manuale, e ai giochi con i colori&lt;br /&gt;
&lt;br /&gt;
Cambiando la gemetria, dalla sfera al toro ...&lt;br /&gt;
&lt;br /&gt;
Cambiando le texture o cambiando pianeta (le mappe sono prese da [http://planetpixelemporium.com/earth.html http://planetpixelemporium.com/earth.html])&lt;br /&gt;
&lt;br /&gt;
== Step aggiuntivo. ==&lt;br /&gt;
&lt;br /&gt;
Date delle posizioni GPS il comando addPositions le mostra sulla sfera&lt;br /&gt;
[[Category:Javascript|T]]&lt;/div&gt;</summary>
		<author><name>Mbert</name></author>	</entry>

	<entry>
		<id>https://kata.coderdojo.it/wiki/index.php?title=File:Earth3DImmaginiAdd.zip</id>
		<title>File:Earth3DImmaginiAdd.zip</title>
		<link rel="alternate" type="text/html" href="https://kata.coderdojo.it/wiki/index.php?title=File:Earth3DImmaginiAdd.zip"/>
				<updated>2014-12-17T08:15:53Z</updated>
		
		<summary type="html">&lt;p&gt;Mbert: Immagini addizionali per giocare sul texture della sfera&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Immagini addizionali per giocare sul texture della sfera&lt;/div&gt;</summary>
		<author><name>Mbert</name></author>	</entry>

	<entry>
		<id>https://kata.coderdojo.it/wiki/index.php?title=File:Earth3D.zip</id>
		<title>File:Earth3D.zip</title>
		<link rel="alternate" type="text/html" href="https://kata.coderdojo.it/wiki/index.php?title=File:Earth3D.zip"/>
				<updated>2014-12-17T08:14:14Z</updated>
		
		<summary type="html">&lt;p&gt;Mbert: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mbert</name></author>	</entry>

	<entry>
		<id>https://kata.coderdojo.it/wiki/index.php?title=Earth3D</id>
		<title>Earth3D</title>
		<link rel="alternate" type="text/html" href="https://kata.coderdojo.it/wiki/index.php?title=Earth3D"/>
				<updated>2014-12-16T12:11:52Z</updated>
		
		<summary type="html">&lt;p&gt;Mbert: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= '''[[Category:Javascript|T]]La terra in 3D''' =&lt;br /&gt;
&lt;br /&gt;
Come ho pensato lo sviluppo dell'esempio.&lt;br /&gt;
&lt;br /&gt;
Occorre copiare lo zip &amp;lt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il file&amp;amp;nbsp;&amp;lt;tt&amp;gt;EarthStart.html&amp;lt;/tt&amp;gt; è la base di partenza e nel seguito faccio riferimento ad esso.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Il Mondoooo&amp;lt;/title&amp;gt;&lt;br /&gt;
	&amp;lt;style&amp;gt;&lt;br /&gt;
		body {&lt;br /&gt;
			margin: 0px;&lt;br /&gt;
			padding: 0px;&lt;br /&gt;
		}&lt;br /&gt;
	&amp;lt;/style&amp;gt;&lt;br /&gt;
	&amp;lt;script src=&amp;quot;js/three.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
	&amp;lt;script src=&amp;quot;js/TrackballControls.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
	&amp;lt;script src=&amp;quot;js/coderDojoLib.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body onload=&amp;quot;start()&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
		var canvas3d, r = 16;&lt;br /&gt;
		function start() {&lt;br /&gt;
			canvas3d = new cdRender3d();&lt;br /&gt;
&lt;br /&gt;
			var geometry = new THREE.SphereGeometry(r, 32, 32);&lt;br /&gt;
			var material  = new THREE.MeshBasicMaterial( { color: 0x0000ff } );&lt;br /&gt;
&lt;br /&gt;
			canvas3d.addMesh(geometry, material);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
			canvas3d.runRender();&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
// 1 Step&lt;br /&gt;
//			var material = new THREE.MeshPhongMaterial();&lt;br /&gt;
//			canvas3d.addLight();&lt;br /&gt;
//			canvas3d.addSpot(0xaf9f8f, 0.3);&lt;br /&gt;
&lt;br /&gt;
// 2 Step&lt;br /&gt;
//			material.map = THREE.ImageUtils.loadTexture('img/earthmap1k.jpg', undefined, canvas3d.getRender());&lt;br /&gt;
//			material.bumpMap = THREE.ImageUtils.loadTexture('img/earthbump1k.jpg', undefined, canvas3d.getRender());&lt;br /&gt;
//			material.bumpScale = 0.6;&lt;br /&gt;
//			material.specularMap = THREE.ImageUtils.loadTexture('img/earthspec1k.jpg', undefined, canvas3d.getRender());&lt;br /&gt;
//			material.specular  = new THREE.Color('grey');&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
// Alternative&lt;br /&gt;
// riga 20		//canvas3d = new cdRender3d({ctrl: true});&lt;br /&gt;
// riga 22&lt;br /&gt;
			//var geometry = new THREE.OctahedronGeometry(r, 0);&lt;br /&gt;
			//var geometry = new THREE.DodecahedronGeometry(r, 0);&lt;br /&gt;
			//var geometry = new THREE.BoxGeometry(r, r, r);&lt;br /&gt;
			//var geometry = new THREE.TorusGeometry( r, 0.4 * r, 32, 64 );&lt;br /&gt;
&lt;br /&gt;
// riga 25		//material.map = THREE.ImageUtils.loadTexture('img/BabyTux.png', undefined, canvas3d.getRender());&lt;br /&gt;
		&lt;br /&gt;
		&lt;br /&gt;
// posizioni GPS di Firenze, Parigi, Londra, New York, Sidney&lt;br /&gt;
		//var parameters = [ &lt;br /&gt;
		//	[ 43.771417, 11.253836, 1.4 ], &lt;br /&gt;
		//	[ 48.859405, 2.353880, 1.1 ],&lt;br /&gt;
		//	[ 51.518809, -0.127056, 1.3 ],&lt;br /&gt;
		//	[ 40.735661, -73.996460, 1.5 ],&lt;br /&gt;
		//	[ -33.849974, 151.208077, 1.2 ],&lt;br /&gt;
		//];&lt;br /&gt;
&lt;br /&gt;
// Riga 45			//canvas3d.addPositions(parameters);&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Partenza ==&lt;br /&gt;
&lt;br /&gt;
Il file base crea una palla o meglio un cerchio blu su sfondo nero.&lt;br /&gt;
&lt;br /&gt;
Cambiando il valore di color alla riga 23 si cambia il colore della palla&lt;br /&gt;
&lt;br /&gt;
== Passo 1) ==&lt;br /&gt;
&lt;br /&gt;
Commento riga 23 e aggiungo la prima riga di step1&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; var material = new THREE.MeshPhongMaterial();&lt;br /&gt;
&lt;br /&gt;
Tutto nero, manca una luce&lt;br /&gt;
&lt;br /&gt;
Aggiungo a riga 28 una luce, la seconda riga di step1&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; canvas3d.addLight();&lt;br /&gt;
&lt;br /&gt;
Ricompare un cerchio (bianco grigio), il colore si può cambiare passando il valore numerico in addLight es: 0xc2 è blu, 0xc20000 è rosso.&lt;br /&gt;
&lt;br /&gt;
In partenza è stato usato un materiale base che ha un colore, adesso usiamo un materiale riflettente, quindi serve una luce per vederlo.&lt;br /&gt;
&lt;br /&gt;
L'impressione è ancora piatta, aggiungiamo un faretto per creare l'effetto 3D con luci e ombre.&lt;br /&gt;
&lt;br /&gt;
Aggiungo a riga 29 un faretto, la terza riga di step1&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; canvas3d.addSpot(0xaf9f8f, 0.3);&lt;br /&gt;
&lt;br /&gt;
Il primo parametro è il colore, il secondo l'intensità.&lt;br /&gt;
&lt;br /&gt;
Notate che il faretto sta ruotando intorno alla sfera.&lt;br /&gt;
&lt;br /&gt;
== Passo 2) ==&lt;br /&gt;
&lt;br /&gt;
Diamo l'aspetto della terra alla sfera.&lt;br /&gt;
&lt;br /&gt;
Aggiungo a riga 25 la texture della terra, la prima riga di step2&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; material.map = THREE.ImageUtils.loadTexture('img/earthmap1k.jpg', undefined, canvas3d.getRender());&lt;br /&gt;
&lt;br /&gt;
Cambiando la riga 20 ovvero aggiungendo il parametro {ctrl: true}, passiamo dalla rotazione automatica a quella manuale.&lt;br /&gt;
&lt;br /&gt;
Trascinando (btn sinistro) il mouse la terra ruota, con la rotella si fa lo zoom.&lt;br /&gt;
&lt;br /&gt;
Aggiungo a riga 26 e 27 la rugosità, la seconda e terza riga di step2&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; material.bumpMap = THREE.ImageUtils.loadTexture('img/earthbump1k.jpg', undefined, canvas3d.getRender());&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; material.bumpScale = 0.6;&lt;br /&gt;
&lt;br /&gt;
Il parametro bumpScale dà la proporzione di rugosità definita nella texture.&lt;br /&gt;
&lt;br /&gt;
Aggiungo a riga 28 e 29 l'effetto specchio, la quarta e quinta riga di step2&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; material.specularMap = THREE.ImageUtils.loadTexture('img/earthspec1k.jpg', undefined, canvas3d.getRender());&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; material.specular = new THREE.Color('grey');&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Alternative ==&lt;br /&gt;
&lt;br /&gt;
Nello step alternative ho messo alcune modifiche oltre al già citato controllo manuale, e ai giochi con i colori&lt;br /&gt;
&lt;br /&gt;
Cambiando la gemetria, dalla sfera al toro ...&lt;br /&gt;
&lt;br /&gt;
Cambiando le texture o cambiando pianeta (le mappe sono prese da [http://planetpixelemporium.com/earth.html http://planetpixelemporium.com/earth.html])&lt;br /&gt;
&lt;br /&gt;
== Step aggiuntivo. ==&lt;br /&gt;
&lt;br /&gt;
Date delle posizioni GPS il comando addPositions le mostra sulla sfera&lt;/div&gt;</summary>
		<author><name>Mbert</name></author>	</entry>

	<entry>
		<id>https://kata.coderdojo.it/wiki/index.php?title=Earth3D</id>
		<title>Earth3D</title>
		<link rel="alternate" type="text/html" href="https://kata.coderdojo.it/wiki/index.php?title=Earth3D"/>
				<updated>2014-12-16T11:01:17Z</updated>
		
		<summary type="html">&lt;p&gt;Mbert: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= '''La terra in 3D''' =&lt;br /&gt;
&lt;br /&gt;
Come ho pensato lo sviluppo dell'esempio.&lt;br /&gt;
&lt;br /&gt;
Occorre copiare lo zip &amp;lt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il file&amp;amp;nbsp;&amp;lt;tt&amp;gt;EarthStart.html&amp;lt;/tt&amp;gt; è la base di partenza e nel seguito faccio riferimento ad esso.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Il Mondoooo&amp;lt;/title&amp;gt;&lt;br /&gt;
	&amp;lt;style&amp;gt;&lt;br /&gt;
		body {&lt;br /&gt;
			margin: 0px;&lt;br /&gt;
			padding: 0px;&lt;br /&gt;
		}&lt;br /&gt;
	&amp;lt;/style&amp;gt;&lt;br /&gt;
	&amp;lt;script src=&amp;quot;js/three.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
	&amp;lt;script src=&amp;quot;js/TrackballControls.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
	&amp;lt;script src=&amp;quot;js/coderDojoLib.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body onload=&amp;quot;start()&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
		var canvas3d, r = 16;&lt;br /&gt;
		function start() {&lt;br /&gt;
			canvas3d = new cdRender3d();&lt;br /&gt;
&lt;br /&gt;
			var geometry = new THREE.SphereGeometry(r, 32, 32);&lt;br /&gt;
			var material  = new THREE.MeshBasicMaterial( { color: 0x0000ff } );&lt;br /&gt;
&lt;br /&gt;
			canvas3d.addMesh(geometry, material);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
			canvas3d.runRender();&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
// 1 Step&lt;br /&gt;
//			var material = new THREE.MeshPhongMaterial();&lt;br /&gt;
//			canvas3d.addLight();&lt;br /&gt;
//			canvas3d.addSpot(0xaf9f8f, 0.3);&lt;br /&gt;
&lt;br /&gt;
// 2 Step&lt;br /&gt;
//			material.map = THREE.ImageUtils.loadTexture('img/earthmap1k.jpg', undefined, canvas3d.getRender());&lt;br /&gt;
//			material.bumpMap = THREE.ImageUtils.loadTexture('img/earthbump1k.jpg', undefined, canvas3d.getRender());&lt;br /&gt;
//			material.bumpScale = 0.6;&lt;br /&gt;
//			material.specularMap = THREE.ImageUtils.loadTexture('img/earthspec1k.jpg', undefined, canvas3d.getRender());&lt;br /&gt;
//			material.specular  = new THREE.Color('grey');&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
// Alternative&lt;br /&gt;
// riga 20		//canvas3d = new cdRender3d({ctrl: true});&lt;br /&gt;
// riga 22&lt;br /&gt;
			//var geometry = new THREE.OctahedronGeometry(r, 0);&lt;br /&gt;
			//var geometry = new THREE.DodecahedronGeometry(r, 0);&lt;br /&gt;
			//var geometry = new THREE.BoxGeometry(r, r, r);&lt;br /&gt;
			//var geometry = new THREE.TorusGeometry( r, 0.4 * r, 32, 64 );&lt;br /&gt;
&lt;br /&gt;
// riga 25		//material.map = THREE.ImageUtils.loadTexture('img/BabyTux.png', undefined, canvas3d.getRender());&lt;br /&gt;
		&lt;br /&gt;
		&lt;br /&gt;
// posizioni GPS di Firenze, Parigi, Londra, New York, Sidney&lt;br /&gt;
		//var parameters = [ &lt;br /&gt;
		//	[ 43.771417, 11.253836, 1.4 ], &lt;br /&gt;
		//	[ 48.859405, 2.353880, 1.1 ],&lt;br /&gt;
		//	[ 51.518809, -0.127056, 1.3 ],&lt;br /&gt;
		//	[ 40.735661, -73.996460, 1.5 ],&lt;br /&gt;
		//	[ -33.849974, 151.208077, 1.2 ],&lt;br /&gt;
		//];&lt;br /&gt;
&lt;br /&gt;
// Riga 45			//canvas3d.addPositions(parameters);&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Partenza ==&lt;br /&gt;
&lt;br /&gt;
Il file base crea una palla o meglio un cerchio blu su sfondo nero.&lt;br /&gt;
&lt;br /&gt;
Cambiando il valore di color alla riga 23 si cambia il colore della palla&lt;br /&gt;
&lt;br /&gt;
== Passo 1) ==&lt;br /&gt;
&lt;br /&gt;
Commento riga 23 e aggiungo la prima riga di step1&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; var material = new THREE.MeshPhongMaterial();&lt;br /&gt;
&lt;br /&gt;
Tutto nero, manca una luce&lt;br /&gt;
&lt;br /&gt;
Aggiungo a riga 28 una luce, la seconda riga di step1&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; canvas3d.addLight();&lt;br /&gt;
&lt;br /&gt;
Ricompare un cerchio (bianco grigio), il colore si può cambiare passando il valore numerico in addLight es: 0xc2 è blu, 0xc20000 è rosso.&lt;br /&gt;
&lt;br /&gt;
In partenza è stato usato un materiale base che ha un colore, adesso usiamo un materiale riflettente, quindi serve una luce per vederlo.&lt;br /&gt;
&lt;br /&gt;
L'impressione è ancora piatta, aggiungiamo un faretto per creare l'effetto 3D con luci e ombre.&lt;br /&gt;
&lt;br /&gt;
Aggiungo a riga 29 un faretto, la terza riga di step1&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; canvas3d.addSpot(0xaf9f8f, 0.3);&lt;br /&gt;
&lt;br /&gt;
Il primo parametro è il colore, il secondo l'intensità.&lt;br /&gt;
&lt;br /&gt;
Notate che il faretto sta ruotando intorno alla sfera.&lt;br /&gt;
&lt;br /&gt;
== Passo 2) ==&lt;br /&gt;
&lt;br /&gt;
Diamo l'aspetto della terra alla sfera.&lt;br /&gt;
&lt;br /&gt;
Aggiungo a riga 25 la texture della terra, la prima riga di step2&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; material.map = THREE.ImageUtils.loadTexture('img/earthmap1k.jpg', undefined, canvas3d.getRender());&lt;br /&gt;
&lt;br /&gt;
Cambiando la riga 20 ovvero aggiungendo il parametro {ctrl: true}, passiamo dalla rotazione automatica a quella manuale.&lt;br /&gt;
&lt;br /&gt;
Trascinando (btn sinistro) il mouse la terra ruota, con la rotella si fa lo zoom.&lt;br /&gt;
&lt;br /&gt;
Aggiungo a riga 26 e 27 la rugosità, la seconda e terza riga di step2&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; material.bumpMap = THREE.ImageUtils.loadTexture('img/earthbump1k.jpg', undefined, canvas3d.getRender());&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; material.bumpScale = 0.6;&lt;br /&gt;
&lt;br /&gt;
Il parametro bumpScale dà la proporzione di rugosità definita nella texture.&lt;br /&gt;
&lt;br /&gt;
Aggiungo a riga 28 e 29 l'effetto specchio, la quarta e quinta riga di step2&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; material.specularMap = THREE.ImageUtils.loadTexture('img/earthspec1k.jpg', undefined, canvas3d.getRender());&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; material.specular = new THREE.Color('grey');&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Alternative ==&lt;br /&gt;
&lt;br /&gt;
Nello step alternative ho messo alcune modifiche oltre al già citato controllo manuale, e ai giochi con i colori&lt;br /&gt;
&lt;br /&gt;
Cambiando la gemetria, dalla sfera al toro ...&lt;br /&gt;
&lt;br /&gt;
Cambiando le texture o cambiando pianeta (le mappe sono prese da [http://planetpixelemporium.com/earth.html http://planetpixelemporium.com/earth.html])&lt;br /&gt;
&lt;br /&gt;
== Step aggiuntivo. ==&lt;br /&gt;
&lt;br /&gt;
Date delle posizioni GPS il comando addPositions le mostra sulla sfera&lt;/div&gt;</summary>
		<author><name>Mbert</name></author>	</entry>

	<entry>
		<id>https://kata.coderdojo.it/wiki/index.php?title=Earth3D</id>
		<title>Earth3D</title>
		<link rel="alternate" type="text/html" href="https://kata.coderdojo.it/wiki/index.php?title=Earth3D"/>
				<updated>2014-12-16T10:48:06Z</updated>
		
		<summary type="html">&lt;p&gt;Mbert: Creata pagina con &amp;quot;= '''La terra in 3D''' =  Come ho pensato lo sviluppo dell'esempio.  Occorre copiare lo zip &amp;lt;&amp;gt;  Il file&amp;amp;nbsp;&amp;lt;tt&amp;gt;EarthStart.html&amp;lt;/tt&amp;gt; è la base di partenza e nel seguito facc...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= '''La terra in 3D''' =&lt;br /&gt;
&lt;br /&gt;
Come ho pensato lo sviluppo dell'esempio.&lt;br /&gt;
&lt;br /&gt;
Occorre copiare lo zip &amp;lt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il file&amp;amp;nbsp;&amp;lt;tt&amp;gt;EarthStart.html&amp;lt;/tt&amp;gt; è la base di partenza e nel seguito faccio riferimento ad esso.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Il Mondoooo&amp;lt;/title&amp;gt;&lt;br /&gt;
	&amp;lt;style&amp;gt;&lt;br /&gt;
		body {&lt;br /&gt;
			margin: 0px;&lt;br /&gt;
			padding: 0px;&lt;br /&gt;
		}&lt;br /&gt;
	&amp;lt;/style&amp;gt;&lt;br /&gt;
	&amp;lt;script src=&amp;quot;js/three.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
	&amp;lt;script src=&amp;quot;js/TrackballControls.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
	&amp;lt;script src=&amp;quot;js/coderDojoLib.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body onload=&amp;quot;start()&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
		var canvas3d, r = 16;&lt;br /&gt;
		function start() {&lt;br /&gt;
			canvas3d = new cdRender3d();&lt;br /&gt;
&lt;br /&gt;
			var geometry = new THREE.SphereGeometry(r, 32, 32);&lt;br /&gt;
			var material  = new THREE.MeshBasicMaterial( { color: 0x0000ff } );&lt;br /&gt;
&lt;br /&gt;
			canvas3d.addMesh(geometry, material);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
			canvas3d.runRender();&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
// 1 Step&lt;br /&gt;
//			var material = new THREE.MeshPhongMaterial();&lt;br /&gt;
//			canvas3d.addLight();&lt;br /&gt;
//			canvas3d.addSpot(0xaf9f8f, 0.3);&lt;br /&gt;
&lt;br /&gt;
// 2 Step&lt;br /&gt;
//			material.map = THREE.ImageUtils.loadTexture('img/earthmap1k.jpg', undefined, canvas3d.getRender());&lt;br /&gt;
//			material.bumpMap = THREE.ImageUtils.loadTexture('img/earthbump1k.jpg', undefined, canvas3d.getRender());&lt;br /&gt;
//			material.bumpScale = 0.6;&lt;br /&gt;
//			material.specularMap = THREE.ImageUtils.loadTexture('img/earthspec1k.jpg', undefined, canvas3d.getRender());&lt;br /&gt;
//			material.specular  = new THREE.Color('grey');&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
// Alternative&lt;br /&gt;
// riga 20		//canvas3d = new cdRender3d({ctrl: true});&lt;br /&gt;
// riga 22&lt;br /&gt;
			//var geometry = new THREE.OctahedronGeometry(r, 0);&lt;br /&gt;
			//var geometry = new THREE.DodecahedronGeometry(r, 0);&lt;br /&gt;
			//var geometry = new THREE.BoxGeometry(r, r, r);&lt;br /&gt;
			//var geometry = new THREE.TorusGeometry( r, 0.4 * r, 32, 64 );&lt;br /&gt;
&lt;br /&gt;
// riga 25		//material.map = THREE.ImageUtils.loadTexture('img/BabyTux.png', undefined, canvas3d.getRender());&lt;br /&gt;
		&lt;br /&gt;
		&lt;br /&gt;
// posizioni GPS di Firenze, Parigi, Londra, New York, Sidney&lt;br /&gt;
		//var parameters = [ &lt;br /&gt;
		//	[ 43.771417, 11.253836, 1.4 ], &lt;br /&gt;
		//	[ 48.859405, 2.353880, 1.1 ],&lt;br /&gt;
		//	[ 51.518809, -0.127056, 1.3 ],&lt;br /&gt;
		//	[ 40.735661, -73.996460, 1.5 ],&lt;br /&gt;
		//	[ -33.849974, 151.208077, 1.2 ],&lt;br /&gt;
		//];&lt;br /&gt;
&lt;br /&gt;
// Riga 45			//canvas3d.addPositions(parameters);&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/tt&amp;gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mbert</name></author>	</entry>

	</feed>