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.
@@ -11,10 +11,6 @@ export default class copperRenderer extends baseRenderer {
11
11
  this.interval = 1 / this.fps;
12
12
  this.preRenderCallbackFunctions = [];
13
13
  this.animate = (time) => {
14
- // if (this.start) {
15
- // this.fpsCap = createFpsCap(this.render, 10);
16
- // this.start = false;
17
- // }
18
14
  var _a, _b, _c;
19
15
  switch ((_a = this.options) === null || _a === void 0 ? void 0 : _a.fpsMode) {
20
16
  case "1":
@@ -1 +1 @@
1
- {"version":3,"file":"copperRenderer.js","sourceRoot":"","sources":["../../src/Renderer/copperRenderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"copperRenderer.js","sourceRoot":"","sources":["../../src/Renderer/copperRenderer.ts"],"names":[],"mappings":"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"}
@@ -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
+ }
@@ -0,0 +1,211 @@
1
+ import { getWightsL3L3L3, calcDistance, perturbRandom } from "./utils";
2
+ export class Node {
3
+ constructor(id, p) {
4
+ this.elements = [];
5
+ this.id = id;
6
+ this.p = p;
7
+ }
8
+ }
9
+ export class Element {
10
+ constructor(id, basis, nodes) {
11
+ this.id = id;
12
+ this.basis = basis;
13
+ this.nodes = nodes;
14
+ }
15
+ }
16
+ export class MeshNodeTool {
17
+ constructor() {
18
+ this.nodes = {};
19
+ this.elements = {};
20
+ }
21
+ addNode(id, p) {
22
+ this.nodes[id] = new Node(id, p);
23
+ }
24
+ addElement(id, basis, nodeIds) {
25
+ let nodes = [];
26
+ for (let nid in nodeIds) {
27
+ let enid = nodeIds[nid];
28
+ nodes.push(this.nodes[enid]);
29
+ }
30
+ let element = new Element(id, basis, nodes);
31
+ this.elements[id] = element;
32
+ for (let idx in element.nodes) {
33
+ element.nodes[idx].elements.push(element);
34
+ }
35
+ }
36
+ loadMesh(json) {
37
+ for (let nid in json.nodes) {
38
+ this.addNode(nid, json.nodes[nid]);
39
+ }
40
+ for (let eid in json.elements) {
41
+ let elem = json.elements[eid];
42
+ this.addElement(eid, elem.basis, elem.nodes);
43
+ }
44
+ }
45
+ evaluate(elementId, xi) {
46
+ let w = getWightsL3L3L3(xi);
47
+ return evaluateElement(this.elements[elementId], w);
48
+ }
49
+ find(point, startingNodeId) {
50
+ let pt = [point.x, point.y, point.z];
51
+ let nodeMaterialPoints = this.getNodeMaterialPoints(startingNodeId);
52
+ for (let i in nodeMaterialPoints) {
53
+ let mpt = nodeMaterialPoints[i];
54
+ let x = this.evaluate(mpt.elementId, mpt.xi);
55
+ let r = calcDistance(x, pt);
56
+ mpt.error = r;
57
+ }
58
+ let t0 = new Date().getTime();
59
+ let n = 0;
60
+ for (let step = 0; step < 10000; step++) {
61
+ for (let i in nodeMaterialPoints) {
62
+ let mpt = nodeMaterialPoints[i];
63
+ let xi = perturbRandom(mpt.xi, 0.1);
64
+ let x = this.evaluate(mpt.elementId, xi);
65
+ let r = calcDistance(x, pt);
66
+ if (r < mpt.error) {
67
+ mpt.error = r;
68
+ mpt.xi = xi;
69
+ if (r < 1.0) {
70
+ console.log("Time: (" +
71
+ n +
72
+ ") " +
73
+ (new Date().getTime() - t0) +
74
+ "ms Error: " +
75
+ r);
76
+ return mpt;
77
+ }
78
+ }
79
+ }
80
+ n = step;
81
+ }
82
+ let bestIndex = 0;
83
+ let bestError = nodeMaterialPoints[0].error;
84
+ for (let i in nodeMaterialPoints) {
85
+ let mpt = nodeMaterialPoints[i];
86
+ if (mpt.error < bestError) {
87
+ bestIndex = Number(i);
88
+ bestError = mpt.error;
89
+ }
90
+ }
91
+ let mpt = nodeMaterialPoints[bestIndex];
92
+ console.log("Time: (" +
93
+ n +
94
+ ") " +
95
+ (new Date().getTime() - t0) +
96
+ "ms Error: " +
97
+ mpt.error);
98
+ return mpt;
99
+ }
100
+ search(point, startingNodeId, tol) {
101
+ let pt = [point.x, point.y, point.z];
102
+ let nodeMaterialPoints = this.getNodeMaterialPoints(startingNodeId);
103
+ for (let i in nodeMaterialPoints) {
104
+ let mpt = nodeMaterialPoints[i];
105
+ let x = this.evaluate(mpt.elementId, mpt.xi);
106
+ mpt.error = calcDistance(x, pt);
107
+ }
108
+ let t0 = new Date().getTime();
109
+ let xiStepSize = [0.1, 0.01, 0.001];
110
+ for (let i in nodeMaterialPoints) {
111
+ let mpt = nodeMaterialPoints[i];
112
+ let numDims = mpt.xi.length;
113
+ let nIter = 0;
114
+ let go = true;
115
+ while (go || nIter < 10) {
116
+ let minErr = 1 * mpt.error;
117
+ let minXi;
118
+ for (let xiIdx in xiStepSize) {
119
+ let dXi = xiStepSize[xiIdx];
120
+ for (let dim = 0; dim < numDims; dim++) {
121
+ let xi = mpt.xi.slice();
122
+ xi[dim] += dXi;
123
+ if (xi[dim] >= 0 && xi[dim] <= 1) {
124
+ let x = this.evaluate(mpt.elementId, mpt.xi);
125
+ let err = calcDistance(x, pt);
126
+ if (err < minErr) {
127
+ minErr = err;
128
+ minXi = xi;
129
+ if (err < tol) {
130
+ mpt.error = err;
131
+ mpt.xi = xi;
132
+ console.log("Time 1: " +
133
+ (new Date().getTime() - t0) +
134
+ "ms Error: " +
135
+ mpt.error);
136
+ return mpt;
137
+ }
138
+ }
139
+ }
140
+ else {
141
+ }
142
+ xi = mpt.xi.slice();
143
+ xi[dim] -= dXi;
144
+ if (xi[dim] >= 0 && xi[dim] <= 1) {
145
+ let x = this.evaluate(mpt.elementId, mpt.xi);
146
+ let err = calcDistance(x, pt);
147
+ if (err < minErr) {
148
+ minErr = err;
149
+ minXi = xi;
150
+ if (err < tol) {
151
+ mpt.error = err;
152
+ mpt.xi = xi;
153
+ console.log("Time 2: " +
154
+ (new Date().getTime() - t0) +
155
+ "ms Error: " +
156
+ mpt.error);
157
+ return mpt;
158
+ }
159
+ }
160
+ }
161
+ else {
162
+ }
163
+ }
164
+ }
165
+ if (minXi === null || minXi === undefined) {
166
+ go = false;
167
+ }
168
+ else {
169
+ mpt.xi = minXi;
170
+ mpt.error = minErr;
171
+ }
172
+ nIter++;
173
+ }
174
+ }
175
+ let bestIndex = 0;
176
+ let bestError = nodeMaterialPoints[0].error;
177
+ for (let i in nodeMaterialPoints) {
178
+ let mpt = nodeMaterialPoints[i];
179
+ if (mpt.error < bestError) {
180
+ bestIndex = Number(i);
181
+ bestError = mpt.error;
182
+ }
183
+ }
184
+ let mpt = nodeMaterialPoints[bestIndex];
185
+ console.log("Time 3: " + (new Date().getTime() - t0) + "ms Error: " + mpt.error);
186
+ return mpt;
187
+ }
188
+ getNodeMaterialPoints(nodeId) {
189
+ let materialPoints = [];
190
+ let node = this.nodes[nodeId];
191
+ for (let eid in node.elements) {
192
+ let element = node.elements[eid];
193
+ let nodeIdx = element.nodes.indexOf(node);
194
+ let xi0 = (nodeIdx % 4) / 3;
195
+ let xi1 = Math.floor((nodeIdx % 16) / 4) / 3;
196
+ let xi2 = Math.floor(nodeIdx / 16) / 3;
197
+ materialPoints.push({ elementId: element.id, xi: [xi0, xi1, xi2] });
198
+ }
199
+ return materialPoints;
200
+ }
201
+ }
202
+ function evaluateElement(element, weights) {
203
+ let x = [0, 0, 0];
204
+ for (let f = 0; f < 3; f++) {
205
+ for (let i = 0; i < weights.length; i++) {
206
+ x[f] += weights[i] * element.nodes[i].p[f];
207
+ }
208
+ }
209
+ return x;
210
+ }
211
+ //# sourceMappingURL=MeshNodeTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MeshNodeTool.js","sourceRoot":"","sources":["../../src/Utils/MeshNodeTool.ts"],"names":[],"mappings":"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"}
@@ -1238,6 +1238,16 @@ export class nrrd_tools {
1238
1238
  else if (this.gui_states.sphere) {
1239
1239
  let mouseX = e.offsetX;
1240
1240
  let mouseY = e.offsetY;
1241
+ // record mouseX,Y, and enable crosshair function
1242
+ this.nrrd_states.sphereOrigin[this.axis] = [
1243
+ mouseX,
1244
+ mouseY,
1245
+ this.nrrd_states.currentIndex,
1246
+ ];
1247
+ this.setUpSphereOrigins(mouseX, mouseY);
1248
+ this.nrrd_states.cursorPageX = mouseX;
1249
+ this.nrrd_states.cursorPageY = mouseY;
1250
+ this.enableCrosshair();
1241
1251
  // draw circle setup width/height for sphere canvas
1242
1252
  this.drawSphere(mouseX, mouseY, this.nrrd_states.sphereRadius);
1243
1253
  this.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleSphereWheel, true);
@@ -1350,18 +1360,8 @@ export class nrrd_tools {
1350
1360
  else if (this.gui_states.sphere &&
1351
1361
  !this.nrrd_states.enableCursorChoose) {
1352
1362
  // let { ctx, canvas } = this.setCurrentLayer();
1353
- let mouseX = e.offsetX;
1354
- let mouseY = e.offsetY;
1355
- this.nrrd_states.sphereOrigin[this.axis] = [
1356
- mouseX,
1357
- mouseY,
1358
- this.nrrd_states.currentIndex,
1359
- ];
1360
- /************ */
1361
- this.setUpSphereOrigins(mouseX, mouseY);
1362
- this.nrrd_states.cursorPageX = mouseX;
1363
- this.nrrd_states.cursorPageY = mouseY;
1364
- this.enableCrosshair();
1363
+ // let mouseX = e.offsetX;
1364
+ // let mouseY = e.offsetY;
1365
1365
  // plan B
1366
1366
  // findout all index in the sphere radius range in Axial view
1367
1367
  if (this.nrrd_states.spherePlanB) {
@@ -1601,9 +1601,10 @@ export class nrrd_tools {
1601
1601
  }
1602
1602
  // limited the radius max and min
1603
1603
  this.nrrd_states.sphereRadius = Math.max(1, Math.min(this.nrrd_states.sphereRadius, 50));
1604
+ console.log(this.nrrd_states.sphereOrigin[this.axis][0], this.nrrd_states.sphereOrigin[this.axis][1]);
1604
1605
  // get mouse position
1605
- const mouseX = e.offsetX;
1606
- const mouseY = e.offsetY;
1606
+ const mouseX = this.nrrd_states.sphereOrigin[this.axis][0];
1607
+ const mouseY = this.nrrd_states.sphereOrigin[this.axis][1];
1607
1608
  this.drawSphere(mouseX, mouseY, this.nrrd_states.sphereRadius);
1608
1609
  };
1609
1610
  return sphereEvent;