npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

terrapaint

v2.0.2

Published

Simple heightmap generator for HTML5 canvas

Downloads

15

Readme

terrapaint

Canvas heightmap generator

Island heightmap

More demonstrations here: https://scottyfillups.github.io/terrapaint/

Installation

If you plan to use Browserify or Webpack: npm install terrapaint --save-dev

Usage

Either embed

<script src="https://scottyfillups.github.io/terrapaint/terrapaint.js></script>

in your HTML source, or, if you're using Webpack / Browserify:

var terrapaint = require('terrapaint')

// Or,
// import terrapaint from 'terrapaint'

var map = terrapaint.map(noiseFn, config)
map.create('#target', 128, 128)
map.loop()

terrapaint.map(fn, config)

  • fn: The noise function used to generate the heightmap. The function's output should range from [0, 1]. If it ranges from [-1, 1], set config.offset = true
  • config:
    • colormap: A function that takes the perlin noise value (mapped to [0, 255]) and returns a RGBA array ([R,G,B,A]). Or, a multi-dimensional array lookup up table, storing a RGBA array for each index ranging from 0 to 255.
    • offset: Set this to true if your noise function ranges from [-1, 1]. Defaults to false.
    • period: For gradient noise, the size (side length) of a unit square, in pixels. Defaults to 32.
    • octaves: The number of octaves. Defaults to 1.
    • persistance: The persistance of the octaves (a higher value means the successive octaves will be given more weight). Defaults to 2.
    • update: A function called 60 times per second updating non-physical dimensions passed to the noise function. Takes in an array storing the present values, and should return an array with the updated values.
    • init: The initial value (array) for the update function.
    • thisArg: The this object of the function, if needed
  • Returns Map

Map.create(target, width, height)

Creates and appends a new canvas to the specified target.

  • target: The selector (jQuery style) or DOM object of the element that the canvas should be appended to.
  • width: The width of the canvas, in pixels.
  • height: The height of the canvas, in pixels.

Map.draw(canvas)

Draws the heightmap onto the specified canvas.

  • canvas: The selector or DOM object of the canvas

Map.loop()

Animate the heightmap using the update and init values specified in the terrapaint.map( ... ) config

Map.stop()

Stops the heightmap animation.

Aside

Keep in mind you need to provide your own noise function. For now, I recommend noisejs, which provides simplex and perlin noise. I have a feeling some new noise library might be coming out soon though, just a hunch ;)