JSFiddle - React, Tailwind, and code Playground

by Ilya Karpuk

JavaScript

var Notreal2DJS = { REVISION : '0.0.1 Beta' };

Notreal2DJS.uID = function ( start ){
	start = ( start !== undefined )?start:0;
  var id = start;
  
  this.incrementAndGet = function (){ return ++id; }
  this.increment = function (){ ++id; }
  this.get = function (){ return id; }
  this.set = function ( val ){ id = val; }
}

Notreal2DJS.idGenerator = new Notreal2DJS.uID();

Notreal2DJS.linearCombination = function ( a1, b1, a2, b2 ){
	var SPLIT_FACTOR = 134217729;
	var ca1 = SPLIT_FACTOR * a1;
	var a1High = ca1 - (ca1 - a1);
	var a1Low = a1 - a1High;
	var cb1 = SPLIT_FACTOR * b1;
	var b1High = cb1 - (cb1 - b1);
	var b1Low = b1 - b1High;
  
  var prod1High  = a1 * b1;
	var prod1Low   = a1Low * b1Low - (((prod1High - a1High * b1High) - a1Low * b1High) - a1High * b1Low);
  
  var ca2 = SPLIT_FACTOR * a2;
	var a2High = ca2 - (ca2 - a2);
	var a2Low = a2 - a2High;
	var cb2 = SPLIT_FACTOR * b2;
	var b2High = cb2 - (cb2 - b2);
	var b2Low = b2 - b2High;
  
  var prod2High  = a2 * b2;
	var prod2Low   = a2Low * b2Low - (((prod2High - a2High * b2High) - a2Low * b2High) - a2High * b2Low);
  
  var s12High    = prod1High + prod2High;
	var s12Prime   = s12High - prod2High;
	var s12Low     = (prod2High - (s12High - s12Prime)) + (prod1High - s12Prime);
  
  var result = s12High + (prod1Low + prod2Low + s12Low);
  
  if ( isNaN( result ) ){
  	result = a1 * b1 + a2 * b2;
  }
  
  return result;
}

Notreal2DJS.isNumber = function (){
	var isNum = false;
  for ( var i = 0; i < arguments.length; i++ ){
  	if( typeof( arguments[i] ) == 'number' ){ isNum = true; } 
    else { isNum = false; break; }
  }
  return isNum;
}

Notreal2DJS.isPoint2D = function (){
	var isPoi = false;
  for ( var i = 0; i < arguments.length; i++ ){
  	if( arguments[i] instanceof Notreal2DJS.Point2D ){ isPoi = true; } 
    else { isPoi = false; break; }
  }
  return isPoi;
}

Notreal2DJS.nearlyEquals = function ( a, b, c ){
	if ( a == undefined ){  return b == undefined; }
	if ( b == undefined ){ return false;...