<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://cygal.info/blog/index.php/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
  <title>Dissidents - Qt</title>
  <link>http://cygal.info/blog/index.php/</link>
  <description></description>
  <language>fr</language>
  <pubDate>Sat, 20 Sep 2008 15:04:06 +0200</pubDate>
  <copyright></copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Superformula</title>
    <link>http://cygal.info/blog/index.php/post/2007/05/21/Superformula</link>
    <guid isPermaLink="false">urn:md5:419bf4973247e5ac8a52935ce2c9b5ab</guid>
    <pubDate>Mon, 21 May 2007 17:15:00 +0200</pubDate>
    <dc:creator>lasts</dc:creator>
        <category>Algo</category>
        <category>Qt</category>    
    <description>&lt;p&gt;Dans la continuité du Perlin Noise, une formule magique pour générer des courbes capables d'imiter celles qu'on trouve dans la nature (selon son inventeur, Johan Gielis, un biologiste à la con qui a généralisé le principe des &lt;a href=&quot;http://en.wikipedia.org/wiki/Superellipse&quot; hreflang=&quot;en&quot;&gt;superellipses&lt;/a&gt;).&lt;/p&gt;    &lt;p&gt;La formule permet de déterminer en coordonnées polaires (rayon, angle) le point de la courbe en fonction de six paramètres (&lt;code&gt;a&lt;/code&gt;, &lt;code&gt;b&lt;/code&gt;, &lt;code&gt;m&lt;/code&gt;, &lt;code&gt;n1&lt;/code&gt;, &lt;code&gt;n2&lt;/code&gt; et &lt;code&gt;n3&lt;/code&gt;). A vue de nez, les paramètres &lt;code&gt;a&lt;/code&gt; et &lt;code&gt;b&lt;/code&gt; déterminent la forme générale (cercle / ellipse) tandis qu'&lt;code&gt;m&lt;/code&gt; influence plutôt le nombre de pics. 'Fin bref, c'est pas très compliqué, les intérêts sont multiples, typiquement pour stoquer des formes complexes dans un format léger ou avoir des courbes esthétiques à disposition.&lt;/p&gt;
&lt;div class=&quot;centre&quot;&gt;&lt;img src=&quot;http://upload.wikimedia.org/math/9/3/2/932649147ef032f63b06bafbd22d2554.png&quot; /&gt;&lt;/div&gt;
&lt;p&gt;La &lt;a hreflang=&quot;en&quot; href=&quot;http://en.wikipedia.org/wiki/Superformula&quot;&gt;page wikipedia&lt;/a&gt; fournit également des exemples de valeurs à donner aux paramètres &lt;code&gt;m&lt;/code&gt;, &lt;code&gt;n1/2/3&lt;/code&gt; (avec &lt;code&gt;a = b = 1&lt;/code&gt;).&lt;/p&gt;
&lt;div class=&quot;centre&quot;&gt;&lt;img src=&quot;http://upload.wikimedia.org/wikipedia/commons/1/1c/Superformula.gif&quot; /&gt;&lt;/div&gt;
&lt;p&gt;Et la &lt;a href=&quot;http://lasts.goldzoneweb.info/superformula/&quot;&gt;source en c++/qt (ainsi que des screenshots)&lt;/a&gt; fait maison pour expérimenter un peu dans son coin (super, super, me direz vous; la suite en 3d sera pour un autre jour).&lt;/p&gt;</description>
    
    
    
          <comments>http://cygal.info/blog/index.php/post/2007/05/21/Superformula#comment-form</comments>
      <wfw:comment>http://cygal.info/blog/index.php/post/2007/05/21/Superformula#comment-form</wfw:comment>
      <wfw:commentRss>http://cygal.info/blog/index.php/feed/rss2/comments/9</wfw:commentRss>
      </item>
    
  <item>
    <title>Perlin Noise</title>
    <link>http://cygal.info/blog/index.php/post/2007/05/20/9-perlin-noise</link>
    <guid isPermaLink="false">urn:md5:a30352832708821465313ab45ae7b56a</guid>
    <pubDate>Sun, 20 May 2007 16:12:37 +0000</pubDate>
    <dc:creator>lasts</dc:creator>
        <category>Algo</category>
        <category>Qt</category>    
    <description>&lt;p&gt;Ou comment générer des courbes aléatoires jolies qui peuvent servir à un peu n'importe quoi, comme fabriquer des textures à bas prix, dessiner des trucs qu'on dirait que ça a été fait à la main ou générer des terrains / nuages à la &lt;a href=&quot;http://fr.wikipedia.org/wiki/Terragen&quot;&gt;terragen&lt;/a&gt;. Bref, une réponse possible à la question du réalisme en informatique dans des domaines assez diversifiés.&lt;/p&gt;    &lt;p&gt;Le Perlin Noise (ouais, ça veut dire bruit de Perlin, mais merde) est une fractale qui permet de rendre plus naturelle une série aléatoire. Le principe est assez simple : prendez &lt;code&gt;n&lt;/code&gt; valeurs aléatoires oscillant entre &lt;code&gt;0&lt;/code&gt; et &lt;code&gt;k&lt;/code&gt; et interpolez-les. Vous obtenez un résultat immonde et somme toute très banal. Re-prendez &lt;code&gt;2*n&lt;/code&gt; valeurs aléatoires oscillant entre &lt;code&gt;0&lt;/code&gt; et &lt;code&gt;k/2&lt;/code&gt; et interpolez-les. Ajoutez le résultat obtenu à la courbe précédente. Recommencez autant de fois que voulu. Servir chaud.&lt;/p&gt;

&lt;div class=&quot;centre&quot;&gt;
&lt;img src=&quot;http://freespace.virgin.net/hugo.elias/models/prln_c1.gif&quot; /&gt; +
&lt;img src=&quot;http://freespace.virgin.net/hugo.elias/models/prln_c2.gif&quot; /&gt; +
&lt;img src=&quot;http://freespace.virgin.net/hugo.elias/models/prln_c3.gif&quot; /&gt; +
&lt;img src=&quot;http://freespace.virgin.net/hugo.elias/models/prln_c4.gif&quot; /&gt; +
&lt;img src=&quot;http://freespace.virgin.net/hugo.elias/models/prln_c5.gif&quot; /&gt; +
&lt;img src=&quot;http://freespace.virgin.net/hugo.elias/models/prln_c6.gif&quot; /&gt; =
&lt;img src=&quot;http://freespace.virgin.net/hugo.elias/models/prln_cr.gif&quot; /&gt;
&lt;/div&gt;

&lt;p&gt;Bien, on reprends avec des vrais mots : appelons &lt;code&gt;n&lt;/code&gt; la fréquence et &lt;code&gt;k&lt;/code&gt; l'amplitude. Plus l'amplitude diminue, moins la courbe a d'influence sur le résultat final. Plus la fréquence augmente, plus la courbe est saccadée. On arrête naturellement l'itération lorsque l'amplitude est trop faible pour être visible.&lt;/p&gt;

&lt;p&gt;Concernant le passage sur l'interpolation, juste histoire de vous rafraîchir la mémoire : l'interpolation consiste à construire une courbe à partir de n points donnés. On citera notamment l'interpolation linéaire, qui consiste à relier chaque point par une ligne, l'interpolation sinusoïdale (la même chose, avec des sinus, si si), cubique ou lagrangienne (mais en pratique, tout le monde vous dira de favoriser l'avant-dernière).&lt;/p&gt;

&lt;div class=&quot;centre&quot;&gt;
&lt;img src=&quot;http://freespace.virgin.net/hugo.elias/models/m_inter1.gif&quot; /&gt;
&lt;img src=&quot;http://freespace.virgin.net/hugo.elias/models/m_inter2.gif&quot; /&gt;
&lt;img src=&quot;http://freespace.virgin.net/hugo.elias/models/m_inter4.gif&quot; /&gt;&lt;br /&gt;
linéaire / sinusoïdale / cubique
&lt;/div&gt;

&lt;div class=&quot;flot_droite&quot;&gt;&lt;a href=&quot;http://cygal.info/blog/images/algos/noise_2.jpg&quot;&gt;&lt;img src=&quot;http://cygal.info/blog/images/algos/noise_thumb.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Le perlin noise en une dimension, c'est déjà super pratique pour tracer des traits à la main informatiquement (principe qui est notamment utilisé dans l'industrie logiciel pour donner un coté esquisse à l'apparence des gui et bien faire comprendre aux clients que le produit qu'ils voient n'est pas terminé - cf &lt;a href=&quot;http://mrl.nyu.edu/~meyer/projects/etchapad/lines.html&quot;&gt;Creating Informal Looking Interfaces&lt;/a&gt;). Lorsqu'on bascule en 2d, ça permet de générer des textures originales qui rendent super bien (marbre, bois, whatever en fait, il suffit d'appliquer un filtre sur le rendu) et qui ne consomment pas des masses. Lorsqu'on bascule en 3d, ça permet de donner plus de consistance à une map, à faire des &lt;a href=&quot;http://freespace.virgin.net/hugo.elias/models/m_clouds.htm&quot;&gt;jolis nuages&lt;/a&gt;, etc.&lt;/p&gt;

&lt;p&gt;Et pour conclure, une &lt;a href=&quot;http://lasts.goldzoneweb.info/perlin_noise/perlin_noise.zip&quot;&gt;implémentation en c++/qt&lt;/a&gt; vraiment lente ainsi qu'un &lt;a href=&quot;http://freespace.virgin.net/hugo.elias/models/m_perlin.htm&quot;&gt;joli lien&lt;/a&gt; vers un monsieur qui en parle mieux que moi (ouais, c'est minable comme redirection, le but était juste de vous présenter le concept).&lt;/p&gt;

&lt;p&gt;A noter que ça donne des &lt;a href=&quot;http://lasts.goldzoneweb.info/perlin_noise/noise_1.jpg&quot;&gt;bugs intéressants&lt;/a&gt; aussi.&lt;/p&gt;</description>
    
    
    
          <comments>http://cygal.info/blog/index.php/post/2007/05/20/9-perlin-noise#comment-form</comments>
      <wfw:comment>http://cygal.info/blog/index.php/post/2007/05/20/9-perlin-noise#comment-form</wfw:comment>
      <wfw:commentRss>http://cygal.info/blog/index.php/feed/rss2/comments/8</wfw:commentRss>
      </item>
    
</channel>
</rss>