mirror of
https://github.com/gnh1201/welsonjs.git
synced 2026-04-19 02:28:41 +00:00
Merge pull request #320 from gnh1201/dev
Some bug fixes, and enhance ExtraMath module
This commit is contained in:
commit
d3a122029d
|
|
@ -440,15 +440,6 @@ var ChromeObject = function() {
|
||||||
.send()
|
.send()
|
||||||
.responseBody
|
.responseBody
|
||||||
;
|
;
|
||||||
|
|
||||||
// response if error
|
|
||||||
if ("result" in response) {
|
|
||||||
(function(r) {
|
|
||||||
if ("subtype" in r && r.subtype == "error") {
|
|
||||||
console.warn(r.description);
|
|
||||||
}
|
|
||||||
})(response.result.result);
|
|
||||||
}
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.warn(e.message);
|
console.warn(e.message);
|
||||||
response = {
|
response = {
|
||||||
|
|
@ -1507,7 +1498,7 @@ exports.startDebugInPrivate = function(url, proxy, profileName, debuggingPort, i
|
||||||
|
|
||||||
exports.publisherName = publisherName;
|
exports.publisherName = publisherName;
|
||||||
|
|
||||||
exports.VERSIONINFO = "Chrome Web Browser Debugging Interface (chrome.js) version 0.5.2";
|
exports.VERSIONINFO = "Chrome Web Browser Debugging Interface (chrome.js) version 0.5.3";
|
||||||
exports.AUTHOR = "gnh1201@catswords.re.kr";
|
exports.AUTHOR = "gnh1201@catswords.re.kr";
|
||||||
exports.global = global;
|
exports.global = global;
|
||||||
exports.require = global.require;
|
exports.require = global.require;
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,7 @@ function measureSimilarity(s1, s2) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function export_measureSimilarity() {
|
function export_measureSimilarity() {
|
||||||
return "var ExtraMath=function(){};ExtraMath.DTM=function(){this.data=[],this.terms=[],this.add=function(t){for(var r=t.trim().split(/\s+/),a=0;a<r.length;a++)0>this.terms.indexOf(r[a])&&this.terms.push(r[a]);this.data.push(r)},this.toArray=function(){for(var t=[],r=0;r<this.data.length;r++){for(var a=[],s=0;s<this.terms.length;s++)a.push(0>this.data[r].indexOf(this.terms[s])?0:1);t.push(a)}return t}},ExtraMath.arrayCos=function(t,r){var a=0,s=0,h=0;for(i=0;i<t.length;i++)a+=t[i]*r[i],s+=t[i]*t[i],h+=r[i]*r[i];return a/((s=Math.sqrt(s))*(h=Math.sqrt(h)))},ExtraMath.measureSimilarity=function(t,r){var a=new ExtraMath.DTM;a.add(t),a.add(r);var s=a.toArray();return ExtraMath.arrayCos(s[0],s[1])};";
|
return "var ExtraMath=function(){};ExtraMath.DTM=function(){this.data=[],this.terms=[],this.add=function(t){for(var r=t.trim().split(/\s+/),a=0;a<r.length;a++)0>this.terms.indexOf(r[a])&&this.terms.push(r[a]);this.data.push(r)},this.toArray=function(){for(var t=[],r=0;r<this.data.length;r++){for(var a=[],s=0;s<this.terms.length;s++)a.push(0>this.data[r].indexOf(this.terms[s])?0:1);t.push(a)}return t}},ExtraMath.arrayCos=function(t,r){var a=0,s=0,h=0;for(i=0;i<t.length;i++)a+=t[i]*r[i],s+=t[i]*t[i],h+=r[i]*r[i];return a/((s=Math.sqrt(s))*(h=Math.sqrt(h)))},ExtraMath.measureSimilarity=function(t,r){var a=new ExtraMath.DTM;a.add(t),a.add(r);var s=a.toArray();return ExtraMath.arrayCos(s[0],s[1])};";
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cartesian product: https://en.wikipedia.org/wiki/Cartesian_product
|
// Cartesian product: https://en.wikipedia.org/wiki/Cartesian_product
|
||||||
|
|
@ -70,13 +70,72 @@ function cartesianProduct(arr) {
|
||||||
}, [[]])
|
}, [[]])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function clusteredCellsDensity(numbers, size, minDensity) {
|
||||||
|
if (!numbers || !numbers.length) return false;
|
||||||
|
if (typeof size !== 'number' || size <= 0) size = 4; // default grid size = 4
|
||||||
|
if (typeof minDensity !== 'number' || isNaN(minDensity)) minDensity = 0.6;
|
||||||
|
|
||||||
|
var maxIndex = size * size; // because it's 1-based (1..size*size)
|
||||||
|
|
||||||
|
// 1. Convert cell number → (x,y) coordinates with 1-based check
|
||||||
|
var coords = [];
|
||||||
|
for (var i = 0; i < numbers.length; i++) {
|
||||||
|
var n = numbers[i];
|
||||||
|
// must be within 1..maxIndex
|
||||||
|
if (typeof n !== 'number' || n < 1 || n > maxIndex) {
|
||||||
|
return false; // invalid index -> immediately return false
|
||||||
|
}
|
||||||
|
var idx = n - 1; // shift to 0-based
|
||||||
|
coords.push({ x: idx % size, y: Math.floor(idx / size) });
|
||||||
|
}
|
||||||
|
|
||||||
|
var xs = coords.map(function (c) { return c.x; });
|
||||||
|
var ys = coords.map(function (c) { return c.y; });
|
||||||
|
|
||||||
|
// 2. Compute bounding box of selected cells
|
||||||
|
var minX = Math.min.apply(Math, xs), maxX = Math.max.apply(Math, xs);
|
||||||
|
var minY = Math.min.apply(Math, ys), maxY = Math.max.apply(Math, ys);
|
||||||
|
|
||||||
|
// 3. Compute area and density
|
||||||
|
var w = maxX - minX + 1;
|
||||||
|
var h = maxY - minY + 1;
|
||||||
|
var boxArea = w * h;
|
||||||
|
|
||||||
|
var density = coords.length / boxArea;
|
||||||
|
return density >= minDensity;
|
||||||
|
}
|
||||||
|
|
||||||
|
function estimateTileStartPosition(index, tiles, spreadSize, gap) {
|
||||||
|
if (typeof tiles !== 'number' || tiles <= 0) return null;
|
||||||
|
if (typeof spreadSize !== 'number' || !isFinite(spreadSize)) return null;
|
||||||
|
if (typeof gap !== 'number' || !isFinite(gap) || gap < 0) gap = 0;
|
||||||
|
if (typeof index !== 'number' || !isFinite(index) || index % 1 !== 0 || index < 1) return null;
|
||||||
|
|
||||||
|
var totalSlots = tiles * tiles;
|
||||||
|
if (index > totalSlots) return null;
|
||||||
|
|
||||||
|
var tileSize = (spreadSize - gap * (tiles - 1)) / tiles;
|
||||||
|
if (!isFinite(tileSize)) return null;
|
||||||
|
|
||||||
|
var i = index - 1;
|
||||||
|
var col = i % tiles;
|
||||||
|
var row = Math.floor(i / tiles);
|
||||||
|
|
||||||
|
return {
|
||||||
|
x: Math.max(0, col) * (tileSize + gap),
|
||||||
|
y: Math.max(0, row) * (tileSize + gap)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
exports.DTM = DTM;
|
exports.DTM = DTM;
|
||||||
exports.arrayCos = arrayCos;
|
exports.arrayCos = arrayCos;
|
||||||
exports.measureSimilarity = measureSimilarity;
|
exports.measureSimilarity = measureSimilarity;
|
||||||
exports.export_measureSimilarity = export_measureSimilarity;
|
exports.export_measureSimilarity = export_measureSimilarity;
|
||||||
exports.cartesianProduct = cartesianProduct;
|
exports.cartesianProduct = cartesianProduct;
|
||||||
|
exports.clusteredCellsDensity = clusteredCellsDensity;
|
||||||
|
exports.estimateTileStartPosition = estimateTileStartPosition;
|
||||||
|
|
||||||
exports.VERSIONINFO = "ExtraMath module (extramath.js) version 0.0.5";
|
exports.VERSIONINFO = "ExtraMath module (extramath.js) version 1.0.3";
|
||||||
exports.AUTHOR = "gnh1201@catswords.re.kr";
|
exports.AUTHOR = "gnh1201@catswords.re.kr";
|
||||||
exports.global = global;
|
exports.global = global;
|
||||||
exports.require = global.require;
|
exports.require = global.require;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user