See this playlist of examples on Youtube.
Install with npm install attractors
or just clone this repository.
Add a canvas to your page: <canvas id="paint-canvas"></canvas>
Configure the library with a global config
object (sorry)
<script type="text/javascript">
var config = {
id: 'paint-canvas',
init_scale: 1,
text: 'A T T R A C T O R S',
text_position_x: 50,
text_position_y: 33,
text_width_ratio: 12,
background_color: '#57A3BD',
nb_attractors: 25,
particule_density: 900,
line_width: 0.35,
nogo_zone: false,
color1: '#DBCEC1',
color2: '#F7F6F5',
pixelratio: window.devicePixelRatio,
root: 'node_modules/attractors/'
}
</script>
If you use the text
attribute, load the opentype
library: <script src="node_modules/attractors/lib/opentype.min.js"></script>
Load the module: <script src="node_modules/attractors/ninis.js"></script>
These describe the attributes of the config
object that is expected from the library.
id
: ID of the DOM canvas on which to paint
background_color
: Color to be used as background color. Expects a Canvas compatible color (example: #57A3BD
)
line_width
: Width of the particle strokes, in pixel.
color1
: Color to be used for particle trails (example: '#DBCEC1')
color2
: Secondary color to be used for particle trails (example: '#F7F6F5')
shadow_scale
: Scale of the shadow, defaults to 1
.
nb_attractors
: Number of attractors in the piece
particule_density
: Density of particle to create, for a square of 1000 * 1000.
init_scale
: The scale at which particles are initialized.
1 means they will spread on an area the size of the screen.
2 twice the size of the screen.
0.5 half the size of the screen.
text
: String of text to display that will interact with particles
text_position_x
text_position_y
text_width_ratio
pixelratio
: Number of points in a screen pixel (example: Set to 2 on Retina screens). Defaults to window.devicePixelRatio
nogo_zone
: Boolean, if set to true, will instanciate areas without particles.
nogoCircles
: Array of objects contaning data for empty circles.
svg
: If set to true, will keep an SVG version of the render in memory
one_path
: If set to true, the created SVG will be stored into one single path.