copper3d 1.15.14 → 1.15.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Renderer/copperRenderer.js +0 -4
- package/dist/Renderer/copperRenderer.js.map +1 -1
- package/dist/Utils/MeshNodeTool.d.ts +41 -0
- package/dist/Utils/MeshNodeTool.js +211 -0
- package/dist/Utils/MeshNodeTool.js.map +1 -0
- package/dist/Utils/nrrd_tool.js +15 -14
- package/dist/Utils/nrrd_tool.js.map +1 -1
- package/dist/Utils/utils.d.ts +27 -4
- package/dist/Utils/utils.js +107 -33
- package/dist/Utils/utils.js.map +1 -1
- package/dist/bundle.esm.js +287 -21
- package/dist/bundle.umd.js +287 -20
- package/dist/index.d.ts +3 -2
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/types/Utils/MeshNodeTool.d.ts +41 -0
- package/dist/types/Utils/utils.d.ts +27 -4
- package/dist/types/index.d.ts +3 -2
- package/dist/types/types/types.d.ts +14 -1
- package/dist/types/types.d.ts +14 -1
- package/package.json +1 -1
package/dist/bundle.umd.js
CHANGED
|
@@ -38486,6 +38486,69 @@
|
|
|
38486
38486
|
}
|
|
38487
38487
|
}
|
|
38488
38488
|
return url;
|
|
38489
|
+
}
|
|
38490
|
+
/**
|
|
38491
|
+
* Cubic-Lagrange basis function
|
|
38492
|
+
* @param x
|
|
38493
|
+
* @returns
|
|
38494
|
+
*/
|
|
38495
|
+
function L3(x) {
|
|
38496
|
+
let L1 = 1 - x;
|
|
38497
|
+
let L2 = x;
|
|
38498
|
+
let sc = 9 / 2;
|
|
38499
|
+
return [
|
|
38500
|
+
0.5 * L1 * (3 * L1 - 1) * (3 * L1 - 2),
|
|
38501
|
+
sc * L1 * L2 * (3 * L1 - 1),
|
|
38502
|
+
sc * L1 * L2 * (3 * L2 - 1),
|
|
38503
|
+
0.5 * L2 * (3 * L2 - 1) * (3 * L2 - 2),
|
|
38504
|
+
];
|
|
38505
|
+
}
|
|
38506
|
+
/**
|
|
38507
|
+
* To calculate the weights for each element of Xi using the cubic Lagrange basis functions.
|
|
38508
|
+
* @param Xi
|
|
38509
|
+
* @returns
|
|
38510
|
+
*/
|
|
38511
|
+
function getWightsL3L3L3(Xi) {
|
|
38512
|
+
let W0, W1, W2;
|
|
38513
|
+
W0 = L3(Xi[0]);
|
|
38514
|
+
W1 = L3(Xi[1]);
|
|
38515
|
+
W2 = L3(Xi[2]);
|
|
38516
|
+
let w = [];
|
|
38517
|
+
for (let k2 in W2) {
|
|
38518
|
+
for (let k1 in W1) {
|
|
38519
|
+
for (let k0 in W0) {
|
|
38520
|
+
w.push(W0[k0] * W1[k1] * W2[k2]);
|
|
38521
|
+
}
|
|
38522
|
+
}
|
|
38523
|
+
}
|
|
38524
|
+
return w;
|
|
38525
|
+
}
|
|
38526
|
+
/**
|
|
38527
|
+
* Euclidean distance n dimensions
|
|
38528
|
+
* @param x0
|
|
38529
|
+
* @param x1
|
|
38530
|
+
* @returns
|
|
38531
|
+
*/
|
|
38532
|
+
function calcDistance(x0, x1) {
|
|
38533
|
+
let dx2 = 0;
|
|
38534
|
+
for (let i = 0; i < x0.length; i++) {
|
|
38535
|
+
let dx = x0[i] - x1[i];
|
|
38536
|
+
dx2 += dx * dx;
|
|
38537
|
+
}
|
|
38538
|
+
return Math.sqrt(dx2);
|
|
38539
|
+
}
|
|
38540
|
+
function perturbRandom(x, dx) {
|
|
38541
|
+
let xp = [];
|
|
38542
|
+
for (let i = 0; i < x.length; i++) {
|
|
38543
|
+
xp.push(x[i] + 2 * dx * (Math.random() - 0.5));
|
|
38544
|
+
if (xp[i] < 0) {
|
|
38545
|
+
xp[i] = 0;
|
|
38546
|
+
}
|
|
38547
|
+
else if (xp[i] > 1) {
|
|
38548
|
+
xp[i] = 1;
|
|
38549
|
+
}
|
|
38550
|
+
}
|
|
38551
|
+
return xp;
|
|
38489
38552
|
}
|
|
38490
38553
|
|
|
38491
38554
|
/* eslint no-bitwise: 0 */
|
|
@@ -56560,10 +56623,6 @@
|
|
|
56560
56623
|
this.interval = 1 / this.fps;
|
|
56561
56624
|
this.preRenderCallbackFunctions = [];
|
|
56562
56625
|
this.animate = (time) => {
|
|
56563
|
-
// if (this.start) {
|
|
56564
|
-
// this.fpsCap = createFpsCap(this.render, 10);
|
|
56565
|
-
// this.start = false;
|
|
56566
|
-
// }
|
|
56567
56626
|
var _a, _b, _c;
|
|
56568
56627
|
switch ((_a = this.options) === null || _a === void 0 ? void 0 : _a.fpsMode) {
|
|
56569
56628
|
case "1":
|
|
@@ -68872,6 +68931,16 @@
|
|
|
68872
68931
|
else if (this.gui_states.sphere) {
|
|
68873
68932
|
let mouseX = e.offsetX;
|
|
68874
68933
|
let mouseY = e.offsetY;
|
|
68934
|
+
// record mouseX,Y, and enable crosshair function
|
|
68935
|
+
this.nrrd_states.sphereOrigin[this.axis] = [
|
|
68936
|
+
mouseX,
|
|
68937
|
+
mouseY,
|
|
68938
|
+
this.nrrd_states.currentIndex,
|
|
68939
|
+
];
|
|
68940
|
+
this.setUpSphereOrigins(mouseX, mouseY);
|
|
68941
|
+
this.nrrd_states.cursorPageX = mouseX;
|
|
68942
|
+
this.nrrd_states.cursorPageY = mouseY;
|
|
68943
|
+
this.enableCrosshair();
|
|
68875
68944
|
// draw circle setup width/height for sphere canvas
|
|
68876
68945
|
this.drawSphere(mouseX, mouseY, this.nrrd_states.sphereRadius);
|
|
68877
68946
|
this.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleSphereWheel, true);
|
|
@@ -68984,18 +69053,8 @@
|
|
|
68984
69053
|
else if (this.gui_states.sphere &&
|
|
68985
69054
|
!this.nrrd_states.enableCursorChoose) {
|
|
68986
69055
|
// let { ctx, canvas } = this.setCurrentLayer();
|
|
68987
|
-
let mouseX = e.offsetX;
|
|
68988
|
-
let mouseY = e.offsetY;
|
|
68989
|
-
this.nrrd_states.sphereOrigin[this.axis] = [
|
|
68990
|
-
mouseX,
|
|
68991
|
-
mouseY,
|
|
68992
|
-
this.nrrd_states.currentIndex,
|
|
68993
|
-
];
|
|
68994
|
-
/************ */
|
|
68995
|
-
this.setUpSphereOrigins(mouseX, mouseY);
|
|
68996
|
-
this.nrrd_states.cursorPageX = mouseX;
|
|
68997
|
-
this.nrrd_states.cursorPageY = mouseY;
|
|
68998
|
-
this.enableCrosshair();
|
|
69056
|
+
// let mouseX = e.offsetX;
|
|
69057
|
+
// let mouseY = e.offsetY;
|
|
68999
69058
|
// plan B
|
|
69000
69059
|
// findout all index in the sphere radius range in Axial view
|
|
69001
69060
|
if (this.nrrd_states.spherePlanB) {
|
|
@@ -69235,9 +69294,10 @@
|
|
|
69235
69294
|
}
|
|
69236
69295
|
// limited the radius max and min
|
|
69237
69296
|
this.nrrd_states.sphereRadius = Math.max(1, Math.min(this.nrrd_states.sphereRadius, 50));
|
|
69297
|
+
console.log(this.nrrd_states.sphereOrigin[this.axis][0], this.nrrd_states.sphereOrigin[this.axis][1]);
|
|
69238
69298
|
// get mouse position
|
|
69239
|
-
const mouseX =
|
|
69240
|
-
const mouseY =
|
|
69299
|
+
const mouseX = this.nrrd_states.sphereOrigin[this.axis][0];
|
|
69300
|
+
const mouseY = this.nrrd_states.sphereOrigin[this.axis][1];
|
|
69241
69301
|
this.drawSphere(mouseX, mouseY, this.nrrd_states.sphereRadius);
|
|
69242
69302
|
};
|
|
69243
69303
|
return sphereEvent;
|
|
@@ -70108,12 +70168,219 @@
|
|
|
70108
70168
|
}
|
|
70109
70169
|
}
|
|
70110
70170
|
|
|
70171
|
+
class Node {
|
|
70172
|
+
constructor(id, p) {
|
|
70173
|
+
this.elements = [];
|
|
70174
|
+
this.id = id;
|
|
70175
|
+
this.p = p;
|
|
70176
|
+
}
|
|
70177
|
+
}
|
|
70178
|
+
class Element {
|
|
70179
|
+
constructor(id, basis, nodes) {
|
|
70180
|
+
this.id = id;
|
|
70181
|
+
this.basis = basis;
|
|
70182
|
+
this.nodes = nodes;
|
|
70183
|
+
}
|
|
70184
|
+
}
|
|
70185
|
+
class MeshNodeTool {
|
|
70186
|
+
constructor() {
|
|
70187
|
+
this.nodes = {};
|
|
70188
|
+
this.elements = {};
|
|
70189
|
+
}
|
|
70190
|
+
addNode(id, p) {
|
|
70191
|
+
this.nodes[id] = new Node(id, p);
|
|
70192
|
+
}
|
|
70193
|
+
addElement(id, basis, nodeIds) {
|
|
70194
|
+
let nodes = [];
|
|
70195
|
+
for (let nid in nodeIds) {
|
|
70196
|
+
let enid = nodeIds[nid];
|
|
70197
|
+
nodes.push(this.nodes[enid]);
|
|
70198
|
+
}
|
|
70199
|
+
let element = new Element(id, basis, nodes);
|
|
70200
|
+
this.elements[id] = element;
|
|
70201
|
+
for (let idx in element.nodes) {
|
|
70202
|
+
element.nodes[idx].elements.push(element);
|
|
70203
|
+
}
|
|
70204
|
+
}
|
|
70205
|
+
loadMesh(json) {
|
|
70206
|
+
for (let nid in json.nodes) {
|
|
70207
|
+
this.addNode(nid, json.nodes[nid]);
|
|
70208
|
+
}
|
|
70209
|
+
for (let eid in json.elements) {
|
|
70210
|
+
let elem = json.elements[eid];
|
|
70211
|
+
this.addElement(eid, elem.basis, elem.nodes);
|
|
70212
|
+
}
|
|
70213
|
+
}
|
|
70214
|
+
evaluate(elementId, xi) {
|
|
70215
|
+
let w = getWightsL3L3L3(xi);
|
|
70216
|
+
return evaluateElement(this.elements[elementId], w);
|
|
70217
|
+
}
|
|
70218
|
+
find(point, startingNodeId) {
|
|
70219
|
+
let pt = [point.x, point.y, point.z];
|
|
70220
|
+
let nodeMaterialPoints = this.getNodeMaterialPoints(startingNodeId);
|
|
70221
|
+
for (let i in nodeMaterialPoints) {
|
|
70222
|
+
let mpt = nodeMaterialPoints[i];
|
|
70223
|
+
let x = this.evaluate(mpt.elementId, mpt.xi);
|
|
70224
|
+
let r = calcDistance(x, pt);
|
|
70225
|
+
mpt.error = r;
|
|
70226
|
+
}
|
|
70227
|
+
let t0 = new Date().getTime();
|
|
70228
|
+
let n = 0;
|
|
70229
|
+
for (let step = 0; step < 10000; step++) {
|
|
70230
|
+
for (let i in nodeMaterialPoints) {
|
|
70231
|
+
let mpt = nodeMaterialPoints[i];
|
|
70232
|
+
let xi = perturbRandom(mpt.xi, 0.1);
|
|
70233
|
+
let x = this.evaluate(mpt.elementId, xi);
|
|
70234
|
+
let r = calcDistance(x, pt);
|
|
70235
|
+
if (r < mpt.error) {
|
|
70236
|
+
mpt.error = r;
|
|
70237
|
+
mpt.xi = xi;
|
|
70238
|
+
if (r < 1.0) {
|
|
70239
|
+
console.log("Time: (" +
|
|
70240
|
+
n +
|
|
70241
|
+
") " +
|
|
70242
|
+
(new Date().getTime() - t0) +
|
|
70243
|
+
"ms Error: " +
|
|
70244
|
+
r);
|
|
70245
|
+
return mpt;
|
|
70246
|
+
}
|
|
70247
|
+
}
|
|
70248
|
+
}
|
|
70249
|
+
n = step;
|
|
70250
|
+
}
|
|
70251
|
+
let bestIndex = 0;
|
|
70252
|
+
let bestError = nodeMaterialPoints[0].error;
|
|
70253
|
+
for (let i in nodeMaterialPoints) {
|
|
70254
|
+
let mpt = nodeMaterialPoints[i];
|
|
70255
|
+
if (mpt.error < bestError) {
|
|
70256
|
+
bestIndex = Number(i);
|
|
70257
|
+
bestError = mpt.error;
|
|
70258
|
+
}
|
|
70259
|
+
}
|
|
70260
|
+
let mpt = nodeMaterialPoints[bestIndex];
|
|
70261
|
+
console.log("Time: (" +
|
|
70262
|
+
n +
|
|
70263
|
+
") " +
|
|
70264
|
+
(new Date().getTime() - t0) +
|
|
70265
|
+
"ms Error: " +
|
|
70266
|
+
mpt.error);
|
|
70267
|
+
return mpt;
|
|
70268
|
+
}
|
|
70269
|
+
search(point, startingNodeId, tol) {
|
|
70270
|
+
let pt = [point.x, point.y, point.z];
|
|
70271
|
+
let nodeMaterialPoints = this.getNodeMaterialPoints(startingNodeId);
|
|
70272
|
+
for (let i in nodeMaterialPoints) {
|
|
70273
|
+
let mpt = nodeMaterialPoints[i];
|
|
70274
|
+
let x = this.evaluate(mpt.elementId, mpt.xi);
|
|
70275
|
+
mpt.error = calcDistance(x, pt);
|
|
70276
|
+
}
|
|
70277
|
+
let t0 = new Date().getTime();
|
|
70278
|
+
let xiStepSize = [0.1, 0.01, 0.001];
|
|
70279
|
+
for (let i in nodeMaterialPoints) {
|
|
70280
|
+
let mpt = nodeMaterialPoints[i];
|
|
70281
|
+
let numDims = mpt.xi.length;
|
|
70282
|
+
let nIter = 0;
|
|
70283
|
+
let go = true;
|
|
70284
|
+
while (go || nIter < 10) {
|
|
70285
|
+
let minErr = 1 * mpt.error;
|
|
70286
|
+
let minXi;
|
|
70287
|
+
for (let xiIdx in xiStepSize) {
|
|
70288
|
+
let dXi = xiStepSize[xiIdx];
|
|
70289
|
+
for (let dim = 0; dim < numDims; dim++) {
|
|
70290
|
+
let xi = mpt.xi.slice();
|
|
70291
|
+
xi[dim] += dXi;
|
|
70292
|
+
if (xi[dim] >= 0 && xi[dim] <= 1) {
|
|
70293
|
+
let x = this.evaluate(mpt.elementId, mpt.xi);
|
|
70294
|
+
let err = calcDistance(x, pt);
|
|
70295
|
+
if (err < minErr) {
|
|
70296
|
+
minErr = err;
|
|
70297
|
+
minXi = xi;
|
|
70298
|
+
if (err < tol) {
|
|
70299
|
+
mpt.error = err;
|
|
70300
|
+
mpt.xi = xi;
|
|
70301
|
+
console.log("Time 1: " +
|
|
70302
|
+
(new Date().getTime() - t0) +
|
|
70303
|
+
"ms Error: " +
|
|
70304
|
+
mpt.error);
|
|
70305
|
+
return mpt;
|
|
70306
|
+
}
|
|
70307
|
+
}
|
|
70308
|
+
}
|
|
70309
|
+
xi = mpt.xi.slice();
|
|
70310
|
+
xi[dim] -= dXi;
|
|
70311
|
+
if (xi[dim] >= 0 && xi[dim] <= 1) {
|
|
70312
|
+
let x = this.evaluate(mpt.elementId, mpt.xi);
|
|
70313
|
+
let err = calcDistance(x, pt);
|
|
70314
|
+
if (err < minErr) {
|
|
70315
|
+
minErr = err;
|
|
70316
|
+
minXi = xi;
|
|
70317
|
+
if (err < tol) {
|
|
70318
|
+
mpt.error = err;
|
|
70319
|
+
mpt.xi = xi;
|
|
70320
|
+
console.log("Time 2: " +
|
|
70321
|
+
(new Date().getTime() - t0) +
|
|
70322
|
+
"ms Error: " +
|
|
70323
|
+
mpt.error);
|
|
70324
|
+
return mpt;
|
|
70325
|
+
}
|
|
70326
|
+
}
|
|
70327
|
+
}
|
|
70328
|
+
}
|
|
70329
|
+
}
|
|
70330
|
+
if (minXi === null || minXi === undefined) {
|
|
70331
|
+
go = false;
|
|
70332
|
+
}
|
|
70333
|
+
else {
|
|
70334
|
+
mpt.xi = minXi;
|
|
70335
|
+
mpt.error = minErr;
|
|
70336
|
+
}
|
|
70337
|
+
nIter++;
|
|
70338
|
+
}
|
|
70339
|
+
}
|
|
70340
|
+
let bestIndex = 0;
|
|
70341
|
+
let bestError = nodeMaterialPoints[0].error;
|
|
70342
|
+
for (let i in nodeMaterialPoints) {
|
|
70343
|
+
let mpt = nodeMaterialPoints[i];
|
|
70344
|
+
if (mpt.error < bestError) {
|
|
70345
|
+
bestIndex = Number(i);
|
|
70346
|
+
bestError = mpt.error;
|
|
70347
|
+
}
|
|
70348
|
+
}
|
|
70349
|
+
let mpt = nodeMaterialPoints[bestIndex];
|
|
70350
|
+
console.log("Time 3: " + (new Date().getTime() - t0) + "ms Error: " + mpt.error);
|
|
70351
|
+
return mpt;
|
|
70352
|
+
}
|
|
70353
|
+
getNodeMaterialPoints(nodeId) {
|
|
70354
|
+
let materialPoints = [];
|
|
70355
|
+
let node = this.nodes[nodeId];
|
|
70356
|
+
for (let eid in node.elements) {
|
|
70357
|
+
let element = node.elements[eid];
|
|
70358
|
+
let nodeIdx = element.nodes.indexOf(node);
|
|
70359
|
+
let xi0 = (nodeIdx % 4) / 3;
|
|
70360
|
+
let xi1 = Math.floor((nodeIdx % 16) / 4) / 3;
|
|
70361
|
+
let xi2 = Math.floor(nodeIdx / 16) / 3;
|
|
70362
|
+
materialPoints.push({ elementId: element.id, xi: [xi0, xi1, xi2] });
|
|
70363
|
+
}
|
|
70364
|
+
return materialPoints;
|
|
70365
|
+
}
|
|
70366
|
+
}
|
|
70367
|
+
function evaluateElement(element, weights) {
|
|
70368
|
+
let x = [0, 0, 0];
|
|
70369
|
+
for (let f = 0; f < 3; f++) {
|
|
70370
|
+
for (let i = 0; i < weights.length; i++) {
|
|
70371
|
+
x[f] += weights[i] * element.nodes[i].p[f];
|
|
70372
|
+
}
|
|
70373
|
+
}
|
|
70374
|
+
return x;
|
|
70375
|
+
}
|
|
70376
|
+
|
|
70111
70377
|
// import * as kiwrious from "copper3d_plugin_heart_k";
|
|
70112
|
-
const REVISION = "v1.15.
|
|
70113
|
-
console.log("%cCopper3D Visualisation %cBeta:v1.15.
|
|
70378
|
+
const REVISION = "v1.15.16";
|
|
70379
|
+
console.log("%cCopper3D Visualisation %cBeta:v1.15.16", "padding: 3px;color:white; background:#023047", "padding: 3px;color:white; background:#f50a25");
|
|
70114
70380
|
|
|
70115
70381
|
exports.CameraViewPoint = CameraViewPoint;
|
|
70116
70382
|
exports.Copper3dTrackballControls = Copper3dTrackballControls;
|
|
70383
|
+
exports.MeshNodeTool = MeshNodeTool;
|
|
70117
70384
|
exports.REVISION = REVISION;
|
|
70118
70385
|
exports.addBoxHelper = addBoxHelper;
|
|
70119
70386
|
exports.addLabelToScene = addLabelToScene;
|
package/dist/index.d.ts
CHANGED
|
@@ -14,8 +14,9 @@ import { configKiwriousHeart } from "./Utils/kiwrious/configKiwrious";
|
|
|
14
14
|
import kiwrious from "./Utils/kiwrious/configKiwrious";
|
|
15
15
|
import { nrrd_tools } from "./Utils/nrrd_tool";
|
|
16
16
|
import { Copper3dTrackballControls } from "./Controls/Copper3dTrackballControls";
|
|
17
|
+
import { MeshNodeTool } from "./Utils/MeshNodeTool";
|
|
17
18
|
import { nrrdMeshesType, nrrdSliceType, SensorDecodedValue_kiwrious, SensorReadResult_kiwrious, HeartRateResult_kiwrious, loadingBarType, paintImageType, exportPaintImageType, IOptVTKLoader } from "./types/types";
|
|
18
19
|
import "./css/style.css";
|
|
19
|
-
export declare const REVISION = "v1.15.
|
|
20
|
-
export { copperRenderer, copperRendererOnDemond, copperMSceneRenderer, setHDRFilePath, addLabelToScene, convert3DPostoScreenPos, convertScreenPosto3DPos, addBoxHelper, fullScreenListenner, configKiwriousHeart, copperScene, copperSceneOnDemond, copperMScene, CameraViewPoint, kiwrious, nrrd_tools, loading, Copper3dTrackballControls, createTexture2D_NRRD, };
|
|
20
|
+
export declare const REVISION = "v1.15.16";
|
|
21
|
+
export { copperRenderer, copperRendererOnDemond, copperMSceneRenderer, setHDRFilePath, addLabelToScene, convert3DPostoScreenPos, convertScreenPosto3DPos, addBoxHelper, fullScreenListenner, configKiwriousHeart, copperScene, copperSceneOnDemond, copperMScene, CameraViewPoint, kiwrious, nrrd_tools, loading, Copper3dTrackballControls, createTexture2D_NRRD, MeshNodeTool, };
|
|
21
22
|
export type { positionType, screenPosType, optsType, nrrdMeshesType, nrrdSliceType, SensorDecodedValue_kiwrious, SensorReadResult_kiwrious, HeartRateResult_kiwrious, loadingBarType, paintImageType, exportPaintImageType, IOptVTKLoader, };
|
package/dist/index.js
CHANGED
|
@@ -15,8 +15,9 @@ import { configKiwriousHeart } from "./Utils/kiwrious/configKiwrious";
|
|
|
15
15
|
import kiwrious from "./Utils/kiwrious/configKiwrious";
|
|
16
16
|
import { nrrd_tools } from "./Utils/nrrd_tool";
|
|
17
17
|
import { Copper3dTrackballControls } from "./Controls/Copper3dTrackballControls";
|
|
18
|
+
import { MeshNodeTool } from "./Utils/MeshNodeTool";
|
|
18
19
|
import "./css/style.css";
|
|
19
|
-
export const REVISION = "v1.15.
|
|
20
|
-
console.log("%cCopper3D Visualisation %cBeta:v1.15.
|
|
21
|
-
export { copperRenderer, copperRendererOnDemond, copperMSceneRenderer, setHDRFilePath, addLabelToScene, convert3DPostoScreenPos, convertScreenPosto3DPos, addBoxHelper, fullScreenListenner, configKiwriousHeart, copperScene, copperSceneOnDemond, copperMScene, CameraViewPoint, kiwrious, nrrd_tools, loading, Copper3dTrackballControls, createTexture2D_NRRD, };
|
|
20
|
+
export const REVISION = "v1.15.16";
|
|
21
|
+
console.log("%cCopper3D Visualisation %cBeta:v1.15.16", "padding: 3px;color:white; background:#023047", "padding: 3px;color:white; background:#f50a25");
|
|
22
|
+
export { copperRenderer, copperRendererOnDemond, copperMSceneRenderer, setHDRFilePath, addLabelToScene, convert3DPostoScreenPos, convertScreenPosto3DPos, addBoxHelper, fullScreenListenner, configKiwriousHeart, copperScene, copperSceneOnDemond, copperMScene, CameraViewPoint, kiwrious, nrrd_tools, loading, Copper3dTrackballControls, createTexture2D_NRRD, MeshNodeTool, };
|
|
22
23
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,cAAc,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,WAAW,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EACL,eAAe,EAGf,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAY,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,sBAAsB,MAAM,mCAAmC,CAAC;AACvE,OAAO,mBAAmB,MAAM,6BAA6B,CAAC;AAC9D,OAAO,oBAAoB,MAAM,iCAAiC,CAAC;AACnE,OAAO,YAAY,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,QAAQ,MAAM,iCAAiC,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,cAAc,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,WAAW,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EACL,eAAe,EAGf,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAY,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,sBAAsB,MAAM,mCAAmC,CAAC;AACvE,OAAO,mBAAmB,MAAM,6BAA6B,CAAC;AAC9D,OAAO,oBAAoB,MAAM,iCAAiC,CAAC;AACnE,OAAO,YAAY,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,QAAQ,MAAM,iCAAiC,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AAEjF,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAcpD,OAAO,iBAAiB,CAAC;AAEzB,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;AAEnC,OAAO,CAAC,GAAG,CACT,0CAA0C,EAC1C,8CAA8C,EAC9C,8CAA8C,CAC/C,CAAC;AAEF,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,uBAAuB,EACvB,uBAAuB,EACvB,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACX,mBAAmB,EACnB,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,UAAU,EACV,OAAO,EACP,yBAAyB,EACzB,oBAAoB,EACpB,YAAY,GACb,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
import { IMeshNodes } from "../types/types";
|
|
3
|
+
export declare class Node {
|
|
4
|
+
id: string;
|
|
5
|
+
p: number[];
|
|
6
|
+
elements: Array<Element>;
|
|
7
|
+
constructor(id: string, p: number[]);
|
|
8
|
+
}
|
|
9
|
+
export declare class Element {
|
|
10
|
+
id: string;
|
|
11
|
+
basis: string[];
|
|
12
|
+
nodes: Array<Node>;
|
|
13
|
+
constructor(id: string, basis: string[], nodes: Array<Node>);
|
|
14
|
+
}
|
|
15
|
+
export declare class MeshNodeTool {
|
|
16
|
+
nodes: {
|
|
17
|
+
[key: string]: Node;
|
|
18
|
+
};
|
|
19
|
+
elements: {
|
|
20
|
+
[key: string]: Element;
|
|
21
|
+
};
|
|
22
|
+
addNode(id: string, p: number[]): void;
|
|
23
|
+
addElement(id: string, basis: string[], nodeIds: string[]): void;
|
|
24
|
+
loadMesh(json: IMeshNodes): void;
|
|
25
|
+
evaluate(elementId: string, xi: number[]): number[];
|
|
26
|
+
find(point: THREE.Vector3, startingNodeId: string): {
|
|
27
|
+
[key: string]: any;
|
|
28
|
+
elementId: string;
|
|
29
|
+
xi: number[];
|
|
30
|
+
};
|
|
31
|
+
search(point: THREE.Vector3, startingNodeId: string, tol: number): {
|
|
32
|
+
[key: string]: any;
|
|
33
|
+
elementId: string;
|
|
34
|
+
xi: number[];
|
|
35
|
+
};
|
|
36
|
+
getNodeMaterialPoints(nodeId: string): {
|
|
37
|
+
[key: string]: any;
|
|
38
|
+
elementId: string;
|
|
39
|
+
xi: number[];
|
|
40
|
+
}[];
|
|
41
|
+
}
|
|
@@ -6,7 +6,30 @@ export declare function loading(): {
|
|
|
6
6
|
progress: HTMLDivElement;
|
|
7
7
|
};
|
|
8
8
|
export declare function switchEraserSize(size: number, urls?: string[]): string;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
/**
|
|
10
|
+
* Cubic-Lagrange basis function
|
|
11
|
+
* @param x
|
|
12
|
+
* @returns
|
|
13
|
+
*/
|
|
14
|
+
export declare function L3(x: number): number[];
|
|
15
|
+
/**
|
|
16
|
+
* Cubic-Hermite basis function.
|
|
17
|
+
* @param x
|
|
18
|
+
* @returns
|
|
19
|
+
*/
|
|
20
|
+
export declare function H3(x: number): number[];
|
|
21
|
+
/**
|
|
22
|
+
* To calculate the weights for each element of Xi using the cubic Lagrange basis functions.
|
|
23
|
+
* @param Xi
|
|
24
|
+
* @returns
|
|
25
|
+
*/
|
|
26
|
+
export declare function getWightsL3L3L3(Xi: number[]): number[];
|
|
27
|
+
export declare function getWightsH3H3H3(Xi: number[][]): number[][];
|
|
28
|
+
/**
|
|
29
|
+
* Euclidean distance n dimensions
|
|
30
|
+
* @param x0
|
|
31
|
+
* @param x1
|
|
32
|
+
* @returns
|
|
33
|
+
*/
|
|
34
|
+
export declare function calcDistance(x0: number[], x1: number[]): number;
|
|
35
|
+
export declare function perturbRandom(x: number[], dx: number): number[];
|
package/dist/types/index.d.ts
CHANGED
|
@@ -14,8 +14,9 @@ import { configKiwriousHeart } from "./Utils/kiwrious/configKiwrious";
|
|
|
14
14
|
import kiwrious from "./Utils/kiwrious/configKiwrious";
|
|
15
15
|
import { nrrd_tools } from "./Utils/nrrd_tool";
|
|
16
16
|
import { Copper3dTrackballControls } from "./Controls/Copper3dTrackballControls";
|
|
17
|
+
import { MeshNodeTool } from "./Utils/MeshNodeTool";
|
|
17
18
|
import { nrrdMeshesType, nrrdSliceType, SensorDecodedValue_kiwrious, SensorReadResult_kiwrious, HeartRateResult_kiwrious, loadingBarType, paintImageType, exportPaintImageType, IOptVTKLoader } from "./types/types";
|
|
18
19
|
import "./css/style.css";
|
|
19
|
-
export declare const REVISION = "v1.15.
|
|
20
|
-
export { copperRenderer, copperRendererOnDemond, copperMSceneRenderer, setHDRFilePath, addLabelToScene, convert3DPostoScreenPos, convertScreenPosto3DPos, addBoxHelper, fullScreenListenner, configKiwriousHeart, copperScene, copperSceneOnDemond, copperMScene, CameraViewPoint, kiwrious, nrrd_tools, loading, Copper3dTrackballControls, createTexture2D_NRRD, };
|
|
20
|
+
export declare const REVISION = "v1.15.16";
|
|
21
|
+
export { copperRenderer, copperRendererOnDemond, copperMSceneRenderer, setHDRFilePath, addLabelToScene, convert3DPostoScreenPos, convertScreenPosto3DPos, addBoxHelper, fullScreenListenner, configKiwriousHeart, copperScene, copperSceneOnDemond, copperMScene, CameraViewPoint, kiwrious, nrrd_tools, loading, Copper3dTrackballControls, createTexture2D_NRRD, MeshNodeTool, };
|
|
21
22
|
export type { positionType, screenPosType, optsType, nrrdMeshesType, nrrdSliceType, SensorDecodedValue_kiwrious, SensorReadResult_kiwrious, HeartRateResult_kiwrious, loadingBarType, paintImageType, exportPaintImageType, IOptVTKLoader, };
|
|
@@ -203,4 +203,17 @@ interface IOptVTKLoader {
|
|
|
203
203
|
transparent?: boolean;
|
|
204
204
|
opacity?: number;
|
|
205
205
|
}
|
|
206
|
-
|
|
206
|
+
interface INodes {
|
|
207
|
+
[key: string]: number[];
|
|
208
|
+
}
|
|
209
|
+
interface IElements {
|
|
210
|
+
[key: string]: {
|
|
211
|
+
basis: string[];
|
|
212
|
+
nodes: string[];
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
interface IMeshNodes {
|
|
216
|
+
nodes: INodes;
|
|
217
|
+
elements: IElements;
|
|
218
|
+
}
|
|
219
|
+
export type { SceneMapType, ICopperRenderOpt, stateType, modelVisualisationDataType, preRenderCallbackFunctionType, baseStateType, nrrdMeshesType, nrrdSliceType, nrrdDragImageOptType, nrrdDrawImageOptType, loadingBarType, SensorDecodedValue_kiwrious, SensorReadResult_kiwrious, HeartRateResult_kiwrious, SerialService_kiwrious, kiwriousType, mouseMovePositionType, positionType, paintImagesType, paintImageType, storedPaintImagesType, optionsGltfExporterType, vtkModels, undoType, copperVolumeType, dicomLoaderOptsType, skipSlicesDictType, exportPaintImagesType, exportPaintImageType, storeExportPaintImageType, IOptVTKLoader, ICopperSceneOpts, IMeshNodes, };
|
package/dist/types/types.d.ts
CHANGED
|
@@ -203,4 +203,17 @@ interface IOptVTKLoader {
|
|
|
203
203
|
transparent?: boolean;
|
|
204
204
|
opacity?: number;
|
|
205
205
|
}
|
|
206
|
-
|
|
206
|
+
interface INodes {
|
|
207
|
+
[key: string]: number[];
|
|
208
|
+
}
|
|
209
|
+
interface IElements {
|
|
210
|
+
[key: string]: {
|
|
211
|
+
basis: string[];
|
|
212
|
+
nodes: string[];
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
interface IMeshNodes {
|
|
216
|
+
nodes: INodes;
|
|
217
|
+
elements: IElements;
|
|
218
|
+
}
|
|
219
|
+
export type { SceneMapType, ICopperRenderOpt, stateType, modelVisualisationDataType, preRenderCallbackFunctionType, baseStateType, nrrdMeshesType, nrrdSliceType, nrrdDragImageOptType, nrrdDrawImageOptType, loadingBarType, SensorDecodedValue_kiwrious, SensorReadResult_kiwrious, HeartRateResult_kiwrious, SerialService_kiwrious, kiwriousType, mouseMovePositionType, positionType, paintImagesType, paintImageType, storedPaintImagesType, optionsGltfExporterType, vtkModels, undoType, copperVolumeType, dicomLoaderOptsType, skipSlicesDictType, exportPaintImagesType, exportPaintImageType, storeExportPaintImageType, IOptVTKLoader, ICopperSceneOpts, IMeshNodes, };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "copper3d",
|
|
3
3
|
"description": "A 3d visualisation package base on threejs provides multiple scenes and Nrrd image load funtion.",
|
|
4
|
-
"version": "1.15.
|
|
4
|
+
"version": "1.15.16",
|
|
5
5
|
"main": "dist/bundle.umd.js",
|
|
6
6
|
"moudle": "dist/bundle.esm.js",
|
|
7
7
|
"types": "dist/types/index.d.ts",
|