nl_tokens: Calculates the area for a given pattern and distances to the left and to the right biased by an offset .
pl_tokens: function calculateDiagonalAreaForPattern ( pattern , left , right , offset , result ) { const p1 = b0 . min ; const p2 = b0 . max ; const a1 = b1 . min ; const a2 = b1 . max ; const d = left + right + 1 ; /* There is some Black Magic involved in the diagonal area calculations.
  	 *
  	 * Unlike orthogonal patterns, the "null" pattern (one without crossing edges)
  	 * must be filtered, and the ends of both the "null" and L patterns are not
  	 * known: L and U patterns have different endings, and the adjacent pattern is
  	 * unknown. Therefore, a blend of both possibilites is computed.
  	 */ switch ( pattern ) { case 0 : { /*         .-´
  			 *       .-´
  			 *     .-´
  			 *   .-´
  			 *   ´
  			 */ // First possibility. calculateDiagonalArea ( pattern , p1 . set ( 1.0 , 1.0 ) , p2 . set ( 1.0 + d , 1.0 + d ) , left , offset , a1 ) ; // Second possibility. calculateDiagonalArea ( pattern , p1 . set ( 1.0 , 0.0 ) , p2 . set ( 1.0 + d , 0.0 + d ) , left , offset , a2 ) ; // Blend both possibilities together. result . addVectors ( a1 , a2 ) . divideScalar ( 2.0 ) ; break ; } case 1 : { /*         .-´
  			 *       .-´
  			 *     .-´
  			 *   .-´
  			 *   |
  			 *   |
  			 */ calculateDiagonalArea ( pattern , p1 . set ( 1.0 , 0.0 ) , p2 . <mask> ( 0.0 + d , 0.0 + d ) , left , offset , a1 ) ; calculateDiagonalArea ( pattern , p1 . set ( 1.0 , 0.0 ) , p2 . set ( 1.0 + d , 0.0 + d ) , left , offset , a2 ) ; result . addVectors ( a1 , a2 ) . divideScalar ( 2.0 ) ; break ; } case 2 : { /*         .----
  			 *       .-´
  			 *     .-´
  			 *   .-´
  			 *   ´
  			 */ calculateDiagonalArea ( pattern , p1 . set ( 0.0 , 0.0 ) , p2 . set ( 1.0 + d , 0.0 + d ) , left , offset , a1 ) ; calculateDiagonalArea ( pattern , p1 . set ( 1.0 , 0.0 ) , p2 . set ( 1.0 + d , 0.0 + d ) , left , offset , a2 ) ; result . addVectors ( a1 , a2 ) . divideScalar ( 2.0 ) ; break ; } case 3 : { /*
  			 *         .----
  			 *       .-´
  			 *     .-´
  			 *   .-´
  			 *   |
  			 *   |
  			 */ calculateDiagonalArea ( pattern , p1 . set ( 1.0 , 0.0 ) , p2 . set ( 1.0 + d , 0.0 + d ) , left , offset , result ) ; break ; } case 4 : { /*         .-´
  			 *       .-´
  			 *     .-´
  			 * ----´
  			 */ calculateDiagonalArea ( pattern , p1 . set ( 1.0 , 1.0 ) , p2 . set ( 0.0 + d , 0.0 + d ) , left , offset , a1 ) ; calculateDiagonalArea ( pattern , p1 . set ( 1.0 , 1.0 ) , p2 . set ( 1.0 + d , 0.0 + d ) , left , offset , a2 ) ; result . addVectors ( a1 , a2 ) . divideScalar ( 2.0 ) ; break ; } case 5 : { /*         .-´
  			 *       .-´
  			 *     .-´
  			 * --.-´
  			 *   |
  			 *   |
  			 */ calculateDiagonalArea ( pattern , p1 . set ( 1.0 , 1.0 ) , p2 . set ( 0.0 + d , 0.0 + d ) , left , offset , a1 ) ; calculateDiagonalArea ( pattern , p1 . set ( 1.0 , 0.0 ) , p2 . set ( 1.0 + d , 0.0 + d ) , left , offset , a2 ) ; result . addVectors ( a1 , a2 ) . divideScalar ( 2.0 ) ; break ; } case 6 : { /*         .----
  			 *       .-´
  			 *     .-´
  			 * ----´
  			 */ calculateDiagonalArea ( pattern , p1 . set ( 1.0 , 1.0 ) , p2 . set ( 1.0 + d , 0.0 + d ) , left , offset , result ) ; break ; } case 7 : { /*         .----
  			 *       .-´
  			 *     .-´
  			 * --.-´
  			 *   |
  			 *   |
  			 */ calculateDiagonalArea ( pattern , p1 . set ( 1.0 , 1.0 ) , p2 . set ( 1.0 + d , 0.0 + d ) , left , offset , a1 ) ; calculateDiagonalArea ( pattern , p1 . set ( 1.0 , 0.0 ) , p2 . set ( 1.0 + d , 0.0 + d ) , left , offset , a2 ) ; result . addVectors ( a1 , a2 ) . divideScalar ( 2.0 ) ; break ; } case 8 : { /*         |
  			 *         |
  			 *       .-´
  			 *     .-´
  			 *   .-´
  			 *   ´
  			 */ calculateDiagonalArea ( pattern , p1 . set ( 0.0 , 0.0 ) , p2 . set ( 1.0 + d , 1.0 + d ) , left , offset , a1 ) ; calculateDiagonalArea ( pattern , p1 . set ( 1.0 , 0.0 ) , p2 . set ( 1.0 + d , 1.0 + d ) , left , offset , a2 ) ; result . addVectors ( a1 , a2 ) . divideScalar ( 2.0 ) ; break ; } case 9 : { /*         |
  			 *         |
  			 *       .-´
  			 *     .-´
  			 *   .-´
  			 *   |
  			 *   |
  			 */ calculateDiagonalArea ( pattern , p1 . set ( 1.0 , 0.0 ) , p2 . set ( 1.0 + d , 1.0 + d ) , left , offset , result ) ; break ; } case 10 : { /*         |
  			 *         .----
  			 *       .-´
  			 *     .-´
  			 *   .-´
  			 *   ´
  			 */ calculateDiagonalArea ( pattern , p1 . set ( 0.0 , 0.0 ) , p2 . set ( 1.0 + d , 1.0 + d ) , left , offset , a1 ) ; calculateDiagonalArea ( pattern , p1 . set ( 1.0 , 0.0 ) , p2 . set ( 1.0 + d , 0.0 + d ) , left , offset , a2 ) ; result . addVectors ( a1 , a2 ) . divideScalar ( 2.0 ) ; break ; } case 11 : { /*         |
  			 *         .----
  			 *       .-´
  			 *     .-´
  			 *   .-´
  			 *   |
  			 *   |
  			 */ calculateDiagonalArea ( pattern , p1 . set ( 1.0 , 0.0 ) , p2 . set ( 1.0 + d , 1.0 + d ) , left , offset , a1 ) ; calculateDiagonalArea ( pattern , p1 . set ( 1.0 , 0.0 ) , p2 . set ( 1.0 + d , 0.0 + d ) , left , offset , a2 ) ; result . addVectors ( a1 , a2 ) . divideScalar ( 2.0 ) ; break ; } case 12 : { /*         |
  			 *         |
  			 *       .-´
  			 *     .-´
  			 * ----´
  			 */ calculateDiagonalArea ( pattern , p1 . set ( 1.0 , 1.0 ) , p2 . set ( 1.0 + d , 1.0 + d ) , left , offset , result ) ; break ; } case 13 : { /*         |
  			 *         |
  			 *       .-´
  			 *     .-´
  			 * --.-´
  			 *   |
  			 *   |
  			 */ calculateDiagonalArea ( pattern , p1 . set ( 1.0 , 1.0 ) , p2 . set ( 1.0 + d , 1.0 + d ) , left , offset , a1 ) ; calculateDiagonalArea ( pattern , p1 . set ( 1.0 , 0.0 ) , p2 . set ( 1.0 + d , 1.0 + d ) , left , offset , a2 ) ; result . addVectors ( a1 , a2 ) . divideScalar ( 2.0 ) ; break ; } case 14 : { /*         |
  			 *         .----
  			 *       .-´
  			 *     .-´
  			 * ----´
  			 */ calculateDiagonalArea ( pattern , p1 . set ( 1.0 , 1.0 ) , p2 . set ( 1.0 + d , 1.0 + d ) , left , offset , a1 ) ; calculateDiagonalArea ( pattern , p1 . set ( 1.0 , 1.0 ) , p2 . set ( 1.0 + d , 0.0 + d ) , left , offset , a2 ) ; result . addVectors ( a1 , a2 ) . divideScalar ( 2.0 ) ; break ; } case 15 : { /*         |
  			 *         .----
  			 *       .-´
  			 *     .-´
  			 * --.-´
  			 *   |
  			 *   |
  			 */ calculateDiagonalArea ( pattern , p1 . set ( 1.0 , 1.0 ) , p2 . set ( 1.0 + d , 1.0 + d ) , left , offset , a1 ) ; calculateDiagonalArea ( pattern , p1 . set ( 1.0 , 0.0 ) , p2 . set ( 1.0 + d , 0.0 + d ) , left , offset , a2 ) ; result . addVectors ( a1 , a2 ) . divideScalar ( 2.0 ) ; break ; } } return result ; }