forked from williamngan/pt
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpt-extend.js.map
More file actions
1 lines (1 loc) · 56.3 KB
/
Copy pathpt-extend.js.map
File metadata and controls
1 lines (1 loc) · 56.3 KB
1
{"version":3,"sources":["pt-extend.coffee"],"names":[],"mappings":"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","file":"pt-extend.js","sourceRoot":"/source/","sourcesContent":["\r\n# ### Simple easing functions based on Robert Penner's functions.\r\nclass Easing\r\n\r\n # ## Linear interpolation\r\n # @param `t` current time or iteration\r\n # @param `b` start value\r\n # @param `c` change in value\r\n # @param `d` duration time or total iteration\r\n # @return interpolated value\r\n @linear: (t, b, c, d) ->\r\n return c * (t /= d) + b\r\n\r\n @_linear:(t) -> Easing.linear(t, 0, 1, 1)\r\n\r\n @quadIn: (t, b, c, d) ->\r\n return c * (t /= d) * t + b\r\n\r\n @_quadIn: (t) -> Easing.quadIn(t, 0, 1, 1)\r\n\r\n @quadOut: (t, b, c, d) ->\r\n return -c * (t /= d) * (t - 2) + b\r\n\r\n @_quadOut: (t) -> Easing.quadOut(t, 0, 1, 1)\r\n\r\n @cubicIn: (t, b, c, d) ->\r\n t = t/d\r\n return c * t * t * t + b\r\n\r\n @_cubicIn: (t) -> Easing.cubicIn(t, 0, 1, 1)\r\n\r\n @cubicOut: (t, b, c, d) ->\r\n t = t/d\r\n return c * ((t - 1) * t * t + 1) + b\r\n\r\n @_cubicOut: (t) -> Easing.cubicOut(t, 0, 1, 1)\r\n\r\n @elastic: (t, b, c, d, el=0.3) ->\r\n s = 1.70158\r\n p = d * el\r\n a = c\r\n if t == 0 then return b\r\n t = t/d\r\n if t == 1 then return b + c\r\n if a < Math.abs(c)\r\n a = c\r\n s = p / 4\r\n else if a != 0\r\n s = p / Const.two_pi * Math.asin(c / a)\r\n else\r\n s = 0\r\n\r\n return a * Math.pow(2, -10 * t) * Math.sin((t * d - s) * Const.two_pi / p) + c + b\r\n\r\n @_elastic: (t) -> Easing.elastic(t, 0, 1, 1)\r\n\r\n @bounce: (t, b, c, d) ->\r\n if (t /= d) < (1 / 2.75)\r\n return c * (7.5625 * t * t) + b\r\n else if t < (2 / 2.75)\r\n return c * (7.5625 * (t -= 1.5 / 2.75) * t + 0.75) + b\r\n else if t < (2.5 / 2.75)\r\n return c * (7.5625 * (t -= 2.25 / 2.75) * t + 0.9375) + b\r\n else\r\n return c * (7.5625 * (t -= 2.625 / 2.75) * t + 0.984375) + b\r\n\r\n @_bounce: (t) -> Easing.bounce(t, 0, 1, 1)\r\n\r\n\r\n# namespace\r\nthis.Easing = Easing\n# ### (In progress) Like Grid, but expand the rows as needed to fit more items.\r\nclass GridCascade extends Grid\r\n constructor : () ->\r\n super\r\n\r\n @startRow = 0\r\n\r\n # ## Clear the layout and re-make the initial grid\r\n # simplified because rows are auto-expanded in fit()\r\n resetLayout : () ->\r\n @layout = []\r\n @startRow = 0\r\n\r\n\r\n # ## Mark a certain area in the grid as occupied. This also checks for new rows, which is not checked in Grid\r\n # @param `x` column index\r\n # @param `y` row index\r\n # @param `W` column width\r\n # @param `h` row size\r\n # @return this grid\r\n occupy : ( x, y, w, h ) ->\r\n for c in [x...(w+x)]\r\n for r in [y...(h+y)]\r\n if not @layout[r]? then @layout[r] = []\r\n @layout[ r ][ c ] = 1\r\n\r\n return @\r\n\r\n # ## optimize the iteration by starting at a row that has free cells\r\n findStartRow : () ->\r\n index = @startRow\r\n for r in [@startRow...@rows]\r\n index = r\r\n for c in [0...@columns]\r\n if @layout[r]?\r\n if !@layout[r][c]? or @layout[r][c] <= 0 then return index\r\n\r\n return index\r\n\r\n # ## fit this area within the grid. This expands new rows to fit more items as needed.\r\n # @param `width` number of columns\r\n # @param `height` number of rows\r\n # @return an object with properties `row` and `column` to specify the top left position, `columnSize` and `rowSize` to specify the resulting size in grid units, and `bound` which is the actual area as a Rectangle object.\r\n fit : ( cols, rows ) ->\r\n\r\n # find column size, bound by maximum columns in the grid\r\n colSize = Math.min( cols, @columns )\r\n\r\n # go through each grid cell\r\n # each row\r\n for currRow in [@startRow...@rows]\r\n\r\n colCount = colSize # counter to find available columns\r\n freeCol = 0 # start position of first free column\r\n\r\n # if this is the last row, create more rows to fit\r\n if currRow+rows >= @rows then @rows += (rows)\r\n\r\n # create new row if it does not exist\r\n if not @layout[currRow]? then @layout[currRow] = []\r\n\r\n # each column\r\n for currCol in [0...@columns]\r\n cell = @layout[currRow][currCol]\r\n\r\n # if cell is filled\r\n if cell? and cell > 0\r\n freeCol = currCol+1 # this column is not free\r\n colCount = colSize # reset colCount if it's counting\r\n\r\n # if cell is not filled\r\n else\r\n\r\n # see if the next one fits\r\n colCount--\r\n\r\n # can fit all\r\n if colCount is 0\r\n\r\n # check for the edge case where subsequent rows are already occupied\r\n allRowsFree = true\r\n if rows > 1\r\n for rc in [currRow...(currRow+rows)]\r\n if rc <= @rows and @layout[rc]? and @layout[rc][freeCol] > 0\r\n allRowsFree = false\r\n break\r\n\r\n # return cell only when rows and columns are free\r\n if allRowsFree\r\n\r\n # mark this area as occupied\r\n @occupy( freeCol, currRow, colSize, rows )\r\n\r\n # optimize looping by finding next start row\r\n if currRow > @startRow then @startRow = @findStartRow()\r\n\r\n # calculate the bounding box\r\n b = new Rectangle( @$add( @cell.size.$multiply( freeCol, currRow ) ) ) # top left\r\n b.resizeTo( @cell.size.$multiply( colSize, rows ) ) # size\r\n\r\n return {\r\n row: currRow\r\n column: freeCol\r\n columnSize: colSize\r\n rowSize: rows\r\n bound: b\r\n }\r\n\r\n # cannot fit\r\n console.error( \"cannot fit #{currRow} #{freeCol} #{cols} #{rows}\" )\r\n return false\r\n\r\n\r\n# namespace\r\nthis.GridCascade = GridCascade\n# ### (In progress) A very basic particle emitter\r\nclass ParticleEmitter extends Vector\r\n\r\n # ## Constructor\r\n constructor: ( ) ->\r\n super\r\n\r\n @system = null\r\n @lastTime = 0\r\n @period = 0\r\n @animateID = -1 # for Space loop\r\n\r\n # ## Initiate with an instance of a `ParticleSystem`\r\n init: ( system ) ->\r\n @system = system\r\n\r\n # ## Set frequency of emisson.\r\n # @param `f` how many per second.\r\n frequency: (f) ->\r\n @period = 1000 / f\r\n return @\r\n\r\n # ## emit a particle (abstract method)\r\n emit: ->\r\n # override to define an emitter function\r\n # e.g @system.add( new Particle( @position ) )\r\n\r\n # ## animate function to be called by Space\r\n animate: ( time, frame, ctx ) ->\r\n if time - @lastTime > @period\r\n @emit()\r\n @lastTime = time\r\n\r\n\r\n# namespace\r\nthis.ParticleEmitter = ParticleEmitter\n# ### (In progress) An area that influence force, velocity, etc of particles inside it\r\nclass ParticleField extends Rectangle\r\n\r\n constructor: ()->\r\n super\r\n @system = undefined\r\n\r\n # ## check particles to work on\r\n # @param {particles} array of particles\r\n # @param {removal} if true and if particle within bound, then remove it from array\r\n check: (particles, removal=false) ->\r\n temp = []\r\n for p in particles\r\n if @hasIntersect( p ) # within\r\n @work( p )\r\n else\r\n temp.push( p )\r\n\r\n return ( if removal then temp else particles )\r\n\r\n # ## apply the changes to a particle (abstract method), used in check()\r\n # @param {p} a particle\r\n work: (p) ->\r\n\r\n\r\n\r\n\r\n# namespace\r\nthis.ParticleField = ParticleField\n# ### A basic quad tree implementation\r\nclass QuadTree extends Rectangle\r\n\r\n # ## Create a new QuadTree, which is a kind of Rectangle\r\n constructor: () ->\r\n super\r\n\r\n # when split, this is an object with topLeft, topRight, bottomLeft, and bottomRight\r\n @quads = false\r\n\r\n @items = []\r\n\r\n @depth = 0\r\n @max_depth = 6\r\n @max_items = 2\r\n\r\n\r\n # ## Get a list of quads in which this point is contained\r\n # @param `p` is a Point\r\n # @param `list` Optional existing list to append to\r\n getQuads: ( p, list=[] ) ->\r\n\r\n if @intersectPoint( p )\r\n\r\n list.push( @ )\r\n\r\n if @quads\r\n for k, q of @quads\r\n if q.intersectPoint( p )\r\n q.getQuads( p, list )\r\n\r\n return list\r\n\r\n # ## Get a list of items in this point's deepest quad\r\n # @param `p` a Point\r\n getItems: ( p ) ->\r\n\r\n if @intersectPoint( p )\r\n\r\n if !@quads then return @items\r\n\r\n if @quads\r\n for k, q of @quads\r\n if q.intersectPoint( p )\r\n return q.getItems( p )\r\n\r\n return []\r\n\r\n # ## Add an item into this QuadTree. Split to sub quads if needed.\r\n addToQuad: (item) ->\r\n\r\n if !item then return -1\r\n\r\n # if this has subs quads\r\n if @quads\r\n for k, q of @quads\r\n _depth = q.addToQuad( item )\r\n if _depth > 0 then return _depth # return depth if it's added\r\n\r\n # otherwise return -1\r\n return -1\r\n\r\n # if this has no sub quads and it contains item\r\n if !@quads and @intersectPoint( item )\r\n\r\n # if max size is reached and depth is not max, then split to sub quads\r\n if @items.length >= @max_items\r\n if @depth < @max_depth\r\n @splitQuad()\r\n return @addToQuad( item )\r\n else\r\n return -1\r\n\r\n # if not max size yet, just add item and return current depth\r\n else\r\n @items.push( item )\r\n return @depth\r\n\r\n # not contained in this quad\r\n return -1\r\n\r\n\r\n # ## Split this into 4 quads using Rectangle's `quadrant()`\r\n splitQuad: () ->\r\n\r\n # split to sub quads and increment depth\r\n @quads = @quadrants()\r\n for k, q of @quads\r\n q.depth = @depth+1\r\n\r\n # add current items to sub quads\r\n for item, i in @items\r\n _depth = @addToQuad( item )\r\n\r\n # if it's added to sub quads, mark for removal\r\n if _depth > @depth\r\n @items[i] = null\r\n\r\n # remove items that are marked null\r\n for t in @items\r\n if !t\r\n @items.splice( t, 1 )\r\n\r\n\r\n # ## reset this quad, removing items and sub-quads\r\n resetQuad: () ->\r\n @items = []\r\n if @quads\r\n for k, q of @quads\r\n q.resetQuad()\r\n @quads = false\r\n\r\n\r\n\r\n# namespace\r\nthis.QuadTree = QuadTree\n# ### Point sampling using Best Candidate and Poisson methods.\r\nclass SamplePoints extends PointSet\r\n\r\n # ## Construct a point sampler\r\n constructor: () ->\r\n super\r\n\r\n @bestcandidate = null\r\n @poisson = null\r\n @bound = null\r\n @boundsize = null\r\n\r\n # ## Add a bound.\r\n # @param `b` the bounding box\r\n # @param `anchor` a boolean value. If set to `true`, then current position is set to bound's position\r\n # @return this sampler\r\n setBounds: ( b, anchor=false ) ->\r\n if anchor then @set( b )\r\n @bound = new Rectangle(@).size( b.size() )\r\n return @\r\n\r\n\r\n # ## Initiate a best candidate sampler\r\n # @return this sampler\r\n bestCandidateSampler: () ->\r\n\r\n @points = []\r\n\r\n # set boundary if @bound if not set\r\n if !@bound then @bound = new Rectangle().size(500,500)\r\n @boundsize = @bound.size()\r\n\r\n @bestcandidate = {\r\n halfsize: @boundsize.$divide(2)\r\n quartersize: @boundsize.$divide(4)\r\n maxDist: @boundsize.x*@boundsize.x + @boundsize.y*@boundsize.y\r\n }\r\n\r\n return @\r\n\r\n\r\n # ## Initiate a poisson sampler using Bridson's algorithm\r\n # Based on http://bl.ocks.org/mbostock/19168c663618b7f07158\r\n # @return this sampler\r\n poissonSampler: (radius) ->\r\n\r\n @points = []\r\n\r\n # set boundary if @bound if not set\r\n if !@bound then @bound = new Rectangle().size(500,500)\r\n @boundsize = @bound.size()\r\n\r\n cellsize = radius * Math.SQRT1_2\r\n\r\n @poisson = {\r\n grid: []\r\n gridWidth: Math.ceil( @boundsize.x / cellsize )\r\n gridHeight: Math.ceil( @boundsize.y / cellsize )\r\n cellSize: cellsize\r\n radius: radius\r\n radius2: radius * radius\r\n R: 3 * radius * radius\r\n queue: []\r\n queueSize: 0\r\n sampleSize: 0\r\n sincos: Util.sinCosTable()\r\n }\r\n\r\n return @\r\n\r\n # ## Get a sample from poisson sampler or best-candidate sampler.\r\n # @param `numSamples` number of times to sample. Defaults to 10 times\r\n # @param `type` sampling type, either \"poisson\" or \"bestcandidate\". Defaults to \"bestcandidate\".\r\n # @return a point, or false if no more sample can be found\r\n sample: ( numSamples=10, type=false ) ->\r\n\r\n # Poisson\r\n if @poisson and type=='poisson'\r\n\r\n # check if it's done\r\n if @poisson.sampleSize > 0 and @poisson.queueSize == 0 then return false\r\n\r\n # create first sample\r\n if !@poisson.sampleSize then return @_poissonSample( @bound.x+@boundsize.x/2, @bound.y+@boundsize.y/2 )\r\n\r\n while (@poisson.queueSize)\r\n i = Math.floor( Math.random() * @poisson.queueSize )\r\n s = @poisson.queue[i];\r\n\r\n for j in [0...numSamples] by 1\r\n a = Math.floor(360 * Math.random())\r\n r = Math.sqrt(Math.random() * @poisson.R + @poisson.radius2)\r\n x = s.x + r * @poisson.sincos.cos[a]\r\n y = s.y + r * @poisson.sincos.sin[a]\r\n\r\n if (x >= @bound.x && x < @boundsize.x && y >= @bound.y && y < @boundsize.y && @_poissonCheck(x, y))\r\n return @_poissonSample(x, y) # point is stored in @poisson.grid instead of @points\r\n\r\n @poisson.queue[i] = @poisson.queue[--@poisson.queueSize];\r\n @poisson.queue.length = @poisson.queueSize;\r\n\r\n return true\r\n\r\n # Best candidate\r\n else if @bestcandidate\r\n\r\n best = null\r\n bestDist = -1\r\n\r\n for i in [0...numSamples] by 1\r\n\r\n # create sample\r\n p = new Vector( @bound.x + @boundsize.x * Math.random(), @bound.y + @boundsize.y * Math.random() )\r\n if @points.length == 0\r\n best = p\r\n break\r\n else\r\n # best point is the one that has the \"largest\" nearest distance\r\n nearest = @_bestCandidateCheck( p )\r\n if nearest > bestDist\r\n best = p\r\n bestDist = nearest\r\n\r\n if best then @points.push( best )\r\n\r\n return best\r\n\r\n\r\n # find nearest distance of best candidate sample\r\n _bestCandidateCheck: (p) ->\r\n _dist = @bestcandidate.maxDist\r\n\r\n # rough optimization. Only search for points in the quarter bound area of this point\r\n halfbound = new Rectangle( p.x-@bestcandidate.quartersize.x, p.y-@bestcandidate.quartersize.y).size( @bestcandidate.halfsize.x, @bestcandidate.halfsize.y )\r\n matches = (it for it in @points when halfbound.intersectPoint( it ))\r\n\r\n for w in matches\r\n dx = (w.x-p.x)\r\n dy = (w.y-p.y)\r\n dist = dx*dx + dy*dy\r\n if dist < _dist\r\n _dist = dist\r\n\r\n return _dist\r\n\r\n\r\n # create a poisson sample\r\n _poissonSample: (x, y) ->\r\n s = new Point(x, y)\r\n @poisson.queue.push(s);\r\n @poisson.grid[ @poisson.gridWidth * (y / @poisson.cellSize | 0) + (x / @poisson.cellSize | 0)] = s\r\n @poisson.sampleSize++\r\n @poisson.queueSize++\r\n return s\r\n\r\n # check if poisson sample is too far\r\n _poissonCheck: (x, y) ->\r\n i = Math.floor( x / @poisson.cellSize )\r\n j = Math.floor( y / @poisson.cellSize )\r\n i0 = Math.max(i - 2, 0)\r\n j0 = Math.max(j - 2, 0)\r\n i1 = Math.min(i + 3, @poisson.gridWidth)\r\n j1 = Math.min(j + 3, @poisson.gridHeight)\r\n\r\n for j in [j0...j1] by 1\r\n o = j * @poisson.gridWidth\r\n for i in [i0...i1] by 1\r\n s = @poisson.grid[o + i]\r\n if s\r\n dx = s.x - x\r\n dy = s.y - y\r\n if (dx * dx + dy * dy < @poisson.radius2) then return false\r\n\r\n return true\r\n\r\n # ## A static implementation of Mitchell's Best Neighor Algorithm to generate one sample. (Consider using `SamplePoints` object instead)\r\n # @param `bound` a Rectangle object to specify the bounding box\r\n # @param `items` an array of existing items\r\n # @param `samples` number of sampling. Default to 10.\r\n # @return o Vector object which is best candidate\r\n @bestCandidate: ( bound, items, samples=10 ) ->\r\n\r\n # bound\r\n size = bound.size()\r\n halfsize = size.$divide(2)\r\n quartersize = size.$divide(4)\r\n maxDist = size.x*size.x + size.y*size.y\r\n\r\n # find nearest distance\r\n _nearest = ( p ) ->\r\n _dist = maxDist\r\n\r\n # rough optimization. Only search for points in the quarter bound area of this point\r\n halfbound = new Rectangle( p.x-quartersize.x, p.y-quartersize.y).size( halfsize.x, halfsize.y )\r\n matches = (it for it in items when halfbound.intersetPoint( it ))\r\n\r\n for w in matches\r\n dx = (w.x-p.x)\r\n dy = (w.y-p.y)\r\n dist = dx*dx + dy*dy\r\n if dist < _dist\r\n _dist = dist\r\n\r\n return _dist\r\n\r\n\r\n # find best point by going through a number of random samples\r\n best = null\r\n bestDist = -1\r\n\r\n for i in [0...samples]\r\n\r\n # create sample\r\n p = new Vector( bound.x + size.x * Math.random(), bound.y + size.y * Math.random() )\r\n if items.length == 0\r\n return p\r\n else\r\n # best point is the one that has the \"largest\" nearest distance\r\n nearest = _nearest( p )\r\n if nearest > bestDist\r\n best = p\r\n bestDist = nearest\r\n\r\n return best\r\n\r\n# namespace\r\nthis.SamplePoints = SamplePoints\n# ### A Bound subdivided in horizontal and vertical stripes\r\nclass StripeBound extends Rectangle\r\n\r\n constructor: () ->\r\n super\r\n\r\n @frequency = new Point()\r\n @stripes = new Point()\r\n @method = 'frequency'\r\n\r\n @mask = null\r\n\r\n # ## Determines the number of stripes by frequency, and change method to frequency\r\n setFrequency: (x, y) ->\r\n @frequency = new Vector(x, y)\r\n @method = 'frequency'\r\n\r\n\r\n # ## Set number of strips by number, and change method to stripes\r\n setStripes: (x, y) ->\r\n @stripes = new Point(x,y)\r\n @method = 'stripes'\r\n\r\n\r\n # ## get stripes as boxes\r\n # @return boxes of `{columns:[Pairs], rows:[Pairs]}`\r\n getStripes: () ->\r\n size = @size()\r\n result = {columns: [], rows: []}\r\n\r\n # calculate frequency and spacing\r\n freq = if @method == 'frequency' then @frequency.clone() else size.$divide( @stripes ).floor()\r\n diff = size.$divide( freq )\r\n\r\n # rows\r\n for d in [0..freq.y-1]\r\n dy = diff.y*d\r\n p = new Pair(0, dy).to(size.x, dy+diff.y).add(@)\r\n p.p1.add(@)\r\n result.rows.push( p )\r\n\r\n # columns\r\n for d in [0..freq.x-1]\r\n dx = diff.x*d\r\n p = new Pair(dx, 0).to(dx+diff.x+0.5, size.y).add(@)\r\n p.p1.add(@)\r\n result.columns.push( p )\r\n\r\n return result\r\n\r\n # ## get stripes as lines\r\n # @return lines of `{columns:[Pairs], rows:[Pairs]}`\r\n getStripeLines: () ->\r\n size = @size()\r\n result = {columns: [], rows: []}\r\n\r\n # calculate frequency and spaci ng\r\n freq = if @method == 'frequency' then @frequency.clone() else size.$divide( @stripes ).floor()\r\n diff = size.$divide( freq )\r\n\r\n # rows\r\n for d in [0..freq.y]\r\n dy = diff.y*d\r\n p = new Pair(0, dy).to(size.x, dy).add(@)\r\n p.p1.add(@)\r\n result.rows.push( p )\r\n\r\n # columns\r\n for d in [0..freq.x]\r\n dx = diff.x*d\r\n p = new Pair(dx, 0).to(dx, size.y).add(@)\r\n p.p1.add(@)\r\n result.columns.push( p )\r\n\r\n return result\r\n\r\n\r\n # ## create a masking area for canvas clipping. Defaults to position in the center of the bound, unless anchor paramater is set\r\n # @param `w, h` mask width and height\r\n # @param `anchor` optional anchor point, or leave unset to default anchor position which is center of the bound.\r\n setMask: (w, h, anchor=false) ->\r\n @mask = new Rectangle(@x, @y)\r\n sz = @size()\r\n\r\n # center it if no anchor point is set\r\n if !anchor\r\n diff = sz.$subtract( w, h ).divide(2)\r\n anchor = new Point(@x+diff.x, @y+diff.y)\r\n else\r\n anchor = @.$add(anchor)\r\n\r\n # position and set size\r\n @mask.set( anchor.x, anchor.y).size(w, h)\r\n\r\n\r\n # ## anchor mask to bound's origin position\r\n anchorMask: () ->\r\n d = @.$subtract( @mask)\r\n @.moveBy(d)\r\n @mask.moveBy(d)\r\n\r\n# namespace\r\nthis.StripeBound = StripeBound\n# ### (In progress) A simple handle that can be dragged by mouse\r\nclass UI extends Rectangle\r\n\r\n # class variable tracks if a handle has been dragged (to avoid dragging multiple handles at once)\r\n @dragTarget: null\r\n\r\n constructor: () ->\r\n super\r\n @dragging = false\r\n\r\n animate : (time, frame, ctx) ->\r\n ctx.fillStyle = '#f00'\r\n Form.rect( ctx, this )\r\n\r\n onMouseAction: (type, x, y, evt) ->\r\n if @intersectPoint( x, y )\r\n if type == 'drag' and !UI.dragTarget\r\n @dragging = true\r\n UI.dragTarget = this\r\n\r\n if @dragging and type == 'move'\r\n @moveTo(x,y).moveBy( @size().multiply(-0.5) ) # move and anchor by center point\r\n\r\n if type == 'drop'\r\n @dragging = false\r\n UI.dragTarget = null\r\n\r\n\r\n# namespace\r\nthis.UI = UI\n# ### Generate Perlin and Simplex2D noise.\r\nclass Noise extends Vector\r\n\r\n # Perlin noise implementation based on Stefan Gustavson's java implementation\r\n # http://webstaff.itn.liu.se/~stegu/simplexnoise/simplexnoise.pdf\r\n # http://webstaff.itn.liu.se/~stegu/simplexnoise/SimplexNoise.java\r\n # coffeescript based on sj26's simplex port: https://gist.github.com/sj26/6145489\r\n\r\n grad3: [\r\n [1,1, 0], [-1,1, 0], [1,-1,0], [-1,-1,0],\r\n [1,0, 1], [-1, 0, 1], [1,0,-1], [-1,0,-1],\r\n [0, 1,1], [ 0,-1,1], [0,1,-1], [ 0,-1,-1]\r\n ]\r\n\r\n simplex: [\r\n [0,1,2,3], [0,1,3,2], [0,0,0,0], [0,2,3,1], [0,0,0,0], [0,0,0,0]\r\n [0,0,0,0], [1,2,3,0], [0,2,1,3], [0,0,0,0], [0,3,1,2], [0,3,2,1]\r\n [0,0,0,0], [0,0,0,0], [0,0,0,0], [1,3,2,0], [0,0,0,0], [0,0,0,0]\r\n [0,0,0,0], [0,0,0,0], [0,0,0,0], [0,0,0,0], [0,0,0,0], [0,0,0,0]\r\n [1,2,0,3], [0,0,0,0], [1,3,0,2], [0,0,0,0], [0,0,0,0], [0,0,0,0]\r\n [2,3,0,1], [2,3,1,0], [1,0,2,3], [1,0,3,2], [0,0,0,0], [0,0,0,0]\r\n [0,0,0,0], [2,0,3,1], [0,0,0,0], [2,1,3,0], [0,0,0,0], [0,0,0,0]\r\n [0,0,0,0], [0,0,0,0], [0,0,0,0], [0,0,0,0], [0,0,0,0], [0,0,0,0]\r\n [2,0,1,3], [0,0,0,0], [0,0,0,0], [0,0,0,0], [3,0,1,2], [3,0,2,1]\r\n [0,0,0,0], [3,1,2,0], [2,1,0,3], [0,0,0,0], [0,0,0,0], [0,0,0,0]\r\n [3,1,0,2], [0,0,0,0], [3,2,0,1], [3,2,1,0]\r\n ]\r\n\r\n constructor: () ->\r\n super\r\n\r\n @p = [151,160,137,91,90,15,\r\n 131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23,\r\n 190,6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33,\r\n 88,237,149,56,87,174,20,125,136,171,168,68,175,74,165,71,134,139,48,27,166,\r\n 77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,55,46,245,40,244,\r\n 102,143,54,65,25,63,161,1,216,80,73,209,76,132,187,208,89,18,169,200,196,\r\n 135,130,116,188,159,86,164,100,109,198,173,186,3,64,52,217,226,250,124,123,\r\n 5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42,\r\n 223,183,170,213,119,248,152,2,44,154,163,70,221,153,101,155,167,43,172,9,\r\n 129,22,39,253,9,98,108,110,79,113,224,232,178,185,112,104,218,246,97,228,\r\n 251,34,242,193,238,210,144,12,191,179,162,241, 81,51,145,235,249,14,239,107,\r\n 49,192,214,31,181,199,106,157,184,84,204,176,115,121,50,45,127,4,150,254,\r\n 138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180\r\n ]\r\n\r\n # To remove the need for index wrapping, double the permutation table length\r\n @perm = (@p[i & 255] for i in [0...512])\r\n\r\n\r\n # ## Generate a different noise by seeding\r\n # @param `seed` a value between 0 to 1\r\n # @eg `noise.seed(0.1)`, `noise.seed(Math.random())`\r\n seed: ( seed ) ->\r\n if(seed > 0 && seed < 1)\r\n seed *= 65536\r\n\r\n seed = Math.floor(seed)\r\n if(seed < 256)\r\n seed |= seed << 8\r\n\r\n for i in [0..255]\r\n v = if (i & 1) then @p[i] ^ (seed & 255) else @p[i] ^ ((seed>>8) & 255)\r\n @perm[i] = @perm[i + 256] = v\r\n\r\n\r\n _dot: (g, x, y) ->\r\n g[0] * x + g[1] * y\r\n\r\n\r\n # ## Get a 2d perlin noise value. Increase the x and y parameters by a small amount (eg, 0.01) at each step to get a smooth noise.\r\n # @param `x, y` optional x and y dimension, or leave empty to use this vector's x and y position\r\n # @eg `noise.perlin2d()`, `noise.perlin2d(10.001, 0.1)`\r\n # @return a value between 0 to 1\r\n perlin2d: (xin=@x, yin=@y) ->\r\n\r\n _fade = (f) -> f*f*f*(f*(f*6-15)+10)\r\n\r\n i = Math.floor( xin ) % 255\r\n j = Math.floor( yin ) % 255\r\n x = xin - i\r\n y = yin - j\r\n\r\n n00 = @_dot(@grad3[ (i+@perm[j]) % 12 ], x, y )\r\n n01 = @_dot(@grad3[ (i+@perm[j+1]) % 12 ], x, y-1 )\r\n n10 = @_dot(@grad3[ (i+1+@perm[j]) % 12 ], x-1, y )\r\n n11 = @_dot(@grad3[ (i+1+@perm[j+1]) % 12 ], x-1, y-1 )\r\n\r\n tx = _fade(x);\r\n return Util.lerp( Util.lerp(n00, n10, tx), Util.lerp(n01, n11, tx), _fade(y) )\r\n\r\n\r\n # ## Get a 2d simplex noise value. Increase the x and y parameters by a small amount (eg, 0.01) at each step to get a smooth noise.\r\n # @param `x, y` optional x and y dimension, or leave empty to use this vector's x and y position\r\n # @eg `noise.simplex2d()`, `noise.simplex2d(10.001, 0.1)`\r\n # @return a value between -1 to 1\r\n simplex2d: (xin=@x, yin=@y) ->\r\n\r\n # Skew the input space to determine which simplex cell we're in\r\n F2 = 0.5*(Math.sqrt(3.0)-1.0)\r\n s = (xin+yin)*F2 # Hairy factor for 2D\r\n i = Math.floor(xin+s)\r\n j = Math.floor(yin+s)\r\n G2 = (3.0-Math.sqrt(3.0))/6.0\r\n t = (i+j)*G2\r\n\r\n # Unskew the cell origin back to (x,y) space\r\n X0 = i-t\r\n Y0 = j-t\r\n\r\n # The x,y distances from the cell origin\r\n x0 = xin-X0\r\n y0 = yin-Y0\r\n\r\n # For the 2D case, the simplex shape is an equilateral triangle.\r\n # Determine which simplex we are in.\r\n # Offsets for second (middle) corner of simplex in (i,j) coords\r\n if x0 > y0\r\n # lower triangle, XY order: (0,0)->(1,0)->(1,1)\r\n i1=1\r\n j1=0\r\n else\r\n # upper triangle, YX order: (0,0)->(0,1)->(1,1)\r\n i1=0\r\n j1=1\r\n\r\n # A step of (1,0) in (i,j) means a step of (1-c,-c) in (x,y), and\r\n # a step of (0,1) in (i,j) means a step of (-c,1-c) in (x,y), where\r\n # c = (3-Math.sqrt(3))/6\r\n\r\n x1 = x0 - i1 + G2 # Offsets for middle corner in (x,y) unskewed coords\r\n y1 = y0 - j1 + G2\r\n x2 = x0 - 1.0 + 2.0 * G2 # Offsets for last corner in (x,y) unskewed coords\r\n y2 = y0 - 1.0 + 2.0 * G2\r\n\r\n # Work out the hashed gradient indices of the three simplex corners\r\n ii = i & 255\r\n jj = j & 255\r\n gi0 = @perm[ii+@perm[jj]] % 12\r\n gi1 = @perm[ii+i1+@perm[jj+j1]] % 12\r\n gi2 = @perm[ii+1+@perm[jj+1]] % 12\r\n\r\n # Calculate the contribution from the three corners\r\n t0 = 0.5 - x0*x0-y0*y0\r\n if t0 < 0\r\n n0 = 0.0\r\n else\r\n t0 *= t0\r\n n0 = t0 * t0 * @_dot(@grad3[gi0], x0, y0) # (x,y) of grad3 used for 2D gradient\r\n\r\n t1 = 0.5 - x1*x1-y1*y1\r\n if t1 < 0\r\n n1 = 0.0\r\n else\r\n t1 *= t1\r\n n1 = t1 * t1 * @_dot(@grad3[gi1], x1, y1)\r\n\r\n t2 = 0.5 - x2*x2-y2*y2\r\n if t2 < 0\r\n n2 = 0.0\r\n else\r\n t2 *= t2\r\n n2 = t2 * t2 * @_dot(@grad3[gi2], x2, y2)\r\n\r\n # Add contributions from each corner to get the final noise value.\r\n # The result is scaled to return values in the interval [-1,1].\r\n return 70.0 * (n0 + n1 + n2)\r\n\r\n"]}