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/Utils/utils.js
CHANGED
|
@@ -138,39 +138,113 @@ export function switchEraserSize(size, urls) {
|
|
|
138
138
|
}
|
|
139
139
|
return url;
|
|
140
140
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
141
|
+
/**
|
|
142
|
+
* Cubic-Lagrange basis function
|
|
143
|
+
* @param x
|
|
144
|
+
* @returns
|
|
145
|
+
*/
|
|
146
|
+
export function L3(x) {
|
|
147
|
+
let L1 = 1 - x;
|
|
148
|
+
let L2 = x;
|
|
149
|
+
let sc = 9 / 2;
|
|
150
|
+
return [
|
|
151
|
+
0.5 * L1 * (3 * L1 - 1) * (3 * L1 - 2),
|
|
152
|
+
sc * L1 * L2 * (3 * L1 - 1),
|
|
153
|
+
sc * L1 * L2 * (3 * L2 - 1),
|
|
154
|
+
0.5 * L2 * (3 * L2 - 1) * (3 * L2 - 2),
|
|
155
|
+
];
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Cubic-Hermite basis function.
|
|
159
|
+
* @param x
|
|
160
|
+
* @returns
|
|
161
|
+
*/
|
|
162
|
+
export function H3(x) {
|
|
163
|
+
let x2 = x * x;
|
|
164
|
+
return [
|
|
165
|
+
1 - 3 * x2 + 2 * x * x2,
|
|
166
|
+
x * (x - 1) * (x - 1),
|
|
167
|
+
x2 * (3 - 2 * x),
|
|
168
|
+
x2 * (x - 1),
|
|
169
|
+
];
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* To calculate the weights for each element of Xi using the cubic Lagrange basis functions.
|
|
173
|
+
* @param Xi
|
|
174
|
+
* @returns
|
|
175
|
+
*/
|
|
176
|
+
export function getWightsL3L3L3(Xi) {
|
|
177
|
+
let W0, W1, W2;
|
|
178
|
+
W0 = L3(Xi[0]);
|
|
179
|
+
W1 = L3(Xi[1]);
|
|
180
|
+
W2 = L3(Xi[2]);
|
|
181
|
+
let w = [];
|
|
182
|
+
for (let k2 in W2) {
|
|
183
|
+
for (let k1 in W1) {
|
|
184
|
+
for (let k0 in W0) {
|
|
185
|
+
w.push(W0[k0] * W1[k1] * W2[k2]);
|
|
171
186
|
}
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
return w;
|
|
190
|
+
}
|
|
191
|
+
export function getWightsH3H3H3(Xi) {
|
|
192
|
+
let mixIdx = [
|
|
193
|
+
[0, 0],
|
|
194
|
+
[1, 0],
|
|
195
|
+
[0, 1],
|
|
196
|
+
[1, 1],
|
|
197
|
+
[2, 0],
|
|
198
|
+
[3, 0],
|
|
199
|
+
[2, 1],
|
|
200
|
+
[3, 1],
|
|
201
|
+
[0, 2],
|
|
202
|
+
[1, 2],
|
|
203
|
+
[0, 3],
|
|
204
|
+
[1, 3],
|
|
205
|
+
[2, 2],
|
|
206
|
+
[3, 2],
|
|
207
|
+
[2, 3],
|
|
208
|
+
[3, 3],
|
|
209
|
+
];
|
|
210
|
+
let weights = [];
|
|
211
|
+
let W0, W1;
|
|
212
|
+
for (let idx in Xi) {
|
|
213
|
+
W0 = H3(Xi[idx][0]);
|
|
214
|
+
W1 = H3(Xi[idx][1]);
|
|
215
|
+
let w = [];
|
|
216
|
+
for (let k in mixIdx) {
|
|
217
|
+
w.push(W0[mixIdx[k][0]] * W1[mixIdx[k][1]]);
|
|
218
|
+
}
|
|
219
|
+
weights.push(w);
|
|
220
|
+
}
|
|
221
|
+
return weights;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Euclidean distance n dimensions
|
|
225
|
+
* @param x0
|
|
226
|
+
* @param x1
|
|
227
|
+
* @returns
|
|
228
|
+
*/
|
|
229
|
+
export function calcDistance(x0, x1) {
|
|
230
|
+
let dx2 = 0;
|
|
231
|
+
for (let i = 0; i < x0.length; i++) {
|
|
232
|
+
let dx = x0[i] - x1[i];
|
|
233
|
+
dx2 += dx * dx;
|
|
234
|
+
}
|
|
235
|
+
return Math.sqrt(dx2);
|
|
236
|
+
}
|
|
237
|
+
export function perturbRandom(x, dx) {
|
|
238
|
+
let xp = [];
|
|
239
|
+
for (let i = 0; i < x.length; i++) {
|
|
240
|
+
xp.push(x[i] + 2 * dx * (Math.random() - 0.5));
|
|
241
|
+
if (xp[i] < 0) {
|
|
242
|
+
xp[i] = 0;
|
|
243
|
+
}
|
|
244
|
+
else if (xp[i] > 1) {
|
|
245
|
+
xp[i] = 1;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
return xp;
|
|
175
249
|
}
|
|
176
250
|
//# sourceMappingURL=utils.js.map
|
package/dist/Utils/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/Utils/utils.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/Utils/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/bundle.esm.js
CHANGED
|
@@ -38478,6 +38478,69 @@ function switchEraserSize(size, urls) {
|
|
|
38478
38478
|
}
|
|
38479
38479
|
}
|
|
38480
38480
|
return url;
|
|
38481
|
+
}
|
|
38482
|
+
/**
|
|
38483
|
+
* Cubic-Lagrange basis function
|
|
38484
|
+
* @param x
|
|
38485
|
+
* @returns
|
|
38486
|
+
*/
|
|
38487
|
+
function L3(x) {
|
|
38488
|
+
let L1 = 1 - x;
|
|
38489
|
+
let L2 = x;
|
|
38490
|
+
let sc = 9 / 2;
|
|
38491
|
+
return [
|
|
38492
|
+
0.5 * L1 * (3 * L1 - 1) * (3 * L1 - 2),
|
|
38493
|
+
sc * L1 * L2 * (3 * L1 - 1),
|
|
38494
|
+
sc * L1 * L2 * (3 * L2 - 1),
|
|
38495
|
+
0.5 * L2 * (3 * L2 - 1) * (3 * L2 - 2),
|
|
38496
|
+
];
|
|
38497
|
+
}
|
|
38498
|
+
/**
|
|
38499
|
+
* To calculate the weights for each element of Xi using the cubic Lagrange basis functions.
|
|
38500
|
+
* @param Xi
|
|
38501
|
+
* @returns
|
|
38502
|
+
*/
|
|
38503
|
+
function getWightsL3L3L3(Xi) {
|
|
38504
|
+
let W0, W1, W2;
|
|
38505
|
+
W0 = L3(Xi[0]);
|
|
38506
|
+
W1 = L3(Xi[1]);
|
|
38507
|
+
W2 = L3(Xi[2]);
|
|
38508
|
+
let w = [];
|
|
38509
|
+
for (let k2 in W2) {
|
|
38510
|
+
for (let k1 in W1) {
|
|
38511
|
+
for (let k0 in W0) {
|
|
38512
|
+
w.push(W0[k0] * W1[k1] * W2[k2]);
|
|
38513
|
+
}
|
|
38514
|
+
}
|
|
38515
|
+
}
|
|
38516
|
+
return w;
|
|
38517
|
+
}
|
|
38518
|
+
/**
|
|
38519
|
+
* Euclidean distance n dimensions
|
|
38520
|
+
* @param x0
|
|
38521
|
+
* @param x1
|
|
38522
|
+
* @returns
|
|
38523
|
+
*/
|
|
38524
|
+
function calcDistance(x0, x1) {
|
|
38525
|
+
let dx2 = 0;
|
|
38526
|
+
for (let i = 0; i < x0.length; i++) {
|
|
38527
|
+
let dx = x0[i] - x1[i];
|
|
38528
|
+
dx2 += dx * dx;
|
|
38529
|
+
}
|
|
38530
|
+
return Math.sqrt(dx2);
|
|
38531
|
+
}
|
|
38532
|
+
function perturbRandom(x, dx) {
|
|
38533
|
+
let xp = [];
|
|
38534
|
+
for (let i = 0; i < x.length; i++) {
|
|
38535
|
+
xp.push(x[i] + 2 * dx * (Math.random() - 0.5));
|
|
38536
|
+
if (xp[i] < 0) {
|
|
38537
|
+
xp[i] = 0;
|
|
38538
|
+
}
|
|
38539
|
+
else if (xp[i] > 1) {
|
|
38540
|
+
xp[i] = 1;
|
|
38541
|
+
}
|
|
38542
|
+
}
|
|
38543
|
+
return xp;
|
|
38481
38544
|
}
|
|
38482
38545
|
|
|
38483
38546
|
/* eslint no-bitwise: 0 */
|
|
@@ -56552,10 +56615,6 @@ class copperRenderer extends baseRenderer {
|
|
|
56552
56615
|
this.interval = 1 / this.fps;
|
|
56553
56616
|
this.preRenderCallbackFunctions = [];
|
|
56554
56617
|
this.animate = (time) => {
|
|
56555
|
-
// if (this.start) {
|
|
56556
|
-
// this.fpsCap = createFpsCap(this.render, 10);
|
|
56557
|
-
// this.start = false;
|
|
56558
|
-
// }
|
|
56559
56618
|
var _a, _b, _c;
|
|
56560
56619
|
switch ((_a = this.options) === null || _a === void 0 ? void 0 : _a.fpsMode) {
|
|
56561
56620
|
case "1":
|
|
@@ -68864,6 +68923,16 @@ class nrrd_tools {
|
|
|
68864
68923
|
else if (this.gui_states.sphere) {
|
|
68865
68924
|
let mouseX = e.offsetX;
|
|
68866
68925
|
let mouseY = e.offsetY;
|
|
68926
|
+
// record mouseX,Y, and enable crosshair function
|
|
68927
|
+
this.nrrd_states.sphereOrigin[this.axis] = [
|
|
68928
|
+
mouseX,
|
|
68929
|
+
mouseY,
|
|
68930
|
+
this.nrrd_states.currentIndex,
|
|
68931
|
+
];
|
|
68932
|
+
this.setUpSphereOrigins(mouseX, mouseY);
|
|
68933
|
+
this.nrrd_states.cursorPageX = mouseX;
|
|
68934
|
+
this.nrrd_states.cursorPageY = mouseY;
|
|
68935
|
+
this.enableCrosshair();
|
|
68867
68936
|
// draw circle setup width/height for sphere canvas
|
|
68868
68937
|
this.drawSphere(mouseX, mouseY, this.nrrd_states.sphereRadius);
|
|
68869
68938
|
this.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleSphereWheel, true);
|
|
@@ -68976,18 +69045,8 @@ class nrrd_tools {
|
|
|
68976
69045
|
else if (this.gui_states.sphere &&
|
|
68977
69046
|
!this.nrrd_states.enableCursorChoose) {
|
|
68978
69047
|
// let { ctx, canvas } = this.setCurrentLayer();
|
|
68979
|
-
let mouseX = e.offsetX;
|
|
68980
|
-
let mouseY = e.offsetY;
|
|
68981
|
-
this.nrrd_states.sphereOrigin[this.axis] = [
|
|
68982
|
-
mouseX,
|
|
68983
|
-
mouseY,
|
|
68984
|
-
this.nrrd_states.currentIndex,
|
|
68985
|
-
];
|
|
68986
|
-
/************ */
|
|
68987
|
-
this.setUpSphereOrigins(mouseX, mouseY);
|
|
68988
|
-
this.nrrd_states.cursorPageX = mouseX;
|
|
68989
|
-
this.nrrd_states.cursorPageY = mouseY;
|
|
68990
|
-
this.enableCrosshair();
|
|
69048
|
+
// let mouseX = e.offsetX;
|
|
69049
|
+
// let mouseY = e.offsetY;
|
|
68991
69050
|
// plan B
|
|
68992
69051
|
// findout all index in the sphere radius range in Axial view
|
|
68993
69052
|
if (this.nrrd_states.spherePlanB) {
|
|
@@ -69227,9 +69286,10 @@ class nrrd_tools {
|
|
|
69227
69286
|
}
|
|
69228
69287
|
// limited the radius max and min
|
|
69229
69288
|
this.nrrd_states.sphereRadius = Math.max(1, Math.min(this.nrrd_states.sphereRadius, 50));
|
|
69289
|
+
console.log(this.nrrd_states.sphereOrigin[this.axis][0], this.nrrd_states.sphereOrigin[this.axis][1]);
|
|
69230
69290
|
// get mouse position
|
|
69231
|
-
const mouseX =
|
|
69232
|
-
const mouseY =
|
|
69291
|
+
const mouseX = this.nrrd_states.sphereOrigin[this.axis][0];
|
|
69292
|
+
const mouseY = this.nrrd_states.sphereOrigin[this.axis][1];
|
|
69233
69293
|
this.drawSphere(mouseX, mouseY, this.nrrd_states.sphereRadius);
|
|
69234
69294
|
};
|
|
69235
69295
|
return sphereEvent;
|
|
@@ -70100,8 +70160,214 @@ class nrrd_tools {
|
|
|
70100
70160
|
}
|
|
70101
70161
|
}
|
|
70102
70162
|
|
|
70163
|
+
class Node {
|
|
70164
|
+
constructor(id, p) {
|
|
70165
|
+
this.elements = [];
|
|
70166
|
+
this.id = id;
|
|
70167
|
+
this.p = p;
|
|
70168
|
+
}
|
|
70169
|
+
}
|
|
70170
|
+
class Element {
|
|
70171
|
+
constructor(id, basis, nodes) {
|
|
70172
|
+
this.id = id;
|
|
70173
|
+
this.basis = basis;
|
|
70174
|
+
this.nodes = nodes;
|
|
70175
|
+
}
|
|
70176
|
+
}
|
|
70177
|
+
class MeshNodeTool {
|
|
70178
|
+
constructor() {
|
|
70179
|
+
this.nodes = {};
|
|
70180
|
+
this.elements = {};
|
|
70181
|
+
}
|
|
70182
|
+
addNode(id, p) {
|
|
70183
|
+
this.nodes[id] = new Node(id, p);
|
|
70184
|
+
}
|
|
70185
|
+
addElement(id, basis, nodeIds) {
|
|
70186
|
+
let nodes = [];
|
|
70187
|
+
for (let nid in nodeIds) {
|
|
70188
|
+
let enid = nodeIds[nid];
|
|
70189
|
+
nodes.push(this.nodes[enid]);
|
|
70190
|
+
}
|
|
70191
|
+
let element = new Element(id, basis, nodes);
|
|
70192
|
+
this.elements[id] = element;
|
|
70193
|
+
for (let idx in element.nodes) {
|
|
70194
|
+
element.nodes[idx].elements.push(element);
|
|
70195
|
+
}
|
|
70196
|
+
}
|
|
70197
|
+
loadMesh(json) {
|
|
70198
|
+
for (let nid in json.nodes) {
|
|
70199
|
+
this.addNode(nid, json.nodes[nid]);
|
|
70200
|
+
}
|
|
70201
|
+
for (let eid in json.elements) {
|
|
70202
|
+
let elem = json.elements[eid];
|
|
70203
|
+
this.addElement(eid, elem.basis, elem.nodes);
|
|
70204
|
+
}
|
|
70205
|
+
}
|
|
70206
|
+
evaluate(elementId, xi) {
|
|
70207
|
+
let w = getWightsL3L3L3(xi);
|
|
70208
|
+
return evaluateElement(this.elements[elementId], w);
|
|
70209
|
+
}
|
|
70210
|
+
find(point, startingNodeId) {
|
|
70211
|
+
let pt = [point.x, point.y, point.z];
|
|
70212
|
+
let nodeMaterialPoints = this.getNodeMaterialPoints(startingNodeId);
|
|
70213
|
+
for (let i in nodeMaterialPoints) {
|
|
70214
|
+
let mpt = nodeMaterialPoints[i];
|
|
70215
|
+
let x = this.evaluate(mpt.elementId, mpt.xi);
|
|
70216
|
+
let r = calcDistance(x, pt);
|
|
70217
|
+
mpt.error = r;
|
|
70218
|
+
}
|
|
70219
|
+
let t0 = new Date().getTime();
|
|
70220
|
+
let n = 0;
|
|
70221
|
+
for (let step = 0; step < 10000; step++) {
|
|
70222
|
+
for (let i in nodeMaterialPoints) {
|
|
70223
|
+
let mpt = nodeMaterialPoints[i];
|
|
70224
|
+
let xi = perturbRandom(mpt.xi, 0.1);
|
|
70225
|
+
let x = this.evaluate(mpt.elementId, xi);
|
|
70226
|
+
let r = calcDistance(x, pt);
|
|
70227
|
+
if (r < mpt.error) {
|
|
70228
|
+
mpt.error = r;
|
|
70229
|
+
mpt.xi = xi;
|
|
70230
|
+
if (r < 1.0) {
|
|
70231
|
+
console.log("Time: (" +
|
|
70232
|
+
n +
|
|
70233
|
+
") " +
|
|
70234
|
+
(new Date().getTime() - t0) +
|
|
70235
|
+
"ms Error: " +
|
|
70236
|
+
r);
|
|
70237
|
+
return mpt;
|
|
70238
|
+
}
|
|
70239
|
+
}
|
|
70240
|
+
}
|
|
70241
|
+
n = step;
|
|
70242
|
+
}
|
|
70243
|
+
let bestIndex = 0;
|
|
70244
|
+
let bestError = nodeMaterialPoints[0].error;
|
|
70245
|
+
for (let i in nodeMaterialPoints) {
|
|
70246
|
+
let mpt = nodeMaterialPoints[i];
|
|
70247
|
+
if (mpt.error < bestError) {
|
|
70248
|
+
bestIndex = Number(i);
|
|
70249
|
+
bestError = mpt.error;
|
|
70250
|
+
}
|
|
70251
|
+
}
|
|
70252
|
+
let mpt = nodeMaterialPoints[bestIndex];
|
|
70253
|
+
console.log("Time: (" +
|
|
70254
|
+
n +
|
|
70255
|
+
") " +
|
|
70256
|
+
(new Date().getTime() - t0) +
|
|
70257
|
+
"ms Error: " +
|
|
70258
|
+
mpt.error);
|
|
70259
|
+
return mpt;
|
|
70260
|
+
}
|
|
70261
|
+
search(point, startingNodeId, tol) {
|
|
70262
|
+
let pt = [point.x, point.y, point.z];
|
|
70263
|
+
let nodeMaterialPoints = this.getNodeMaterialPoints(startingNodeId);
|
|
70264
|
+
for (let i in nodeMaterialPoints) {
|
|
70265
|
+
let mpt = nodeMaterialPoints[i];
|
|
70266
|
+
let x = this.evaluate(mpt.elementId, mpt.xi);
|
|
70267
|
+
mpt.error = calcDistance(x, pt);
|
|
70268
|
+
}
|
|
70269
|
+
let t0 = new Date().getTime();
|
|
70270
|
+
let xiStepSize = [0.1, 0.01, 0.001];
|
|
70271
|
+
for (let i in nodeMaterialPoints) {
|
|
70272
|
+
let mpt = nodeMaterialPoints[i];
|
|
70273
|
+
let numDims = mpt.xi.length;
|
|
70274
|
+
let nIter = 0;
|
|
70275
|
+
let go = true;
|
|
70276
|
+
while (go || nIter < 10) {
|
|
70277
|
+
let minErr = 1 * mpt.error;
|
|
70278
|
+
let minXi;
|
|
70279
|
+
for (let xiIdx in xiStepSize) {
|
|
70280
|
+
let dXi = xiStepSize[xiIdx];
|
|
70281
|
+
for (let dim = 0; dim < numDims; dim++) {
|
|
70282
|
+
let xi = mpt.xi.slice();
|
|
70283
|
+
xi[dim] += dXi;
|
|
70284
|
+
if (xi[dim] >= 0 && xi[dim] <= 1) {
|
|
70285
|
+
let x = this.evaluate(mpt.elementId, mpt.xi);
|
|
70286
|
+
let err = calcDistance(x, pt);
|
|
70287
|
+
if (err < minErr) {
|
|
70288
|
+
minErr = err;
|
|
70289
|
+
minXi = xi;
|
|
70290
|
+
if (err < tol) {
|
|
70291
|
+
mpt.error = err;
|
|
70292
|
+
mpt.xi = xi;
|
|
70293
|
+
console.log("Time 1: " +
|
|
70294
|
+
(new Date().getTime() - t0) +
|
|
70295
|
+
"ms Error: " +
|
|
70296
|
+
mpt.error);
|
|
70297
|
+
return mpt;
|
|
70298
|
+
}
|
|
70299
|
+
}
|
|
70300
|
+
}
|
|
70301
|
+
xi = mpt.xi.slice();
|
|
70302
|
+
xi[dim] -= dXi;
|
|
70303
|
+
if (xi[dim] >= 0 && xi[dim] <= 1) {
|
|
70304
|
+
let x = this.evaluate(mpt.elementId, mpt.xi);
|
|
70305
|
+
let err = calcDistance(x, pt);
|
|
70306
|
+
if (err < minErr) {
|
|
70307
|
+
minErr = err;
|
|
70308
|
+
minXi = xi;
|
|
70309
|
+
if (err < tol) {
|
|
70310
|
+
mpt.error = err;
|
|
70311
|
+
mpt.xi = xi;
|
|
70312
|
+
console.log("Time 2: " +
|
|
70313
|
+
(new Date().getTime() - t0) +
|
|
70314
|
+
"ms Error: " +
|
|
70315
|
+
mpt.error);
|
|
70316
|
+
return mpt;
|
|
70317
|
+
}
|
|
70318
|
+
}
|
|
70319
|
+
}
|
|
70320
|
+
}
|
|
70321
|
+
}
|
|
70322
|
+
if (minXi === null || minXi === undefined) {
|
|
70323
|
+
go = false;
|
|
70324
|
+
}
|
|
70325
|
+
else {
|
|
70326
|
+
mpt.xi = minXi;
|
|
70327
|
+
mpt.error = minErr;
|
|
70328
|
+
}
|
|
70329
|
+
nIter++;
|
|
70330
|
+
}
|
|
70331
|
+
}
|
|
70332
|
+
let bestIndex = 0;
|
|
70333
|
+
let bestError = nodeMaterialPoints[0].error;
|
|
70334
|
+
for (let i in nodeMaterialPoints) {
|
|
70335
|
+
let mpt = nodeMaterialPoints[i];
|
|
70336
|
+
if (mpt.error < bestError) {
|
|
70337
|
+
bestIndex = Number(i);
|
|
70338
|
+
bestError = mpt.error;
|
|
70339
|
+
}
|
|
70340
|
+
}
|
|
70341
|
+
let mpt = nodeMaterialPoints[bestIndex];
|
|
70342
|
+
console.log("Time 3: " + (new Date().getTime() - t0) + "ms Error: " + mpt.error);
|
|
70343
|
+
return mpt;
|
|
70344
|
+
}
|
|
70345
|
+
getNodeMaterialPoints(nodeId) {
|
|
70346
|
+
let materialPoints = [];
|
|
70347
|
+
let node = this.nodes[nodeId];
|
|
70348
|
+
for (let eid in node.elements) {
|
|
70349
|
+
let element = node.elements[eid];
|
|
70350
|
+
let nodeIdx = element.nodes.indexOf(node);
|
|
70351
|
+
let xi0 = (nodeIdx % 4) / 3;
|
|
70352
|
+
let xi1 = Math.floor((nodeIdx % 16) / 4) / 3;
|
|
70353
|
+
let xi2 = Math.floor(nodeIdx / 16) / 3;
|
|
70354
|
+
materialPoints.push({ elementId: element.id, xi: [xi0, xi1, xi2] });
|
|
70355
|
+
}
|
|
70356
|
+
return materialPoints;
|
|
70357
|
+
}
|
|
70358
|
+
}
|
|
70359
|
+
function evaluateElement(element, weights) {
|
|
70360
|
+
let x = [0, 0, 0];
|
|
70361
|
+
for (let f = 0; f < 3; f++) {
|
|
70362
|
+
for (let i = 0; i < weights.length; i++) {
|
|
70363
|
+
x[f] += weights[i] * element.nodes[i].p[f];
|
|
70364
|
+
}
|
|
70365
|
+
}
|
|
70366
|
+
return x;
|
|
70367
|
+
}
|
|
70368
|
+
|
|
70103
70369
|
// import * as kiwrious from "copper3d_plugin_heart_k";
|
|
70104
|
-
const REVISION = "v1.15.
|
|
70105
|
-
console.log("%cCopper3D Visualisation %cBeta:v1.15.
|
|
70370
|
+
const REVISION = "v1.15.16";
|
|
70371
|
+
console.log("%cCopper3D Visualisation %cBeta:v1.15.16", "padding: 3px;color:white; background:#023047", "padding: 3px;color:white; background:#f50a25");
|
|
70106
70372
|
|
|
70107
|
-
export { CameraViewPoint, Copper3dTrackballControls, REVISION, addBoxHelper, addLabelToScene, configKiwriousHeart, convert3DPostoScreenPos, convertScreenPosto3DPos, copperMScene, copperMSceneRenderer, copperRenderer, copperRendererOnDemond, copperScene, copperSceneOnDemond, createTexture2D_NRRD, fullScreenListenner, kiwrious, loading, nrrd_tools, setHDRFilePath };
|
|
70373
|
+
export { CameraViewPoint, Copper3dTrackballControls, MeshNodeTool, REVISION, addBoxHelper, addLabelToScene, configKiwriousHeart, convert3DPostoScreenPos, convertScreenPosto3DPos, copperMScene, copperMSceneRenderer, copperRenderer, copperRendererOnDemond, copperScene, copperSceneOnDemond, createTexture2D_NRRD, fullScreenListenner, kiwrious, loading, nrrd_tools, setHDRFilePath };
|