mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-03-07 20:31:51 +09:00
1114 lines
74 KiB
HTML
1114 lines
74 KiB
HTML
<!DOCTYPE html>
|
||
<!--<html manifest="/manifest.appcache">-->
|
||
<html class="gr__joise_sudoplaygames_com"><script type="text/javascript" charset="utf-8" id="zm-extension" src="Modules_files/webrtc-patch.js" async=""></script><head>
|
||
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
||
<meta charset="utf-8">
|
||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||
<title>Modules</title>
|
||
<meta name="viewport" content="width=device-width">
|
||
<meta name="description" content="SudoPlay Games is a small, independent game studio located in Oregon, USA.">
|
||
<link rel="canonical" href="http://www.sudoplaygames.com/modules/">
|
||
|
||
<link href="Modules_files/css_002.css" rel="stylesheet" type="text/css">
|
||
<link href="Modules_files/css.css" rel="stylesheet" type="text/css">
|
||
<link rel="stylesheet" href="Modules_files/font-awesome.css">
|
||
<link rel="stylesheet" href="Modules_files/bootstrap.css">
|
||
<link rel="stylesheet" href="Modules_files/colorbox.css">
|
||
<link rel="stylesheet" href="Modules_files/bootstrap-toc.css">
|
||
|
||
<!-- Custom Site CSS -->
|
||
<link rel="stylesheet" href="Modules_files/main.css">
|
||
<link rel="stylesheet" href="Modules_files/custom.css">
|
||
|
||
<!-- Javascripts -->
|
||
<script src="Modules_files/jquery_002.js"></script>
|
||
<script src="Modules_files/bootstrap.js"></script>
|
||
<script src="Modules_files/jquery.js"></script>
|
||
<script src="Modules_files/bootstrap-toc.js"></script>
|
||
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
||
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
|
||
<!--[if lt IE 9]>
|
||
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
|
||
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
|
||
<![endif]-->
|
||
|
||
<!--[if !IE 7]>
|
||
<style type="text/css">
|
||
#wrap {display:table;height:100%}
|
||
</style>
|
||
<![endif]-->
|
||
|
||
</head>
|
||
|
||
|
||
<body data-spy="scroll" data-target="#toc" data-offset="16" data-gr-c-s-loaded="true">
|
||
|
||
<!-- Fixed navbar -->
|
||
<div class="navbar navbar-default navbar-fixed-top" role="navigation">
|
||
<div class="container">
|
||
<div class="navbar-header">
|
||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
|
||
<span class="sr-only">Toggle navigation</span>
|
||
<span class="icon-bar"></span>
|
||
<span class="icon-bar"></span>
|
||
<span class="icon-bar"></span>
|
||
</button>
|
||
<img class="brand-logo hidden-sm hidden-xs" src="Modules_files/joise-logo-small.png">
|
||
<img class="brand-logo visible-sm-inline visible-xs-inline" src="Modules_files/joise-logo-xs.png">
|
||
<a class="brand-text" href="https://joise.sudoplaygames.com/">
|
||
Joise
|
||
</a>
|
||
</div>
|
||
<div class="navbar-collapse collapse">
|
||
<ul class="nav navbar-nav navbar-right">
|
||
<!-- Home -->
|
||
<!--
|
||
<li>
|
||
<a href="/">
|
||
<i class="fa fa-home fa-lg" aria-hidden="true"></i> Home</a>
|
||
</li>
|
||
-->
|
||
|
||
<!-- Forum -->
|
||
<!--<li>
|
||
<a href="http://discourse.sudoplaygames.com">
|
||
<i class="fa fa-comments fa-lg"></i> Forum</a>
|
||
</li>-->
|
||
|
||
<!-- Quick Start -->
|
||
<li>
|
||
<a href="https://joise.sudoplaygames.com/quick-start/">
|
||
<i class="fa fa-rocket fa-lg" aria-hidden="true"></i> Quick Start</a>
|
||
</li>
|
||
|
||
<!-- Guide -->
|
||
<li>
|
||
<a href="https://joise.sudoplaygames.com/guide/">
|
||
<i class="fa fa-book fa-lg" aria-hidden="true"></i> Guide</a>
|
||
</li>
|
||
|
||
<!-- Modules -->
|
||
<li class="active">
|
||
<a href="https://joise.sudoplaygames.com/modules/">
|
||
<i class="fa fa-cubes fa-lg" aria-hidden="true"></i> Modules</a>
|
||
</li>
|
||
|
||
<!-- Source -->
|
||
<li class="active"></li><li>
|
||
<a href="https://github.com/SudoPlayGames/Joise">
|
||
<i class="fa fa-github fa-lg" aria-hidden="true"></i> Source</a>
|
||
</li>
|
||
|
||
</ul>
|
||
</div><!--/.navbar-collapse -->
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
<div class="main-container">
|
||
<header class="page-header">
|
||
<div class="wrap row">
|
||
<div class="col-md-12">
|
||
<h1>Modules</h1>
|
||
<p class="lead">A deeper analysis of how to use each module.</p>
|
||
</div>
|
||
</div>
|
||
</header>
|
||
<div class="wrap row">
|
||
<div class="page container">
|
||
|
||
<div class="row">
|
||
|
||
<div class="col-md-9">
|
||
|
||
<article class="page-content">
|
||
<p>All of the illustrations below are from examples that can be found in the source in the following location:</p>
|
||
|
||
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/src/examples/java/com/sudoplay/joise/examples/
|
||
</code></pre></div></div>
|
||
|
||
<p>These are the core modules of the Joise library. All modules have been ported from <a href="http://accidentalnoise.sourceforge.net/implicit.html" target="_blank">Joshua Tippetts’ C++ Accidental Noise Library</a>.</p>
|
||
|
||
<h2 id="modulebasisfunction">ModuleBasisFunction</h2>
|
||
|
||
<p>The <code class="highlighter-rouge">ModuleBasisFunction</code> generates noise using one of five different <code class="highlighter-rouge">BasisTypes</code> and one of four different <code class="highlighter-rouge">InterpolationTypes</code>.</p>
|
||
|
||
<p>The following examples illustrate each basis type with the four differnent interpolation types.</p>
|
||
|
||
<h3 id="basistypegradient">BasisType.GRADIENT</h3>
|
||
|
||
<p><img src="Modules_files/gradient_002.png" class="img-responsive"></p>
|
||
|
||
<p>Gradient noise is essentially Perlin’s original noise function. This
|
||
implementation of gradient noise will return the value 0 at the lattice
|
||
points, therefore sampling at integer intervals (ie. 0, 1, 2, 3, etc.)
|
||
will result in a consistent output of 0. This noise, depending on the
|
||
application, may suffer from visually significant directional artifacts
|
||
or grid-oriented artifacts.</p>
|
||
|
||
<h3 id="basistypegradval">BasisType.GRADVAL</h3>
|
||
|
||
<p><img src="Modules_files/gradval.png" class="img-responsive"></p>
|
||
|
||
<p>Gradval noise is an addition of gradient and value noise designed to
|
||
reduce the visual artifacts apparent in gradient noise. Since both
|
||
gradient and value noise is bound to the grid, artifacts can still
|
||
occur.</p>
|
||
|
||
<h3 id="basistypesimplex">BasisType.SIMPLEX</h3>
|
||
|
||
<p><img src="Modules_files/simplex.png" class="img-responsive"></p>
|
||
|
||
<p>Simplex noise is a form of Perlin’s improved noise function.</p>
|
||
|
||
<p>For more information, see: <a href="https://en.wikipedia.org/wiki/Simplex_noise">Simplex Noise</a>.</p>
|
||
|
||
<h3 id="basistypevalue">BasisType.VALUE</h3>
|
||
|
||
<p><img src="Modules_files/value.png" class="img-responsive"></p>
|
||
|
||
<p>Value noise creates a lattice of points which are assigned random
|
||
values, then returns an interpolated value based on the values of the
|
||
lattice points surrounding the input coordinates.</p>
|
||
|
||
<h3 id="basistypewhite">BasisType.WHITE</h3>
|
||
|
||
<p><img src="Modules_files/white.png" class="img-responsive"></p>
|
||
|
||
<p>White noise generates no coherent pattern whatsoever.</p>
|
||
|
||
<h3 id="example-code">Example Code</h3>
|
||
|
||
<p>Here is a snippet from the example:</p>
|
||
|
||
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">...</span>
|
||
|
||
<span class="kd">protected</span> <span class="n">Module</span> <span class="nf">createModuleBasisFunction</span><span class="o">(</span>
|
||
<span class="n">ModuleBasisFunction</span><span class="o">.</span><span class="na">BasisType</span> <span class="n">basisType</span><span class="o">,</span>
|
||
<span class="n">ModuleBasisFunction</span><span class="o">.</span><span class="na">InterpolationType</span> <span class="n">interpolationType</span>
|
||
<span class="o">)</span> <span class="o">{</span>
|
||
|
||
<span class="n">ModuleBasisFunction</span> <span class="n">moduleBasisFunction</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModuleBasisFunction</span><span class="o">();</span>
|
||
<span class="n">moduleBasisFunction</span><span class="o">.</span><span class="na">setType</span><span class="o">(</span><span class="n">basisType</span><span class="o">);</span>
|
||
<span class="n">moduleBasisFunction</span><span class="o">.</span><span class="na">setInterpolation</span><span class="o">(</span><span class="n">interpolationType</span><span class="o">);</span>
|
||
<span class="n">moduleBasisFunction</span><span class="o">.</span><span class="na">setSeed</span><span class="o">(</span><span class="mi">42</span><span class="o">);</span>
|
||
|
||
<span class="cm">/**
|
||
* We auto-correct into the range [0, 1].
|
||
*/</span>
|
||
<span class="n">ModuleAutoCorrect</span> <span class="n">moduleAutoCorrect</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModuleAutoCorrect</span><span class="o">(</span><span class="mi">0</span><span class="o">,</span> <span class="mi">1</span><span class="o">);</span>
|
||
<span class="n">moduleAutoCorrect</span><span class="o">.</span><span class="na">setSource</span><span class="o">(</span><span class="n">moduleBasisFunction</span><span class="o">);</span>
|
||
<span class="n">moduleAutoCorrect</span><span class="o">.</span><span class="na">setSamples</span><span class="o">(</span><span class="mi">10000</span><span class="o">);</span>
|
||
<span class="n">moduleAutoCorrect</span><span class="o">.</span><span class="na">calculate2D</span><span class="o">();</span>
|
||
|
||
<span class="cm">/**
|
||
* We scale the domain to see more of the noise.
|
||
*/</span>
|
||
<span class="n">ModuleScaleDomain</span> <span class="n">moduleScaleDomain</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModuleScaleDomain</span><span class="o">();</span>
|
||
<span class="n">moduleScaleDomain</span><span class="o">.</span><span class="na">setSource</span><span class="o">(</span><span class="n">moduleAutoCorrect</span><span class="o">);</span>
|
||
<span class="n">moduleScaleDomain</span><span class="o">.</span><span class="na">setScaleX</span><span class="o">(</span><span class="mf">16.0</span><span class="o">);</span>
|
||
<span class="n">moduleScaleDomain</span><span class="o">.</span><span class="na">setScaleY</span><span class="o">(</span><span class="mf">16.0</span><span class="o">);</span>
|
||
|
||
<span class="k">return</span> <span class="n">moduleScaleDomain</span><span class="o">;</span>
|
||
<span class="o">}</span>
|
||
|
||
<span class="o">...</span>
|
||
</code></pre></div></div>
|
||
|
||
<h2 id="modulecellgen">ModuleCellGen</h2>
|
||
|
||
<div class="bs-callout bs-callout-warning">
|
||
<h4>This module can't be sampled directly.</h4>
|
||
The <code>ModuleCellGen</code> acts as input to the <code>ModuleCellular</code> module and therefore can't be sampled directly.
|
||
</div>
|
||
|
||
<p>The ModuleCellGen acts a source for the ModuleCellular module. It can
|
||
be shared between more than one ModuleCellular and will cache sampled
|
||
values in order to improve performance.</p>
|
||
|
||
<h2 id="modulecellular">ModuleCellular</h2>
|
||
|
||
<p><img src="Modules_files/cellGen.png" class="img-responsive"></p>
|
||
|
||
<p>ModuleCellular is used in conjunction with the ModuleCellGen to provide values based on <a href="https://joise.sudoplaygames.com/assets-3rd-party/Worley_noise">Worley noise</a>.</p>
|
||
|
||
<p>The parameters <code class="highlighter-rouge">F1</code>, <code class="highlighter-rouge">F2</code>, <code class="highlighter-rouge">F3</code>, and <code class="highlighter-rouge">F4</code>
|
||
are coefficients multiplied by the distances to the first, second,
|
||
third, and fourth closest feature points, respectively. By default, the
|
||
value for each of these coefficients is zero.</p>
|
||
|
||
<p>Here is an excerpt from <a href="http://www.rhythmiccanvas.com/research/papers/worley.pdf" target="_blank">Worley’s original paper</a>:</p>
|
||
|
||
<blockquote>
|
||
<p>We can define a new basis function based on the idea of random
|
||
feature points. Imagine points randomly distributed through all of R3.
|
||
For any location x, there is some feature point which lies closer to x
|
||
than any other feature point. Define F1(x) as the distance from x to
|
||
that closest feature point. As x is varied, F1 varies smoothly since the
|
||
distance between the sample location and the fixed feature point varies
|
||
smoothly. However, at certain cusp locations, the point x will be
|
||
equidistant between two feature points. Here, the value of F1(x) is
|
||
still well defined, since the value is the same no matter which feature
|
||
point is chosen to calculate the distance. Varying the position of x
|
||
will return values of F1 that are still continuous, though the
|
||
derivative of F1 will change discontinuously as the distance calculation
|
||
“switches” from one feature point to its neighbor.</p>
|
||
</blockquote>
|
||
|
||
<blockquote>
|
||
<p>It can be seen that the locations where the function F1 “switches”
|
||
from one feature point to the next (where its derivative is
|
||
discontinuous) are along the equidistance planes that separate two
|
||
points in R3. These planes are exactly the planes that are computed by a
|
||
Voronoi diagram, which by definition partitions space into cellular
|
||
regions where all the points within each region are closer to its
|
||
defining point than any other point.</p>
|
||
</blockquote>
|
||
|
||
<blockquote>
|
||
<p>The function F2(x) can be defined as the distance between the
|
||
location x and the feature point which is the second closest to the x.
|
||
With similar arguments as before, F2 is continuous everywhere, but its
|
||
derivative is not at those locations where the second-closest point
|
||
swaps with either the first-closest or third-closest. Similarly, we can
|
||
define Fn(x) as the distance between x and the nth closest feature
|
||
point.</p>
|
||
</blockquote>
|
||
|
||
<h3 id="example-code-1">Example Code</h3>
|
||
|
||
<p>Here is a snippet from the example:</p>
|
||
|
||
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">...</span>
|
||
|
||
<span class="nd">@Override</span>
|
||
<span class="kd">protected</span> <span class="kt">void</span> <span class="nf">run</span><span class="o">(</span><span class="n">SplitCanvas</span> <span class="n">canvas</span><span class="o">)</span> <span class="o">{</span>
|
||
|
||
<span class="n">ModuleCellGen</span> <span class="n">moduleCellGen</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModuleCellGen</span><span class="o">();</span>
|
||
<span class="n">moduleCellGen</span><span class="o">.</span><span class="na">setSeed</span><span class="o">(</span><span class="mi">42</span><span class="o">);</span>
|
||
|
||
<span class="n">canvas</span><span class="o">.</span><span class="na">updateImage</span><span class="o">(</span>
|
||
<span class="s">"F1 = 1"</span><span class="o">,</span> <span class="n">getSource</span><span class="o">(</span><span class="n">moduleCellGen</span><span class="o">,</span> <span class="mi">1</span><span class="o">,</span> <span class="mi">0</span><span class="o">,</span> <span class="mi">0</span><span class="o">,</span> <span class="mi">0</span><span class="o">),</span>
|
||
<span class="s">"F2 = 1"</span><span class="o">,</span> <span class="n">getSource</span><span class="o">(</span><span class="n">moduleCellGen</span><span class="o">,</span> <span class="mi">0</span><span class="o">,</span> <span class="mi">1</span><span class="o">,</span> <span class="mi">0</span><span class="o">,</span> <span class="mi">0</span><span class="o">),</span>
|
||
<span class="s">"F1 = 1, F2 = -1"</span><span class="o">,</span> <span class="n">getSource</span><span class="o">(</span><span class="n">moduleCellGen</span><span class="o">,</span> <span class="mi">1</span><span class="o">,</span> <span class="o">-</span><span class="mi">1</span><span class="o">,</span> <span class="mi">0</span><span class="o">,</span> <span class="mi">0</span><span class="o">),</span>
|
||
<span class="s">"F4 = 1"</span><span class="o">,</span> <span class="n">getSource</span><span class="o">(</span><span class="n">moduleCellGen</span><span class="o">,</span> <span class="mi">0</span><span class="o">,</span> <span class="mi">0</span><span class="o">,</span> <span class="mi">0</span><span class="o">,</span> <span class="mi">1</span><span class="o">)</span>
|
||
<span class="o">);</span>
|
||
<span class="o">}</span>
|
||
|
||
<span class="kd">private</span> <span class="n">Module</span> <span class="nf">getSource</span><span class="o">(</span><span class="n">ModuleCellGen</span> <span class="n">moduleCellGen</span><span class="o">,</span> <span class="kt">int</span> <span class="n">a</span><span class="o">,</span> <span class="kt">int</span> <span class="n">b</span><span class="o">,</span> <span class="kt">int</span> <span class="n">c</span><span class="o">,</span> <span class="kt">int</span> <span class="n">d</span><span class="o">)</span> <span class="o">{</span>
|
||
<span class="n">ModuleCellular</span> <span class="n">moduleCellular</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModuleCellular</span><span class="o">();</span>
|
||
<span class="n">moduleCellular</span><span class="o">.</span><span class="na">setCellularSource</span><span class="o">(</span><span class="n">moduleCellGen</span><span class="o">);</span>
|
||
<span class="n">moduleCellular</span><span class="o">.</span><span class="na">setCoefficients</span><span class="o">(</span><span class="n">a</span><span class="o">,</span> <span class="n">b</span><span class="o">,</span> <span class="n">c</span><span class="o">,</span> <span class="n">d</span><span class="o">);</span>
|
||
|
||
<span class="cm">/**
|
||
* We scale the domain to visualize more of the noise.
|
||
*/</span>
|
||
<span class="n">ModuleScaleDomain</span> <span class="n">moduleScaleDomain</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModuleScaleDomain</span><span class="o">();</span>
|
||
<span class="n">moduleScaleDomain</span><span class="o">.</span><span class="na">setSource</span><span class="o">(</span><span class="n">moduleCellular</span><span class="o">);</span>
|
||
<span class="n">moduleScaleDomain</span><span class="o">.</span><span class="na">setScaleX</span><span class="o">(</span><span class="mi">8</span><span class="o">);</span>
|
||
<span class="n">moduleScaleDomain</span><span class="o">.</span><span class="na">setScaleY</span><span class="o">(</span><span class="mi">8</span><span class="o">);</span>
|
||
|
||
<span class="cm">/**
|
||
* We auto-correct into the range [0, 1].
|
||
*/</span>
|
||
<span class="n">ModuleAutoCorrect</span> <span class="n">source</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModuleAutoCorrect</span><span class="o">(</span><span class="mi">0</span><span class="o">,</span> <span class="mi">1</span><span class="o">);</span>
|
||
<span class="n">source</span><span class="o">.</span><span class="na">setSource</span><span class="o">(</span><span class="n">moduleScaleDomain</span><span class="o">);</span>
|
||
<span class="n">source</span><span class="o">.</span><span class="na">setSamples</span><span class="o">(</span><span class="mi">10000</span><span class="o">);</span>
|
||
<span class="n">source</span><span class="o">.</span><span class="na">calculate2D</span><span class="o">();</span>
|
||
<span class="k">return</span> <span class="n">source</span><span class="o">;</span>
|
||
<span class="o">}</span>
|
||
|
||
<span class="o">...</span>
|
||
</code></pre></div></div>
|
||
|
||
<h2 id="modulefractal">ModuleFractal</h2>
|
||
|
||
<p>The fractal module combines up to ten sources, either the default sources or custom sources set by calling the <code class="highlighter-rouge">ModuleFractal#overrideSource(int, Module)</code>
|
||
method. The basis type and interpolation type can be set for all or
|
||
individual default sources by calling the appropriate methods.</p>
|
||
|
||
<h3 id="billow">Billow</h3>
|
||
|
||
<h4 id="basistypegradient-1">BasisType.GRADIENT</h4>
|
||
|
||
<p><img src="Modules_files/billow_004.png" class="img-responsive"></p>
|
||
|
||
<h4 id="basistypegradval-1">BasisType.GRADVAL</h4>
|
||
|
||
<p><img src="Modules_files/billow_002.png" class="img-responsive"></p>
|
||
|
||
<h4 id="basistypesimplex-1">BasisType.SIMPLEX</h4>
|
||
|
||
<p><img src="Modules_files/billow_005.png" class="img-responsive"></p>
|
||
|
||
<h4 id="basistypevalue-1">BasisType.VALUE</h4>
|
||
|
||
<p><img src="Modules_files/billow.png" class="img-responsive"></p>
|
||
|
||
<h3 id="decarpentierswiss">deCarpentierSwiss</h3>
|
||
|
||
<h4 id="basistypegradient-2">BasisType.GRADIENT</h4>
|
||
|
||
<p><img src="Modules_files/deCarpentierSwiss_004.png" class="img-responsive"></p>
|
||
|
||
<h4 id="basistypegradval-2">BasisType.GRADVAL</h4>
|
||
|
||
<p><img src="Modules_files/deCarpentierSwiss.png" class="img-responsive"></p>
|
||
|
||
<h4 id="basistypesimplex-2">BasisType.SIMPLEX</h4>
|
||
|
||
<p><img src="Modules_files/deCarpentierSwiss_003.png" class="img-responsive"></p>
|
||
|
||
<h4 id="basistypevalue-2">BasisType.VALUE</h4>
|
||
|
||
<p><img src="Modules_files/deCarpentierSwiss_005.png" class="img-responsive"></p>
|
||
|
||
<h3 id="fbm">FBM</h3>
|
||
|
||
<h4 id="basistypegradient-3">BasisType.GRADIENT</h4>
|
||
|
||
<p><img src="Modules_files/fbm_003.png" class="img-responsive"></p>
|
||
|
||
<h4 id="basistypegradval-3">BasisType.GRADVAL</h4>
|
||
|
||
<p><img src="Modules_files/fbm.png" class="img-responsive"></p>
|
||
|
||
<h4 id="basistypesimplex-3">BasisType.SIMPLEX</h4>
|
||
|
||
<p><img src="Modules_files/fbm_005.png" class="img-responsive"></p>
|
||
|
||
<h4 id="basistypevalue-3">BasisType.VALUE</h4>
|
||
|
||
<p><img src="Modules_files/fbm_002.png" class="img-responsive"></p>
|
||
|
||
<h3 id="hybridmulti">HybridMulti</h3>
|
||
|
||
<h4 id="basistypegradient-4">BasisType.GRADIENT</h4>
|
||
|
||
<p><img src="Modules_files/hybridMulti_002.png" class="img-responsive"></p>
|
||
|
||
<h4 id="basistypegradval-4">BasisType.GRADVAL</h4>
|
||
|
||
<p><img src="Modules_files/hybridMulti_003.png" class="img-responsive"></p>
|
||
|
||
<h4 id="basistypesimplex-4">BasisType.SIMPLEX</h4>
|
||
|
||
<p><img src="Modules_files/hybridMulti_004.png" class="img-responsive"></p>
|
||
|
||
<h4 id="basistypevalue-4">BasisType.VALUE</h4>
|
||
|
||
<p><img src="Modules_files/hybridMulti.png" class="img-responsive"></p>
|
||
|
||
<h3 id="multi">Multi</h3>
|
||
|
||
<h4 id="basistypegradient-5">BasisType.GRADIENT</h4>
|
||
|
||
<p><img src="Modules_files/multi_002.png" class="img-responsive"></p>
|
||
|
||
<h4 id="basistypegradval-5">BasisType.GRADVAL</h4>
|
||
|
||
<p><img src="Modules_files/multi.png" class="img-responsive"></p>
|
||
|
||
<h4 id="basistypesimplex-5">BasisType.SIMPLEX</h4>
|
||
|
||
<p><img src="Modules_files/multi_003.png" class="img-responsive"></p>
|
||
|
||
<h4 id="basistypevalue-5">BasisType.VALUE</h4>
|
||
|
||
<p><img src="Modules_files/multi_004.png" class="img-responsive"></p>
|
||
|
||
<h3 id="ridgemulti">RidgeMulti</h3>
|
||
|
||
<h4 id="basistypegradient-6">BasisType.GRADIENT</h4>
|
||
|
||
<p><img src="Modules_files/ridgeMulti_002.png" class="img-responsive"></p>
|
||
|
||
<h4 id="basistypegradval-6">BasisType.GRADVAL</h4>
|
||
|
||
<p><img src="Modules_files/ridgeMulti.png" class="img-responsive"></p>
|
||
|
||
<h4 id="basistypesimplex-6">BasisType.SIMPLEX</h4>
|
||
|
||
<p><img src="Modules_files/ridgeMulti_005.png" class="img-responsive"></p>
|
||
|
||
<h4 id="basistypevalue-6">BasisType.VALUE</h4>
|
||
|
||
<p><img src="Modules_files/ridgeMulti_003.png" class="img-responsive"></p>
|
||
|
||
<h3 id="basistypewhite-1">BasisType.WHITE</h3>
|
||
|
||
<p>The white noise basis types for <code class="highlighter-rouge">ModuleFractal</code> have been grouped below for visual comparison.</p>
|
||
|
||
<h4 id="fractaltypebillow">FractalType.BILLOW</h4>
|
||
|
||
<p><img src="Modules_files/billow_003.png" class="img-responsive"></p>
|
||
|
||
<h4 id="fractaltypedecarpentierswiss">FractalType.DECARPENTIERSWISS</h4>
|
||
|
||
<p><img src="Modules_files/deCarpentierSwiss_002.png" class="img-responsive"></p>
|
||
|
||
<h4 id="fractaltypefbm">FractalType.FBM</h4>
|
||
|
||
<p><img src="Modules_files/fbm_004.png" class="img-responsive"></p>
|
||
|
||
<h4 id="fractaltypehybridmulti">FractalType.HYBRIDMULTI</h4>
|
||
|
||
<p><img src="Modules_files/hybridMulti_005.png" class="img-responsive"></p>
|
||
|
||
<h4 id="fractaltypemulti">FractalType.MULTI</h4>
|
||
|
||
<p><img src="Modules_files/multi_005.png" class="img-responsive"></p>
|
||
|
||
<h4 id="fractaltyperidgemulti">FractalType.RIDGEMULTI</h4>
|
||
|
||
<p><img src="Modules_files/ridgeMulti_004.png" class="img-responsive"></p>
|
||
|
||
<h3 id="example-code-2">Example Code</h3>
|
||
|
||
<p>Here is a snippet from the example:</p>
|
||
|
||
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">...</span>
|
||
|
||
<span class="nd">@Override</span>
|
||
<span class="kd">protected</span> <span class="kt">void</span> <span class="nf">run</span><span class="o">(</span><span class="n">SplitCanvas</span> <span class="n">canvas</span><span class="o">)</span> <span class="o">{</span>
|
||
<span class="n">BasisType</span> <span class="n">basisType</span> <span class="o">=</span> <span class="n">BasisType</span><span class="o">.</span><span class="na">SIMPLEX</span><span class="o">;</span>
|
||
<span class="n">FractalType</span> <span class="n">fractalType</span> <span class="o">=</span> <span class="n">FractalType</span><span class="o">.</span><span class="na">HYBRIDMULTI</span><span class="o">;</span>
|
||
|
||
<span class="n">canvas</span><span class="o">.</span><span class="na">updateImage</span><span class="o">(</span>
|
||
<span class="s">"none"</span><span class="o">,</span> <span class="n">getModule</span><span class="o">(</span><span class="n">basisType</span><span class="o">,</span> <span class="n">InterpolationType</span><span class="o">.</span><span class="na">NONE</span><span class="o">,</span> <span class="n">fractalType</span><span class="o">),</span>
|
||
<span class="s">"linear"</span><span class="o">,</span> <span class="n">getModule</span><span class="o">(</span><span class="n">basisType</span><span class="o">,</span> <span class="n">InterpolationType</span><span class="o">.</span><span class="na">LINEAR</span><span class="o">,</span> <span class="n">fractalType</span><span class="o">),</span>
|
||
<span class="s">"cubic"</span><span class="o">,</span> <span class="n">getModule</span><span class="o">(</span><span class="n">basisType</span><span class="o">,</span> <span class="n">InterpolationType</span><span class="o">.</span><span class="na">CUBIC</span><span class="o">,</span> <span class="n">fractalType</span><span class="o">),</span>
|
||
<span class="s">"quintic"</span><span class="o">,</span> <span class="n">getModule</span><span class="o">(</span><span class="n">basisType</span><span class="o">,</span> <span class="n">InterpolationType</span><span class="o">.</span><span class="na">QUINTIC</span><span class="o">,</span> <span class="n">fractalType</span><span class="o">)</span>
|
||
<span class="o">);</span>
|
||
<span class="o">}</span>
|
||
|
||
<span class="kd">private</span> <span class="n">ModuleAutoCorrect</span> <span class="nf">getModule</span><span class="o">(</span>
|
||
<span class="n">BasisType</span> <span class="n">basisType</span><span class="o">,</span>
|
||
<span class="n">InterpolationType</span> <span class="n">interpolationType</span><span class="o">,</span>
|
||
<span class="n">FractalType</span> <span class="n">fractalType</span>
|
||
<span class="o">)</span> <span class="o">{</span>
|
||
<span class="n">ModuleFractal</span> <span class="n">gen</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModuleFractal</span><span class="o">();</span>
|
||
<span class="n">gen</span><span class="o">.</span><span class="na">setAllSourceBasisTypes</span><span class="o">(</span><span class="n">basisType</span><span class="o">);</span>
|
||
<span class="n">gen</span><span class="o">.</span><span class="na">setAllSourceInterpolationTypes</span><span class="o">(</span><span class="n">interpolationType</span><span class="o">);</span>
|
||
<span class="n">gen</span><span class="o">.</span><span class="na">setNumOctaves</span><span class="o">(</span><span class="mi">5</span><span class="o">);</span>
|
||
<span class="n">gen</span><span class="o">.</span><span class="na">setFrequency</span><span class="o">(</span><span class="mf">2.34</span><span class="o">);</span>
|
||
<span class="n">gen</span><span class="o">.</span><span class="na">setType</span><span class="o">(</span><span class="n">fractalType</span><span class="o">);</span>
|
||
<span class="n">gen</span><span class="o">.</span><span class="na">setSeed</span><span class="o">(</span><span class="mi">42</span><span class="o">);</span>
|
||
|
||
<span class="cm">/**
|
||
* We auto-correct into the range [0, 1], performing 10,000 samples
|
||
* to calculate the auto-correct values.
|
||
*/</span>
|
||
<span class="n">ModuleAutoCorrect</span> <span class="n">source</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModuleAutoCorrect</span><span class="o">(</span><span class="mi">0</span><span class="o">,</span> <span class="mi">1</span><span class="o">);</span>
|
||
<span class="n">source</span><span class="o">.</span><span class="na">setSource</span><span class="o">(</span><span class="n">gen</span><span class="o">);</span>
|
||
<span class="n">source</span><span class="o">.</span><span class="na">setSamples</span><span class="o">(</span><span class="mi">10000</span><span class="o">);</span>
|
||
<span class="n">source</span><span class="o">.</span><span class="na">calculate2D</span><span class="o">();</span>
|
||
<span class="k">return</span> <span class="n">source</span><span class="o">;</span>
|
||
<span class="o">}</span>
|
||
|
||
<span class="o">...</span>
|
||
</code></pre></div></div>
|
||
|
||
<h2 id="modulegradient">ModuleGradient</h2>
|
||
|
||
<p><img src="Modules_files/gradient.png" class="img-responsive"></p>
|
||
|
||
<p>The <code class="highlighter-rouge">ModuleGradient</code> generates a linear gradient with output values ranging from 0 to 1.</p>
|
||
|
||
<h3 id="example-code-3">Example Code</h3>
|
||
|
||
<p>Here is a snippet from the example:</p>
|
||
|
||
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">...</span>
|
||
|
||
<span class="nd">@Override</span>
|
||
<span class="kd">protected</span> <span class="kt">void</span> <span class="nf">run</span><span class="o">(</span><span class="n">SplitCanvas</span> <span class="n">canvas</span><span class="o">)</span> <span class="o">{</span>
|
||
|
||
<span class="n">canvas</span><span class="o">.</span><span class="na">updateImage</span><span class="o">(</span>
|
||
<span class="s">"(0, 0) -> (0, 1)"</span><span class="o">,</span> <span class="n">getModule</span><span class="o">(</span><span class="mi">0</span><span class="o">,</span> <span class="mi">0</span><span class="o">,</span> <span class="mi">0</span><span class="o">,</span> <span class="mi">1</span><span class="o">),</span>
|
||
<span class="s">"(0.5, 0) -> (1, 1)"</span><span class="o">,</span> <span class="n">getModule</span><span class="o">(</span><span class="mf">0.5</span><span class="o">,</span> <span class="mi">1</span><span class="o">,</span> <span class="mi">0</span><span class="o">,</span> <span class="mi">1</span><span class="o">)</span>
|
||
<span class="o">);</span>
|
||
<span class="o">}</span>
|
||
|
||
<span class="kd">private</span> <span class="n">ModuleGradient</span> <span class="nf">getModule</span><span class="o">(</span><span class="kt">double</span> <span class="n">x1</span><span class="o">,</span> <span class="kt">double</span> <span class="n">x2</span><span class="o">,</span> <span class="kt">double</span> <span class="n">y1</span><span class="o">,</span> <span class="kt">double</span> <span class="n">y2</span><span class="o">)</span> <span class="o">{</span>
|
||
<span class="n">ModuleGradient</span> <span class="n">moduleGradient</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModuleGradient</span><span class="o">();</span>
|
||
<span class="n">moduleGradient</span><span class="o">.</span><span class="na">setGradient</span><span class="o">(</span><span class="n">x1</span><span class="o">,</span> <span class="n">x2</span><span class="o">,</span> <span class="n">y1</span><span class="o">,</span> <span class="n">y2</span><span class="o">);</span>
|
||
<span class="k">return</span> <span class="n">moduleGradient</span><span class="o">;</span>
|
||
<span class="o">}</span>
|
||
|
||
<span class="o">...</span>
|
||
</code></pre></div></div>
|
||
|
||
<h2 id="modulesphere">ModuleSphere</h2>
|
||
|
||
<p><img src="Modules_files/sphere.png" class="img-responsive"></p>
|
||
|
||
<p>The <code class="highlighter-rouge">ModuleSphere</code> generates a spherical gradient with output values ranging from 0 to 1.</p>
|
||
|
||
<h3 id="example-code-4">Example Code</h3>
|
||
|
||
<p>Here is a snippet from the example:</p>
|
||
|
||
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">...</span>
|
||
|
||
<span class="nd">@Override</span>
|
||
<span class="kd">protected</span> <span class="kt">void</span> <span class="nf">run</span><span class="o">(</span><span class="n">SplitCanvas</span> <span class="n">canvas</span><span class="o">)</span> <span class="o">{</span>
|
||
|
||
<span class="n">ModuleSphere</span> <span class="n">moduleSphere</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModuleSphere</span><span class="o">();</span>
|
||
<span class="n">moduleSphere</span><span class="o">.</span><span class="na">setCenterX</span><span class="o">(</span><span class="mf">0.5</span><span class="o">);</span>
|
||
<span class="n">moduleSphere</span><span class="o">.</span><span class="na">setCenterY</span><span class="o">(</span><span class="mf">0.5</span><span class="o">);</span>
|
||
<span class="n">moduleSphere</span><span class="o">.</span><span class="na">setRadius</span><span class="o">(</span><span class="mf">0.5</span><span class="o">);</span>
|
||
|
||
<span class="n">canvas</span><span class="o">.</span><span class="na">updateImage</span><span class="o">(</span>
|
||
<span class="s">"source"</span><span class="o">,</span> <span class="n">moduleSphere</span>
|
||
<span class="o">);</span>
|
||
<span class="o">}</span>
|
||
|
||
<span class="o">...</span>
|
||
</code></pre></div></div>
|
||
|
||
<h2 id="simple-manipulators">Simple Manipulators</h2>
|
||
|
||
<p>Simple manipulators are modules that take a single source and perform
|
||
a fairly simple mathematical function on the sampled values.</p>
|
||
|
||
<h3 id="moduleabs">ModuleAbs</h3>
|
||
|
||
<p><img src="Modules_files/abs.png" class="img-responsive"></p>
|
||
|
||
<p>The absolute value module returns the absolute value of the sampled value.</p>
|
||
|
||
<p>Negative values are displayed in red for clarity.</p>
|
||
|
||
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>y = |x|
|
||
</code></pre></div></div>
|
||
|
||
<h4 id="example-code-5">Example Code</h4>
|
||
|
||
<p>Here is a snippet from the example:</p>
|
||
|
||
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">...</span>
|
||
|
||
<span class="nd">@Override</span>
|
||
<span class="kd">protected</span> <span class="kt">void</span> <span class="nf">run</span><span class="o">(</span><span class="n">SplitCanvas</span> <span class="n">canvas</span><span class="o">)</span> <span class="o">{</span>
|
||
|
||
<span class="n">ModuleFractal</span> <span class="n">gen</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModuleFractal</span><span class="o">();</span>
|
||
<span class="n">gen</span><span class="o">.</span><span class="na">setAllSourceBasisTypes</span><span class="o">(</span><span class="n">ModuleBasisFunction</span><span class="o">.</span><span class="na">BasisType</span><span class="o">.</span><span class="na">SIMPLEX</span><span class="o">);</span>
|
||
<span class="n">gen</span><span class="o">.</span><span class="na">setAllSourceInterpolationTypes</span><span class="o">(</span><span class="n">ModuleBasisFunction</span><span class="o">.</span><span class="na">InterpolationType</span><span class="o">.</span><span class="na">CUBIC</span><span class="o">);</span>
|
||
<span class="n">gen</span><span class="o">.</span><span class="na">setNumOctaves</span><span class="o">(</span><span class="mi">5</span><span class="o">);</span>
|
||
<span class="n">gen</span><span class="o">.</span><span class="na">setFrequency</span><span class="o">(</span><span class="mf">2.34</span><span class="o">);</span>
|
||
<span class="n">gen</span><span class="o">.</span><span class="na">setType</span><span class="o">(</span><span class="n">ModuleFractal</span><span class="o">.</span><span class="na">FractalType</span><span class="o">.</span><span class="na">RIDGEMULTI</span><span class="o">);</span>
|
||
<span class="n">gen</span><span class="o">.</span><span class="na">setSeed</span><span class="o">(</span><span class="mi">42</span><span class="o">);</span>
|
||
|
||
<span class="cm">/**
|
||
* We auto-correct into the range [-1, 1] to ensure we have some negative values
|
||
* for the abs module.
|
||
*/</span>
|
||
<span class="n">ModuleAutoCorrect</span> <span class="n">source</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModuleAutoCorrect</span><span class="o">(-</span><span class="mi">1</span><span class="o">,</span> <span class="mi">1</span><span class="o">);</span>
|
||
<span class="n">source</span><span class="o">.</span><span class="na">setSource</span><span class="o">(</span><span class="n">gen</span><span class="o">);</span>
|
||
<span class="n">source</span><span class="o">.</span><span class="na">setSamples</span><span class="o">(</span><span class="mi">10000</span><span class="o">);</span>
|
||
<span class="n">source</span><span class="o">.</span><span class="na">calculate</span><span class="o">();</span>
|
||
|
||
<span class="cm">/**
|
||
* Performs the absolute value function on the noise.
|
||
*/</span>
|
||
<span class="n">ModuleAbs</span> <span class="n">moduleAbs</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModuleAbs</span><span class="o">();</span>
|
||
<span class="n">moduleAbs</span><span class="o">.</span><span class="na">setSource</span><span class="o">(</span><span class="n">source</span><span class="o">);</span>
|
||
|
||
<span class="n">canvas</span><span class="o">.</span><span class="na">updateImage</span><span class="o">(</span>
|
||
<span class="s">"source"</span><span class="o">,</span> <span class="n">source</span><span class="o">,</span>
|
||
<span class="s">"moduleAbs"</span><span class="o">,</span> <span class="n">moduleAbs</span>
|
||
<span class="o">);</span>
|
||
<span class="o">}</span>
|
||
|
||
<span class="o">...</span>
|
||
</code></pre></div></div>
|
||
|
||
<h3 id="moduleclamp">ModuleClamp</h3>
|
||
|
||
<p><img src="Modules_files/clamp.png" class="img-responsive"></p>
|
||
|
||
<p>The clamp module restricts the sampled value to the range <code class="highlighter-rouge">[lo,hi]</code>.</p>
|
||
|
||
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>y = min(hi, max(lo, x))
|
||
</code></pre></div></div>
|
||
|
||
<h4 id="example-code-6">Example Code</h4>
|
||
|
||
<p>Here is a snippet from the example:</p>
|
||
|
||
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">...</span>
|
||
|
||
<span class="nd">@Override</span>
|
||
<span class="kd">protected</span> <span class="kt">void</span> <span class="nf">run</span><span class="o">(</span><span class="n">SplitCanvas</span> <span class="n">canvas</span><span class="o">)</span> <span class="o">{</span>
|
||
|
||
<span class="n">ModuleFractal</span> <span class="n">gen</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModuleFractal</span><span class="o">();</span>
|
||
<span class="n">gen</span><span class="o">.</span><span class="na">setAllSourceBasisTypes</span><span class="o">(</span><span class="n">ModuleBasisFunction</span><span class="o">.</span><span class="na">BasisType</span><span class="o">.</span><span class="na">SIMPLEX</span><span class="o">);</span>
|
||
<span class="n">gen</span><span class="o">.</span><span class="na">setAllSourceInterpolationTypes</span><span class="o">(</span><span class="n">ModuleBasisFunction</span><span class="o">.</span><span class="na">InterpolationType</span><span class="o">.</span><span class="na">CUBIC</span><span class="o">);</span>
|
||
<span class="n">gen</span><span class="o">.</span><span class="na">setNumOctaves</span><span class="o">(</span><span class="mi">5</span><span class="o">);</span>
|
||
<span class="n">gen</span><span class="o">.</span><span class="na">setFrequency</span><span class="o">(</span><span class="mf">2.34</span><span class="o">);</span>
|
||
<span class="n">gen</span><span class="o">.</span><span class="na">setType</span><span class="o">(</span><span class="n">ModuleFractal</span><span class="o">.</span><span class="na">FractalType</span><span class="o">.</span><span class="na">RIDGEMULTI</span><span class="o">);</span>
|
||
<span class="n">gen</span><span class="o">.</span><span class="na">setSeed</span><span class="o">(</span><span class="mi">42</span><span class="o">);</span>
|
||
|
||
<span class="cm">/**
|
||
* We auto-correct into the range [0, 1], performing 10,000 samples to
|
||
* calculate the auto-correct values.
|
||
*/</span>
|
||
<span class="n">ModuleAutoCorrect</span> <span class="n">source</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModuleAutoCorrect</span><span class="o">(</span><span class="mi">0</span><span class="o">,</span> <span class="mi">1</span><span class="o">);</span>
|
||
<span class="n">source</span><span class="o">.</span><span class="na">setSource</span><span class="o">(</span><span class="n">gen</span><span class="o">);</span>
|
||
<span class="n">source</span><span class="o">.</span><span class="na">setSamples</span><span class="o">(</span><span class="mi">10000</span><span class="o">);</span>
|
||
<span class="n">source</span><span class="o">.</span><span class="na">calculate</span><span class="o">();</span>
|
||
|
||
<span class="n">ModuleClamp</span> <span class="n">moduleClamp</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModuleClamp</span><span class="o">();</span>
|
||
<span class="n">moduleClamp</span><span class="o">.</span><span class="na">setSource</span><span class="o">(</span><span class="n">source</span><span class="o">);</span>
|
||
<span class="n">moduleClamp</span><span class="o">.</span><span class="na">setLow</span><span class="o">(</span><span class="mf">0.25</span><span class="o">);</span>
|
||
<span class="n">moduleClamp</span><span class="o">.</span><span class="na">setHigh</span><span class="o">(</span><span class="mf">0.5</span><span class="o">);</span>
|
||
|
||
<span class="n">canvas</span><span class="o">.</span><span class="na">updateImage</span><span class="o">(</span>
|
||
<span class="s">"source"</span><span class="o">,</span> <span class="n">source</span><span class="o">,</span>
|
||
<span class="s">"moduleClamp"</span><span class="o">,</span> <span class="n">moduleClamp</span>
|
||
<span class="o">);</span>
|
||
<span class="o">}</span>
|
||
|
||
<span class="o">...</span>
|
||
</code></pre></div></div>
|
||
|
||
<h3 id="modulecos">ModuleCos</h3>
|
||
|
||
<p><img src="Modules_files/cos.png" class="img-responsive"></p>
|
||
|
||
<p>The cosine module passes the sampled value through a cosine function.</p>
|
||
|
||
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>y = cos(x)
|
||
</code></pre></div></div>
|
||
|
||
<h4 id="example-code-7">Example Code</h4>
|
||
|
||
<p>Here is a snippet from the example:</p>
|
||
|
||
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">...</span>
|
||
|
||
<span class="nd">@Override</span>
|
||
<span class="kd">protected</span> <span class="kt">void</span> <span class="nf">run</span><span class="o">(</span><span class="n">SplitCanvas</span> <span class="n">canvas</span><span class="o">)</span> <span class="o">{</span>
|
||
|
||
<span class="n">ModuleFractal</span> <span class="n">gen</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModuleFractal</span><span class="o">();</span>
|
||
<span class="n">gen</span><span class="o">.</span><span class="na">setAllSourceBasisTypes</span><span class="o">(</span><span class="n">ModuleBasisFunction</span><span class="o">.</span><span class="na">BasisType</span><span class="o">.</span><span class="na">SIMPLEX</span><span class="o">);</span>
|
||
<span class="n">gen</span><span class="o">.</span><span class="na">setAllSourceInterpolationTypes</span><span class="o">(</span><span class="n">ModuleBasisFunction</span><span class="o">.</span><span class="na">InterpolationType</span><span class="o">.</span><span class="na">CUBIC</span><span class="o">);</span>
|
||
<span class="n">gen</span><span class="o">.</span><span class="na">setNumOctaves</span><span class="o">(</span><span class="mi">5</span><span class="o">);</span>
|
||
<span class="n">gen</span><span class="o">.</span><span class="na">setFrequency</span><span class="o">(</span><span class="mf">2.34</span><span class="o">);</span>
|
||
<span class="n">gen</span><span class="o">.</span><span class="na">setType</span><span class="o">(</span><span class="n">ModuleFractal</span><span class="o">.</span><span class="na">FractalType</span><span class="o">.</span><span class="na">RIDGEMULTI</span><span class="o">);</span>
|
||
<span class="n">gen</span><span class="o">.</span><span class="na">setSeed</span><span class="o">(</span><span class="mi">42</span><span class="o">);</span>
|
||
|
||
<span class="cm">/**
|
||
* We auto-correct into the range [0, 1], performing 10,000 samples to
|
||
* calculate the auto-correct values.
|
||
*/</span>
|
||
<span class="n">ModuleAutoCorrect</span> <span class="n">source</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModuleAutoCorrect</span><span class="o">(</span><span class="mi">0</span><span class="o">,</span> <span class="mi">1</span><span class="o">);</span>
|
||
<span class="n">source</span><span class="o">.</span><span class="na">setSource</span><span class="o">(</span><span class="n">gen</span><span class="o">);</span>
|
||
<span class="n">source</span><span class="o">.</span><span class="na">setSamples</span><span class="o">(</span><span class="mi">10000</span><span class="o">);</span>
|
||
<span class="n">source</span><span class="o">.</span><span class="na">calculate</span><span class="o">();</span>
|
||
|
||
<span class="n">ModuleCos</span> <span class="n">moduleCos</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModuleCos</span><span class="o">();</span>
|
||
<span class="n">moduleCos</span><span class="o">.</span><span class="na">setSource</span><span class="o">(</span><span class="n">source</span><span class="o">);</span>
|
||
|
||
<span class="n">canvas</span><span class="o">.</span><span class="na">updateImage</span><span class="o">(</span>
|
||
<span class="s">"source"</span><span class="o">,</span> <span class="n">source</span><span class="o">,</span>
|
||
<span class="s">"moduleCos"</span><span class="o">,</span> <span class="n">moduleCos</span>
|
||
<span class="o">);</span>
|
||
<span class="o">}</span>
|
||
|
||
<span class="o">...</span>
|
||
</code></pre></div></div>
|
||
|
||
<h3 id="modulefloor">ModuleFloor</h3>
|
||
|
||
<p><img src="Modules_files/floor.png" class="img-responsive"></p>
|
||
|
||
<p>This module returns the largest integer value equal to or smaller than the value sampled.</p>
|
||
|
||
<p>In this example, the original source is multiplied by 8, <code class="highlighter-rouge">y = 8x</code>, before applying the floor function. The final output is auto-corrected back into the range [0,1].</p>
|
||
|
||
<p>Values above 1 are displayed in blue for clarity.</p>
|
||
|
||
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>y = floor(x)
|
||
</code></pre></div></div>
|
||
|
||
<h4 id="example-code-8">Example Code</h4>
|
||
|
||
<p>Here is a snippet from the example:</p>
|
||
|
||
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">...</span>
|
||
|
||
<span class="nd">@Override</span>
|
||
<span class="kd">protected</span> <span class="kt">void</span> <span class="nf">run</span><span class="o">(</span><span class="n">SplitCanvas</span> <span class="n">canvas</span><span class="o">)</span> <span class="o">{</span>
|
||
|
||
<span class="n">ModuleFractal</span> <span class="n">gen</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModuleFractal</span><span class="o">();</span>
|
||
<span class="n">gen</span><span class="o">.</span><span class="na">setAllSourceBasisTypes</span><span class="o">(</span><span class="n">ModuleBasisFunction</span><span class="o">.</span><span class="na">BasisType</span><span class="o">.</span><span class="na">SIMPLEX</span><span class="o">);</span>
|
||
<span class="n">gen</span><span class="o">.</span><span class="na">setAllSourceInterpolationTypes</span><span class="o">(</span><span class="n">ModuleBasisFunction</span><span class="o">.</span><span class="na">InterpolationType</span><span class="o">.</span><span class="na">CUBIC</span><span class="o">);</span>
|
||
<span class="n">gen</span><span class="o">.</span><span class="na">setNumOctaves</span><span class="o">(</span><span class="mi">5</span><span class="o">);</span>
|
||
<span class="n">gen</span><span class="o">.</span><span class="na">setFrequency</span><span class="o">(</span><span class="mf">2.34</span><span class="o">);</span>
|
||
<span class="n">gen</span><span class="o">.</span><span class="na">setType</span><span class="o">(</span><span class="n">ModuleFractal</span><span class="o">.</span><span class="na">FractalType</span><span class="o">.</span><span class="na">RIDGEMULTI</span><span class="o">);</span>
|
||
<span class="n">gen</span><span class="o">.</span><span class="na">setSeed</span><span class="o">(</span><span class="mi">42</span><span class="o">);</span>
|
||
|
||
<span class="cm">/**
|
||
* We auto-correct into the range [0, 1], performing 10,000 samples to
|
||
* calculate the auto-correct values.
|
||
*/</span>
|
||
<span class="n">ModuleAutoCorrect</span> <span class="n">moduleAutoCorrect</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModuleAutoCorrect</span><span class="o">(</span><span class="mi">0</span><span class="o">,</span> <span class="mi">1</span><span class="o">);</span>
|
||
<span class="n">moduleAutoCorrect</span><span class="o">.</span><span class="na">setSource</span><span class="o">(</span><span class="n">gen</span><span class="o">);</span>
|
||
<span class="n">moduleAutoCorrect</span><span class="o">.</span><span class="na">setSamples</span><span class="o">(</span><span class="mi">10000</span><span class="o">);</span>
|
||
<span class="n">moduleAutoCorrect</span><span class="o">.</span><span class="na">calculate</span><span class="o">();</span>
|
||
|
||
<span class="cm">/**
|
||
* Since ModuleFloor returns the largest integer value smaller than the value sampled,
|
||
* we need to use the ModuleCombiner to multiply the sampled values by a number in
|
||
* order to have a larger range that contains more possible integer values.
|
||
*/</span>
|
||
<span class="n">ModuleCombiner</span> <span class="n">source</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModuleCombiner</span><span class="o">();</span>
|
||
<span class="n">source</span><span class="o">.</span><span class="na">setType</span><span class="o">(</span><span class="n">ModuleCombiner</span><span class="o">.</span><span class="na">CombinerType</span><span class="o">.</span><span class="na">MULT</span><span class="o">);</span>
|
||
<span class="n">source</span><span class="o">.</span><span class="na">setSource</span><span class="o">(</span><span class="mi">0</span><span class="o">,</span> <span class="n">moduleAutoCorrect</span><span class="o">);</span>
|
||
<span class="n">source</span><span class="o">.</span><span class="na">setSource</span><span class="o">(</span><span class="mi">1</span><span class="o">,</span> <span class="mf">8.0</span><span class="o">);</span>
|
||
|
||
<span class="n">ModuleFloor</span> <span class="n">moduleFloor</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModuleFloor</span><span class="o">();</span>
|
||
<span class="n">moduleFloor</span><span class="o">.</span><span class="na">setSource</span><span class="o">(</span><span class="n">source</span><span class="o">);</span>
|
||
|
||
<span class="cm">/**
|
||
* We auto-correct from the range [0, 8] back into the range of [0, 1] to be
|
||
* able to visualize the results.
|
||
*/</span>
|
||
<span class="n">ModuleAutoCorrect</span> <span class="n">moduleFloorAutoCorrect</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModuleAutoCorrect</span><span class="o">();</span>
|
||
<span class="n">moduleFloorAutoCorrect</span><span class="o">.</span><span class="na">setSource</span><span class="o">(</span><span class="n">moduleFloor</span><span class="o">);</span>
|
||
<span class="n">moduleFloorAutoCorrect</span><span class="o">.</span><span class="na">setSamples</span><span class="o">(</span><span class="mi">10000</span><span class="o">);</span>
|
||
<span class="n">moduleFloorAutoCorrect</span><span class="o">.</span><span class="na">calculate</span><span class="o">();</span>
|
||
|
||
<span class="n">canvas</span><span class="o">.</span><span class="na">updateImage</span><span class="o">(</span>
|
||
<span class="s">"original source"</span><span class="o">,</span> <span class="n">moduleAutoCorrect</span><span class="o">,</span>
|
||
<span class="s">"source (x8)"</span><span class="o">,</span> <span class="n">source</span><span class="o">,</span>
|
||
<span class="s">"moduleFloor (auto-corrected)"</span><span class="o">,</span> <span class="n">moduleFloorAutoCorrect</span>
|
||
<span class="o">);</span>
|
||
<span class="o">}</span>
|
||
|
||
<span class="o">...</span>
|
||
</code></pre></div></div>
|
||
|
||
<h3 id="moduleinvert">ModuleInvert</h3>
|
||
|
||
<p><img src="Modules_files/invert.png" class="img-responsive"></p>
|
||
|
||
<p>The invert module changes positive values to negative and negative values to positive.</p>
|
||
|
||
<p>Negative values are displayed in red for clarity.</p>
|
||
|
||
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>y = -x
|
||
</code></pre></div></div>
|
||
|
||
<h4 id="example-code-9">Example Code</h4>
|
||
|
||
<p>Here is a snippet from the example:</p>
|
||
|
||
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">...</span>
|
||
|
||
<span class="nd">@Override</span>
|
||
<span class="kd">protected</span> <span class="kt">void</span> <span class="nf">run</span><span class="o">(</span><span class="n">SplitCanvas</span> <span class="n">canvas</span><span class="o">)</span> <span class="o">{</span>
|
||
|
||
<span class="n">ModuleFractal</span> <span class="n">gen</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModuleFractal</span><span class="o">();</span>
|
||
<span class="n">gen</span><span class="o">.</span><span class="na">setAllSourceBasisTypes</span><span class="o">(</span><span class="n">ModuleBasisFunction</span><span class="o">.</span><span class="na">BasisType</span><span class="o">.</span><span class="na">SIMPLEX</span><span class="o">);</span>
|
||
<span class="n">gen</span><span class="o">.</span><span class="na">setAllSourceInterpolationTypes</span><span class="o">(</span><span class="n">ModuleBasisFunction</span><span class="o">.</span><span class="na">InterpolationType</span><span class="o">.</span><span class="na">CUBIC</span><span class="o">);</span>
|
||
<span class="n">gen</span><span class="o">.</span><span class="na">setNumOctaves</span><span class="o">(</span><span class="mi">5</span><span class="o">);</span>
|
||
<span class="n">gen</span><span class="o">.</span><span class="na">setFrequency</span><span class="o">(</span><span class="mf">2.34</span><span class="o">);</span>
|
||
<span class="n">gen</span><span class="o">.</span><span class="na">setType</span><span class="o">(</span><span class="n">ModuleFractal</span><span class="o">.</span><span class="na">FractalType</span><span class="o">.</span><span class="na">RIDGEMULTI</span><span class="o">);</span>
|
||
<span class="n">gen</span><span class="o">.</span><span class="na">setSeed</span><span class="o">(</span><span class="mi">42</span><span class="o">);</span>
|
||
|
||
<span class="cm">/**
|
||
* We auto-correct into the range [0, 1], performing 10,000 samples to
|
||
* calculate the auto-correct values.
|
||
*/</span>
|
||
<span class="n">ModuleAutoCorrect</span> <span class="n">moduleAutoCorrect</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModuleAutoCorrect</span><span class="o">(</span><span class="mi">0</span><span class="o">,</span> <span class="mi">1</span><span class="o">);</span>
|
||
<span class="n">moduleAutoCorrect</span><span class="o">.</span><span class="na">setSource</span><span class="o">(</span><span class="n">gen</span><span class="o">);</span>
|
||
<span class="n">moduleAutoCorrect</span><span class="o">.</span><span class="na">setSamples</span><span class="o">(</span><span class="mi">10000</span><span class="o">);</span>
|
||
<span class="n">moduleAutoCorrect</span><span class="o">.</span><span class="na">calculate</span><span class="o">();</span>
|
||
|
||
<span class="cm">/**
|
||
* Inverting brings the range from [0, 1] into [-1, 0]
|
||
*/</span>
|
||
<span class="n">ModuleInvert</span> <span class="n">moduleInvert</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModuleInvert</span><span class="o">();</span>
|
||
<span class="n">moduleInvert</span><span class="o">.</span><span class="na">setSource</span><span class="o">(</span><span class="n">moduleAutoCorrect</span><span class="o">);</span>
|
||
|
||
<span class="cm">/**
|
||
* Add 1.0 to bring the range from [-1, 0] back to [0, 1]
|
||
*/</span>
|
||
<span class="n">ModuleCombiner</span> <span class="n">moduleCombiner</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModuleCombiner</span><span class="o">();</span>
|
||
<span class="n">moduleCombiner</span><span class="o">.</span><span class="na">setSource</span><span class="o">(</span><span class="mi">0</span><span class="o">,</span> <span class="n">moduleInvert</span><span class="o">);</span>
|
||
<span class="n">moduleCombiner</span><span class="o">.</span><span class="na">setSource</span><span class="o">(</span><span class="mi">1</span><span class="o">,</span> <span class="mf">1.0</span><span class="o">);</span>
|
||
<span class="n">moduleCombiner</span><span class="o">.</span><span class="na">setType</span><span class="o">(</span><span class="n">ModuleCombiner</span><span class="o">.</span><span class="na">CombinerType</span><span class="o">.</span><span class="na">ADD</span><span class="o">);</span>
|
||
|
||
<span class="n">canvas</span><span class="o">.</span><span class="na">updateImage</span><span class="o">(</span>
|
||
<span class="s">"source"</span><span class="o">,</span> <span class="n">moduleAutoCorrect</span><span class="o">,</span>
|
||
<span class="s">"invert"</span><span class="o">,</span> <span class="n">moduleInvert</span><span class="o">,</span>
|
||
<span class="s">"corrected invert"</span><span class="o">,</span> <span class="n">moduleCombiner</span>
|
||
<span class="o">);</span>
|
||
<span class="o">}</span>
|
||
|
||
<span class="o">...</span>
|
||
</code></pre></div></div>
|
||
|
||
<h3 id="modulepow">ModulePow</h3>
|
||
|
||
<p><img src="Modules_files/pow.png" class="img-responsive"></p>
|
||
|
||
<p>The pow module raises the sampled value to the power given.</p>
|
||
|
||
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>y = x^pow
|
||
</code></pre></div></div>
|
||
|
||
<h4 id="example-code-10">Example Code</h4>
|
||
|
||
<p>Here is a snippet from the example:</p>
|
||
|
||
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">...</span>
|
||
|
||
<span class="nd">@Override</span>
|
||
<span class="kd">protected</span> <span class="kt">void</span> <span class="nf">run</span><span class="o">(</span><span class="n">SplitCanvas</span> <span class="n">canvas</span><span class="o">)</span> <span class="o">{</span>
|
||
|
||
<span class="n">ModuleFractal</span> <span class="n">source</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModuleFractal</span><span class="o">();</span>
|
||
<span class="n">source</span><span class="o">.</span><span class="na">setAllSourceBasisTypes</span><span class="o">(</span><span class="n">ModuleBasisFunction</span><span class="o">.</span><span class="na">BasisType</span><span class="o">.</span><span class="na">SIMPLEX</span><span class="o">);</span>
|
||
<span class="n">source</span><span class="o">.</span><span class="na">setAllSourceInterpolationTypes</span><span class="o">(</span><span class="n">ModuleBasisFunction</span><span class="o">.</span><span class="na">InterpolationType</span><span class="o">.</span><span class="na">CUBIC</span><span class="o">);</span>
|
||
<span class="n">source</span><span class="o">.</span><span class="na">setNumOctaves</span><span class="o">(</span><span class="mi">5</span><span class="o">);</span>
|
||
<span class="n">source</span><span class="o">.</span><span class="na">setFrequency</span><span class="o">(</span><span class="mf">2.34</span><span class="o">);</span>
|
||
<span class="n">source</span><span class="o">.</span><span class="na">setType</span><span class="o">(</span><span class="n">ModuleFractal</span><span class="o">.</span><span class="na">FractalType</span><span class="o">.</span><span class="na">RIDGEMULTI</span><span class="o">);</span>
|
||
<span class="n">source</span><span class="o">.</span><span class="na">setSeed</span><span class="o">(</span><span class="mi">42</span><span class="o">);</span>
|
||
|
||
<span class="cm">/**
|
||
* We auto-correct into the range [0, 1], performing 10,000 samples to
|
||
* calculate the auto-correct values.
|
||
*/</span>
|
||
<span class="n">ModuleAutoCorrect</span> <span class="n">moduleAutoCorrect</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModuleAutoCorrect</span><span class="o">(</span><span class="mi">0</span><span class="o">,</span> <span class="mi">1</span><span class="o">);</span>
|
||
<span class="n">moduleAutoCorrect</span><span class="o">.</span><span class="na">setSource</span><span class="o">(</span><span class="n">source</span><span class="o">);</span>
|
||
<span class="n">moduleAutoCorrect</span><span class="o">.</span><span class="na">setSamples</span><span class="o">(</span><span class="mi">10000</span><span class="o">);</span>
|
||
<span class="n">moduleAutoCorrect</span><span class="o">.</span><span class="na">calculate</span><span class="o">();</span>
|
||
|
||
<span class="n">ModulePow</span> <span class="n">modulePow</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModulePow</span><span class="o">();</span>
|
||
<span class="n">modulePow</span><span class="o">.</span><span class="na">setSource</span><span class="o">(</span><span class="n">moduleAutoCorrect</span><span class="o">);</span>
|
||
<span class="n">modulePow</span><span class="o">.</span><span class="na">setPower</span><span class="o">(</span><span class="mf">2.0</span><span class="o">);</span>
|
||
|
||
<span class="n">canvas</span><span class="o">.</span><span class="na">updateImage</span><span class="o">(</span>
|
||
<span class="s">"source"</span><span class="o">,</span> <span class="n">moduleAutoCorrect</span><span class="o">,</span>
|
||
<span class="s">"pow"</span><span class="o">,</span> <span class="n">modulePow</span>
|
||
<span class="o">);</span>
|
||
<span class="o">}</span>
|
||
|
||
<span class="o">...</span>
|
||
</code></pre></div></div>
|
||
|
||
<h3 id="modulesin">ModuleSin</h3>
|
||
|
||
<p><img src="Modules_files/sin.png" class="img-responsive"></p>
|
||
|
||
<p>The sine module passes the sampled value through a sine function.</p>
|
||
|
||
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>y = sin(x)
|
||
</code></pre></div></div>
|
||
|
||
<h4 id="example-code-11">Example Code</h4>
|
||
|
||
<p>Here is a snippet from the example:</p>
|
||
|
||
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">...</span>
|
||
|
||
<span class="nd">@Override</span>
|
||
<span class="kd">protected</span> <span class="kt">void</span> <span class="nf">run</span><span class="o">(</span><span class="n">SplitCanvas</span> <span class="n">canvas</span><span class="o">)</span> <span class="o">{</span>
|
||
|
||
<span class="n">ModuleFractal</span> <span class="n">source</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModuleFractal</span><span class="o">();</span>
|
||
<span class="n">source</span><span class="o">.</span><span class="na">setAllSourceBasisTypes</span><span class="o">(</span><span class="n">ModuleBasisFunction</span><span class="o">.</span><span class="na">BasisType</span><span class="o">.</span><span class="na">SIMPLEX</span><span class="o">);</span>
|
||
<span class="n">source</span><span class="o">.</span><span class="na">setAllSourceInterpolationTypes</span><span class="o">(</span><span class="n">ModuleBasisFunction</span><span class="o">.</span><span class="na">InterpolationType</span><span class="o">.</span><span class="na">CUBIC</span><span class="o">);</span>
|
||
<span class="n">source</span><span class="o">.</span><span class="na">setNumOctaves</span><span class="o">(</span><span class="mi">5</span><span class="o">);</span>
|
||
<span class="n">source</span><span class="o">.</span><span class="na">setFrequency</span><span class="o">(</span><span class="mf">2.34</span><span class="o">);</span>
|
||
<span class="n">source</span><span class="o">.</span><span class="na">setType</span><span class="o">(</span><span class="n">ModuleFractal</span><span class="o">.</span><span class="na">FractalType</span><span class="o">.</span><span class="na">RIDGEMULTI</span><span class="o">);</span>
|
||
<span class="n">source</span><span class="o">.</span><span class="na">setSeed</span><span class="o">(</span><span class="mi">42</span><span class="o">);</span>
|
||
|
||
<span class="cm">/**
|
||
* We auto-correct into the range [0, 1], performing 10,000 samples to
|
||
* calculate the auto-correct values.
|
||
*/</span>
|
||
<span class="n">ModuleAutoCorrect</span> <span class="n">moduleAutoCorrect</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModuleAutoCorrect</span><span class="o">(</span><span class="mi">0</span><span class="o">,</span> <span class="mi">1</span><span class="o">);</span>
|
||
<span class="n">moduleAutoCorrect</span><span class="o">.</span><span class="na">setSource</span><span class="o">(</span><span class="n">source</span><span class="o">);</span>
|
||
<span class="n">moduleAutoCorrect</span><span class="o">.</span><span class="na">setSamples</span><span class="o">(</span><span class="mi">10000</span><span class="o">);</span>
|
||
<span class="n">moduleAutoCorrect</span><span class="o">.</span><span class="na">calculate</span><span class="o">();</span>
|
||
|
||
<span class="n">ModuleSin</span> <span class="n">moduleSin</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModuleSin</span><span class="o">();</span>
|
||
<span class="n">moduleSin</span><span class="o">.</span><span class="na">setSource</span><span class="o">(</span><span class="n">moduleAutoCorrect</span><span class="o">);</span>
|
||
|
||
<span class="n">canvas</span><span class="o">.</span><span class="na">updateImage</span><span class="o">(</span>
|
||
<span class="s">"source"</span><span class="o">,</span> <span class="n">moduleAutoCorrect</span><span class="o">,</span>
|
||
<span class="s">"moduleSin"</span><span class="o">,</span> <span class="n">moduleSin</span>
|
||
<span class="o">);</span>
|
||
<span class="o">}</span>
|
||
|
||
<span class="o">...</span>
|
||
</code></pre></div></div>
|
||
|
||
<h2 id="complex-manipulators">Complex Manipulators</h2>
|
||
|
||
<p>Complex manipulators are modules that take one or more sources and
|
||
perform mathematical functions on the sampled values that are more
|
||
complex than the simple manipulators.</p>
|
||
|
||
<h3 id="moduleautocorrect">ModuleAutoCorrect</h3>
|
||
|
||
<p><img src="Modules_files/autoCorrect.png" class="img-responsive"></p>
|
||
|
||
<h3 id="modulebias">ModuleBias</h3>
|
||
|
||
<p><img src="Modules_files/bias.png" class="img-responsive"></p>
|
||
|
||
<h3 id="moduleblend">ModuleBlend</h3>
|
||
|
||
<p><img src="Modules_files/blend.png" class="img-responsive"></p>
|
||
|
||
<h3 id="modulebrightcontrast">ModuleBrightContrast</h3>
|
||
|
||
<p><img src="Modules_files/brightContrast.png" class="img-responsive"></p>
|
||
|
||
<h3 id="modulecache">ModuleCache</h3>
|
||
|
||
<div class="bs-callout bs-callout-danger">
|
||
<h4>// TODO</h4>
|
||
</div>
|
||
|
||
<h3 id="modulecombiner">ModuleCombiner</h3>
|
||
|
||
<h4 id="add">Add</h4>
|
||
|
||
<p><img src="Modules_files/add.png" class="img-responsive"></p>
|
||
|
||
<h4 id="avg">Avg</h4>
|
||
|
||
<p><img src="Modules_files/avg.png" class="img-responsive"></p>
|
||
|
||
<h4 id="max">Max</h4>
|
||
|
||
<p><img src="Modules_files/max.png" class="img-responsive"></p>
|
||
|
||
<h4 id="min">Min</h4>
|
||
|
||
<p><img src="Modules_files/min.png" class="img-responsive"></p>
|
||
|
||
<h4 id="mult">Mult</h4>
|
||
|
||
<p><img src="Modules_files/mult.png" class="img-responsive"></p>
|
||
|
||
<h3 id="modulefunctiongradient">ModuleFunctionGradient</h3>
|
||
|
||
<p><img src="Modules_files/functionGradient.png" class="img-responsive"></p>
|
||
|
||
<h3 id="modulegain">ModuleGain</h3>
|
||
|
||
<p><img src="Modules_files/gain.png" class="img-responsive"></p>
|
||
|
||
<h3 id="modulemagnitude">ModuleMagnitude</h3>
|
||
|
||
<p><img src="Modules_files/magnitude.png" class="img-responsive"></p>
|
||
|
||
<h3 id="modulenormalizedcoords">ModuleNormalizedCoords</h3>
|
||
|
||
<p><img src="Modules_files/normalizedCoords.png" class="img-responsive"></p>
|
||
|
||
<h3 id="modulerotatedomain">ModuleRotateDomain</h3>
|
||
|
||
<p><img src="Modules_files/rotateDomain.png" class="img-responsive"></p>
|
||
|
||
<h3 id="modulesawtooth">ModuleSawtooth</h3>
|
||
|
||
<p><img src="Modules_files/sawtooth.png" class="img-responsive"></p>
|
||
|
||
<h3 id="modulescaledomain">ModuleScaleDomain</h3>
|
||
|
||
<p><img src="Modules_files/scaleDomain.png" class="img-responsive"></p>
|
||
|
||
<h3 id="modulescaleoffset">ModuleScaleOffset</h3>
|
||
|
||
<p><img src="Modules_files/scaleOffset.png" class="img-responsive"></p>
|
||
|
||
<h3 id="moduleselect">ModuleSelect</h3>
|
||
|
||
<p><img src="Modules_files/select.png" class="img-responsive"></p>
|
||
|
||
<h3 id="moduletiers">ModuleTiers</h3>
|
||
|
||
<p><img src="Modules_files/tiers.png" class="img-responsive"></p>
|
||
|
||
<h3 id="moduletranslatedomain">ModuleTranslateDomain</h3>
|
||
|
||
<p><img src="Modules_files/translateDomain.png" class="img-responsive"></p>
|
||
|
||
<h3 id="moduletriangle">ModuleTriangle</h3>
|
||
|
||
<p><img src="Modules_files/triangle.png" class="img-responsive"></p>
|
||
|
||
</article>
|
||
|
||
</div>
|
||
|
||
<div class="col-md-3">
|
||
<nav id="toc" class="hidden-print hidden-sm hidden-xs affix" data-spy="affix" data-toggle="toc" data-offset-top="128"><ul class="nav"><li class=""><a href="#modulebasisfunction">ModuleBasisFunction</a><ul class="nav"><li class=""><a href="#basistypegradient">BasisType.GRADIENT</a></li><li class=""><a href="#basistypegradval">BasisType.GRADVAL</a></li><li class=""><a href="#basistypesimplex">BasisType.SIMPLEX</a></li><li class=""><a href="#basistypevalue">BasisType.VALUE</a></li><li class=""><a href="#basistypewhite">BasisType.WHITE</a></li><li class=""><a href="#example-code">Example Code</a></li></ul></li><li class=""><a href="#modulecellgen">ModuleCellGen</a></li><li class=""><a href="#modulecellular">ModuleCellular</a><ul class="nav"><li class=""><a href="#example-code-1">Example Code</a></li></ul></li><li class="active"><a href="#modulefractal">ModuleFractal</a><ul class="nav"><li class=""><a href="#billow">Billow</a></li><li class=""><a href="#decarpentierswiss">deCarpentierSwiss</a></li><li class="active"><a href="#fbm">FBM</a></li><li><a href="#hybridmulti">HybridMulti</a></li><li><a href="#multi">Multi</a></li><li><a href="#ridgemulti">RidgeMulti</a></li><li><a href="#basistypewhite-1">BasisType.WHITE</a></li><li><a href="#example-code-2">Example Code</a></li></ul></li><li><a href="#modulegradient">ModuleGradient</a><ul class="nav"><li><a href="#example-code-3">Example Code</a></li></ul></li><li><a href="#modulesphere">ModuleSphere</a><ul class="nav"><li><a href="#example-code-4">Example Code</a></li></ul></li><li><a href="#simple-manipulators">Simple Manipulators</a><ul class="nav"><li><a href="#moduleabs">ModuleAbs</a></li><li><a href="#moduleclamp">ModuleClamp</a></li><li><a href="#modulecos">ModuleCos</a></li><li><a href="#modulefloor">ModuleFloor</a></li><li><a href="#moduleinvert">ModuleInvert</a></li><li><a href="#modulepow">ModulePow</a></li><li><a href="#modulesin">ModuleSin</a></li></ul></li><li><a href="#complex-manipulators">Complex Manipulators</a><ul class="nav"><li><a href="#moduleautocorrect">ModuleAutoCorrect</a></li><li><a href="#modulebias">ModuleBias</a></li><li><a href="#moduleblend">ModuleBlend</a></li><li><a href="#modulebrightcontrast">ModuleBrightContrast</a></li><li><a href="#modulecache">ModuleCache</a></li><li><a href="#modulecombiner">ModuleCombiner</a></li><li><a href="#modulefunctiongradient">ModuleFunctionGradient</a></li><li><a href="#modulegain">ModuleGain</a></li><li><a href="#modulemagnitude">ModuleMagnitude</a></li><li><a href="#modulenormalizedcoords">ModuleNormalizedCoords</a></li><li><a href="#modulerotatedomain">ModuleRotateDomain</a></li><li><a href="#modulesawtooth">ModuleSawtooth</a></li><li><a href="#modulescaledomain">ModuleScaleDomain</a></li><li><a href="#modulescaleoffset">ModuleScaleOffset</a></li><li><a href="#moduleselect">ModuleSelect</a></li><li><a href="#moduletiers">ModuleTiers</a></li><li><a href="#moduletranslatedomain">ModuleTranslateDomain</a></li><li><a href="#moduletriangle">ModuleTriangle</a></li></ul></li></ul></nav>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
<footer class="site-footer">
|
||
|
||
<div class="wrap container-fluid">
|
||
|
||
<div class="info col-md-6 col-xs-12">
|
||
<img class="logo" src="Modules_files/logo-small.png">
|
||
|
||
<ul>
|
||
<li class="site-title">SudoPlay Games</li>
|
||
<li><a href="mailto:joise@sudoplaygames.com">joise@sudoplaygames.com</a></li>
|
||
|
||
<li>
|
||
|
||
<a href="https://github.com/sudoplaygames">
|
||
<i class="fa fa-github"></i>
|
||
</a>
|
||
|
||
|
||
|
||
<a href="https://twitter.com/sudoplaygames">
|
||
<i class="fa fa-twitter"></i>
|
||
</a>
|
||
|
||
|
||
<a href="https://joise.sudoplaygames.com/feed.xml">
|
||
<i class="fa fa-rss"></i>
|
||
</a>
|
||
</li>
|
||
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="col-md-6 col-xs-12">
|
||
<p class="text">Joise is a 2D, 3D, 4D and 6D modular noise library
|
||
written in Java, derived from Joshua Tippetts' Accidental Noise
|
||
Library, and maintained by SudoPlay Games.</p>
|
||
<p class="text">Joise ©2018 Jason Taylor. Released as open-source under <a href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License, Version 2.0</a>.</p>
|
||
<p class="text">SudoPlay Games is a small, independent game studio located in Oregon, USA.</p>
|
||
<p class="text">©2018 SudoPlay Games. All rights reserved.</p>
|
||
</div>
|
||
|
||
<div class="col-md-12">
|
||
<p></p>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
</footer>
|
||
|
||
|
||
<div id="cboxOverlay" style="display: none;"></div><div id="colorbox" class="" role="dialog" tabindex="-1" style="display: none;"><div id="cboxWrapper"><div><div id="cboxTopLeft" style="float: left;"></div><div id="cboxTopCenter" style="float: left;"></div><div id="cboxTopRight" style="float: left;"></div></div><div style="clear: left;"><div id="cboxMiddleLeft" style="float: left;"></div><div id="cboxContent" style="float: left;"><div id="cboxTitle" style="float: left;"></div><div id="cboxCurrent" style="float: left;"></div><button type="button" id="cboxPrevious"></button><button type="button" id="cboxNext"></button><button id="cboxSlideshow"></button><div id="cboxLoadingOverlay" style="float: left;"></div><div id="cboxLoadingGraphic" style="float: left;"></div></div><div id="cboxMiddleRight" style="float: left;"></div></div><div style="clear: left;"><div id="cboxBottomLeft" style="float: left;"></div><div id="cboxBottomCenter" style="float: left;"></div><div id="cboxBottomRight" style="float: left;"></div></div></div><div style="position: absolute; width: 9999px; visibility: hidden; display: none; max-width: none;"></div></div></body></html> |