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;...