@kitware/vtk.js 28.10.1 → 28.10.2
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/Common/Core/Math/index.js +64 -1
- package/Common/Core/Math.d.ts +14 -0
- package/Common/Core/Math.js +1 -1
- package/Rendering/Core/ImageMapper.js +17 -36
- package/Rendering/Core/Renderer.js +1 -1
- package/Rendering/OpenGL/Texture.js +1 -1
- package/Widgets/Widgets3D/AngleWidget.js +1 -1
- package/Widgets/Widgets3D/ResliceCursorWidget/behavior.js +1 -1
- package/Widgets/Widgets3D/ResliceCursorWidget/helpers.js +1 -1
- package/package.json +1 -1
|
@@ -2108,6 +2108,67 @@ function getMajorAxisIndex(vector) {
|
|
|
2108
2108
|
}
|
|
2109
2109
|
|
|
2110
2110
|
return axisIndex;
|
|
2111
|
+
} // Return the closest orthogonal matrix of 1, -1 and 0
|
|
2112
|
+
// It works for both column major and row major matrices
|
|
2113
|
+
// This function iteratively associate a column with a row by choosing
|
|
2114
|
+
// the greatest absolute value from the remaining row and columns
|
|
2115
|
+
// For each association, a -1 or a 1 is set in the output, depending on
|
|
2116
|
+
// the sign of the value in the original matrix
|
|
2117
|
+
|
|
2118
|
+
function getSparseOrthogonalMatrix(matrix) {
|
|
2119
|
+
var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 3;
|
|
2120
|
+
// Initialize rows and columns to available indices
|
|
2121
|
+
var rows = new Array(n);
|
|
2122
|
+
var cols = new Array(n);
|
|
2123
|
+
|
|
2124
|
+
for (var i = 0; i < n; ++i) {
|
|
2125
|
+
rows[i] = i;
|
|
2126
|
+
cols[i] = i;
|
|
2127
|
+
} // No need for the last iteration: i = 0
|
|
2128
|
+
|
|
2129
|
+
|
|
2130
|
+
for (var _i7 = n - 1; _i7 > 0; _i7--) {
|
|
2131
|
+
// Loop invariant:
|
|
2132
|
+
// rows[0:i] and cols[0:i] contain the remaining rows and columns
|
|
2133
|
+
// rows]i:n[ and cols]i:n[ contain the associations found (rows[k] is associated with cols[k])
|
|
2134
|
+
var bestValue = -Infinity;
|
|
2135
|
+
var bestRowI = 0;
|
|
2136
|
+
var bestColI = 0;
|
|
2137
|
+
|
|
2138
|
+
for (var rowI = 0; rowI <= _i7; ++rowI) {
|
|
2139
|
+
var row = rows[rowI];
|
|
2140
|
+
|
|
2141
|
+
for (var colI = 0; colI <= _i7; ++colI) {
|
|
2142
|
+
var col = cols[colI];
|
|
2143
|
+
var absVal = Math.abs(matrix[row + n * col]);
|
|
2144
|
+
|
|
2145
|
+
if (absVal > bestValue) {
|
|
2146
|
+
bestValue = absVal;
|
|
2147
|
+
bestRowI = rowI;
|
|
2148
|
+
bestColI = colI;
|
|
2149
|
+
}
|
|
2150
|
+
}
|
|
2151
|
+
} // Found an association between rows[bestRowI] and cols[bestColI]
|
|
2152
|
+
// Put both at the end of their array by swapping with i
|
|
2153
|
+
|
|
2154
|
+
|
|
2155
|
+
var _ref = [rows[bestRowI], rows[_i7]];
|
|
2156
|
+
rows[_i7] = _ref[0];
|
|
2157
|
+
rows[bestRowI] = _ref[1];
|
|
2158
|
+
var _ref2 = [cols[bestColI], cols[_i7]];
|
|
2159
|
+
cols[_i7] = _ref2[0];
|
|
2160
|
+
cols[bestColI] = _ref2[1];
|
|
2161
|
+
} // Convert row/column association to a matrix
|
|
2162
|
+
|
|
2163
|
+
|
|
2164
|
+
var output = new Array(n * n).fill(0);
|
|
2165
|
+
|
|
2166
|
+
for (var _i8 = 0; _i8 < n; ++_i8) {
|
|
2167
|
+
var matIdx = rows[_i8] + n * cols[_i8];
|
|
2168
|
+
output[matIdx] = matrix[matIdx] < 0 ? -1 : 1;
|
|
2169
|
+
}
|
|
2170
|
+
|
|
2171
|
+
return output;
|
|
2111
2172
|
}
|
|
2112
2173
|
function floatToHex2(value) {
|
|
2113
2174
|
var integer = Math.floor(value * 255);
|
|
@@ -2245,6 +2306,7 @@ var vtkMath = {
|
|
|
2245
2306
|
// JS add-on
|
|
2246
2307
|
createUninitializedBounds: createUninitializedBounds,
|
|
2247
2308
|
getMajorAxisIndex: getMajorAxisIndex,
|
|
2309
|
+
getSparseOrthogonalMatrix: getSparseOrthogonalMatrix,
|
|
2248
2310
|
floatToHex2: floatToHex2,
|
|
2249
2311
|
floatRGB2HexCode: floatRGB2HexCode,
|
|
2250
2312
|
float2CssRGBA: float2CssRGBA
|
|
@@ -2364,10 +2426,11 @@ var vtkMath$1 = /*#__PURE__*/Object.freeze({
|
|
|
2364
2426
|
isNan: isNan,
|
|
2365
2427
|
createUninitializedBounds: createUninitializedBounds,
|
|
2366
2428
|
getMajorAxisIndex: getMajorAxisIndex,
|
|
2429
|
+
getSparseOrthogonalMatrix: getSparseOrthogonalMatrix,
|
|
2367
2430
|
floatToHex2: floatToHex2,
|
|
2368
2431
|
floatRGB2HexCode: floatRGB2HexCode,
|
|
2369
2432
|
float2CssRGBA: float2CssRGBA,
|
|
2370
2433
|
'default': vtkMath
|
|
2371
2434
|
});
|
|
2372
2435
|
|
|
2373
|
-
export {
|
|
2436
|
+
export { ceilLog2 as $, degreesFromRadians as A, areEquals as B, clampValue as C, arrayRange as D, getMajorAxisIndex as E, createUninitializedBounds as F, isInf as G, rgb2hsv as H, rgb2lab as I, lab2rgb as J, floor as K, round as L, normalize2D as M, nearestPowerOfTwo as N, multiply3x3_vect3 as O, getSparseOrthogonalMatrix as P, areBoundsInitialized as Q, isPowerOfTwo as R, angleBetweenVectors as S, signedAngleBetweenVectors as T, createArray as U, Pi as V, ceil as W, min as X, max as Y, arrayMin as Z, arrayMax as _, areMatricesEqual as a, float2CssRGBA as a$, factorial as a0, binomial as a1, beginCombination as a2, nextCombination as a3, randomSeed as a4, getSeed as a5, gaussian as a6, multiplyScalar2D as a7, multiplyAccumulate2D as a8, outer as a9, diagonalize3x3 as aA, singularValueDecomposition3x3 as aB, luFactorLinearSystem as aC, luSolveLinearSystem as aD, invertMatrix as aE, estimateMatrixCondition as aF, solveHomogeneousLeastSquares as aG, solveLeastSquares as aH, hex2float as aI, lab2xyz as aJ, xyz2lab as aK, xyz2rgb as aL, rgb2xyz as aM, computeBoundsFromPoints as aN, clampAndNormalizeValue as aO, getScalarTypeFittingRange as aP, getAdjustedScalarRange as aQ, extentIsWithinOtherExtent as aR, boundsIsWithinOtherBounds as aS, pointIsWithinBounds as aT, solve3PointCircle as aU, inf as aV, negInf as aW, isFinite as aX, isNaN as aY, floatToHex2 as aZ, floatRGB2HexCode as a_, projectVector as aa, dot2D as ab, projectVector2D as ac, gaussianAmplitude as ad, gaussianWeight as ae, outer2D as af, norm2D as ag, rowsToMat4 as ah, columnsToMat4 as ai, columnsToMat3 as aj, LUFactor3x3 as ak, LUSolve3x3 as al, linearSolve3x3 as am, multiply3x3_mat3 as an, multiplyMatrix as ao, transpose3x3 as ap, invert3x3 as aq, identity3x3 as ar, identity as as, isIdentity as at, isIdentity3x3 as au, quaternionToMatrix3x3 as av, roundNumber as aw, matrix3x3ToQuaternion as ax, multiplyQuaternion as ay, orthogonalize3x3 as az, roundVector as b, clampVector as c, dot as d, distance2BetweenPoints as e, vtkMath as f, solveLinearSystem as g, hsv2rgb as h, isNan as i, cross as j, add as k, normalize as l, multiplyAccumulate as m, norm as n, determinant2x2 as o, jacobiN as p, perpendiculars as q, radiansFromDegrees as r, subtract as s, jacobi as t, uninitializeBounds as u, vtkMath$1 as v, multiplyScalar as w, random as x, determinant3x3 as y, rowsToMat3 as z };
|
package/Common/Core/Math.d.ts
CHANGED
|
@@ -878,6 +878,19 @@ export function createUninitializedBounds(): Bounds;
|
|
|
878
878
|
*/
|
|
879
879
|
export function getMajorAxisIndex(vector: number[]): number;
|
|
880
880
|
|
|
881
|
+
/**
|
|
882
|
+
* Return the closest orthogonal matrix of 1, -1 and 0
|
|
883
|
+
* It works for both column major and row major matrices
|
|
884
|
+
* This function iteratively associate a column with a row by choosing
|
|
885
|
+
* the greatest absolute value from the remaining row and columns
|
|
886
|
+
* For each association, a -1 or a 1 is set in the output, depending on
|
|
887
|
+
* the sign of the value in the original matrix
|
|
888
|
+
*
|
|
889
|
+
* @param {Number[]} matrix The matrix of size nxn
|
|
890
|
+
* @param {Number[]} n The size of the square matrix, defaults to 3
|
|
891
|
+
*/
|
|
892
|
+
export function getSparseOrthogonalMatrix(matrix: number[], n: number): number[];
|
|
893
|
+
|
|
881
894
|
/**
|
|
882
895
|
*
|
|
883
896
|
* @param {Number} value The value to convert.
|
|
@@ -1028,6 +1041,7 @@ export declare const vtkMath: {
|
|
|
1028
1041
|
isInf: typeof isInf;
|
|
1029
1042
|
createUninitializedBounds: typeof createUninitializedBounds;
|
|
1030
1043
|
getMajorAxisIndex: typeof getMajorAxisIndex;
|
|
1044
|
+
getSparseOrthogonalMatrix: typeof getSparseOrthogonalMatrix;
|
|
1031
1045
|
floatToHex2: typeof floatToHex2;
|
|
1032
1046
|
floatRGB2HexCode: typeof floatRGB2HexCode;
|
|
1033
1047
|
float2CssRGBA: typeof float2CssRGBA;
|
package/Common/Core/Math.js
CHANGED
|
@@ -3,4 +3,4 @@ import '@babel/runtime/helpers/toConsumableArray';
|
|
|
3
3
|
import 'seedrandom';
|
|
4
4
|
import '../../macros.js';
|
|
5
5
|
import './Math/Constants.js';
|
|
6
|
-
export {
|
|
6
|
+
export { ak as LUFactor3x3, al as LUSolve3x3, V as Pi, k as add, S as angleBetweenVectors, Q as areBoundsInitialized, B as areEquals, a as areMatricesEqual, _ as arrayMax, Z as arrayMin, D as arrayRange, a2 as beginCombination, a1 as binomial, aS as boundsIsWithinOtherBounds, W as ceil, $ as ceilLog2, aO as clampAndNormalizeValue, C as clampValue, c as clampVector, aj as columnsToMat3, ai as columnsToMat4, aN as computeBoundsFromPoints, U as createArray, F as createUninitializedBounds, j as cross, f as default, A as degreesFromRadians, o as determinant2x2, y as determinant3x3, aA as diagonalize3x3, e as distance2BetweenPoints, d as dot, ab as dot2D, aF as estimateMatrixCondition, aR as extentIsWithinOtherExtent, a0 as factorial, a$ as float2CssRGBA, a_ as floatRGB2HexCode, aZ as floatToHex2, K as floor, a6 as gaussian, ad as gaussianAmplitude, ae as gaussianWeight, aQ as getAdjustedScalarRange, E as getMajorAxisIndex, aP as getScalarTypeFittingRange, a5 as getSeed, P as getSparseOrthogonalMatrix, aI as hex2float, h as hsv2rgb, as as identity, ar as identity3x3, aV as inf, aq as invert3x3, aE as invertMatrix, aX as isFinite, at as isIdentity, au as isIdentity3x3, G as isInf, aY as isNaN, i as isNan, R as isPowerOfTwo, t as jacobi, p as jacobiN, J as lab2rgb, aJ as lab2xyz, am as linearSolve3x3, aC as luFactorLinearSystem, aD as luSolveLinearSystem, ax as matrix3x3ToQuaternion, Y as max, X as min, an as multiply3x3_mat3, O as multiply3x3_vect3, m as multiplyAccumulate, a8 as multiplyAccumulate2D, ao as multiplyMatrix, ay as multiplyQuaternion, w as multiplyScalar, a7 as multiplyScalar2D, N as nearestPowerOfTwo, aW as negInf, a3 as nextCombination, n as norm, ag as norm2D, l as normalize, M as normalize2D, az as orthogonalize3x3, a9 as outer, af as outer2D, q as perpendiculars, aT as pointIsWithinBounds, aa as projectVector, ac as projectVector2D, av as quaternionToMatrix3x3, r as radiansFromDegrees, x as random, a4 as randomSeed, H as rgb2hsv, I as rgb2lab, aM as rgb2xyz, L as round, aw as roundNumber, b as roundVector, z as rowsToMat3, ah as rowsToMat4, T as signedAngleBetweenVectors, aB as singularValueDecomposition3x3, aU as solve3PointCircle, aG as solveHomogeneousLeastSquares, aH as solveLeastSquares, g as solveLinearSystem, s as subtract, ap as transpose3x3, u as uninitializeBounds, aK as xyz2lab, aL as xyz2rgb } from './Math/index.js';
|
|
@@ -3,7 +3,7 @@ import Constants from './ImageMapper/Constants.js';
|
|
|
3
3
|
import macro from '../../macros.js';
|
|
4
4
|
import vtkAbstractImageMapper from './AbstractImageMapper.js';
|
|
5
5
|
import { intersectWithLineForPointPicking, intersectWithLineForCellPicking } from './AbstractImageMapper/helper.js';
|
|
6
|
-
import { C as clampValue, O as multiply3x3_vect3, F as createUninitializedBounds } from '../../Common/Core/Math/index.js';
|
|
6
|
+
import { C as clampValue, O as multiply3x3_vect3, F as createUninitializedBounds, P as getSparseOrthogonalMatrix } from '../../Common/Core/Math/index.js';
|
|
7
7
|
import CoincidentTopologyHelper from './Mapper/CoincidentTopologyHelper.js';
|
|
8
8
|
|
|
9
9
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
@@ -11,7 +11,6 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
|
|
|
11
11
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
12
12
|
var staticOffsetAPI = CoincidentTopologyHelper.staticOffsetAPI,
|
|
13
13
|
otherStaticMethods = CoincidentTopologyHelper.otherStaticMethods;
|
|
14
|
-
var vtkWarningMacro = macro.vtkWarningMacro;
|
|
15
14
|
var SlicingMode = Constants.SlicingMode; // ----------------------------------------------------------------------------
|
|
16
15
|
// vtkImageMapper methods
|
|
17
16
|
// ----------------------------------------------------------------------------
|
|
@@ -164,19 +163,19 @@ function vtkImageMapper(publicAPI, model) {
|
|
|
164
163
|
};
|
|
165
164
|
|
|
166
165
|
function computeClosestIJKAxis() {
|
|
167
|
-
var
|
|
166
|
+
var xyzMode;
|
|
168
167
|
|
|
169
168
|
switch (model.slicingMode) {
|
|
170
169
|
case SlicingMode.X:
|
|
171
|
-
|
|
170
|
+
xyzMode = 0;
|
|
172
171
|
break;
|
|
173
172
|
|
|
174
173
|
case SlicingMode.Y:
|
|
175
|
-
|
|
174
|
+
xyzMode = 1;
|
|
176
175
|
break;
|
|
177
176
|
|
|
178
177
|
case SlicingMode.Z:
|
|
179
|
-
|
|
178
|
+
xyzMode = 2;
|
|
180
179
|
break;
|
|
181
180
|
|
|
182
181
|
default:
|
|
@@ -185,41 +184,23 @@ function vtkImageMapper(publicAPI, model) {
|
|
|
185
184
|
flip: false
|
|
186
185
|
};
|
|
187
186
|
return;
|
|
188
|
-
} //
|
|
187
|
+
} // The direction matrix in vtkImageData is the indexToWorld rotation matrix
|
|
188
|
+
// with a column-major data layout since it is stored as a WebGL matrix.
|
|
189
189
|
|
|
190
190
|
|
|
191
|
-
var
|
|
192
|
-
//
|
|
193
|
-
// We
|
|
194
|
-
// to be in a row-major data layout to use vtkMath for operations.
|
|
195
|
-
// To go from the indexToWorld column-major matrix to the worldToIndex
|
|
196
|
-
// row-major matrix, we need to transpose it (column -> row) then inverse it.
|
|
197
|
-
// However, that 3x3 matrix is a rotation matrix which is orthonormal, meaning
|
|
198
|
-
// that its inverse is equal to its transpose. We therefore need to apply two
|
|
199
|
-
// transpositions resulting in a no-op.
|
|
200
|
-
|
|
201
|
-
var a = publicAPI.getCurrentImage().getDirection();
|
|
202
|
-
multiply3x3_vect3(a, inVec3, out);
|
|
203
|
-
var maxAbs = 0.0;
|
|
204
|
-
var ijkMode = -1;
|
|
205
|
-
var flip = false;
|
|
206
|
-
|
|
207
|
-
for (var axis = 0; axis < out.length; ++axis) {
|
|
208
|
-
var absValue = Math.abs(out[axis]);
|
|
209
|
-
|
|
210
|
-
if (absValue > maxAbs) {
|
|
211
|
-
maxAbs = absValue;
|
|
212
|
-
flip = out[axis] < 0.0;
|
|
213
|
-
ijkMode = axis;
|
|
214
|
-
}
|
|
215
|
-
}
|
|
191
|
+
var direction = publicAPI.getCurrentImage().getDirection();
|
|
192
|
+
var newMatrix = getSparseOrthogonalMatrix(direction); // With {foo}Vector filled with 0s except at {foo}Mode position where it is 1
|
|
193
|
+
// We have xyzVector = (+/-) newMatrix * ijkVector
|
|
216
194
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
195
|
+
var ijkMode = 0;
|
|
196
|
+
|
|
197
|
+
for (; ijkMode < 3; ++ijkMode) {
|
|
198
|
+
if (newMatrix[xyzMode + 3 * ijkMode] !== 0) {
|
|
199
|
+
break;
|
|
200
|
+
}
|
|
221
201
|
}
|
|
222
202
|
|
|
203
|
+
var flip = newMatrix[xyzMode + 3 * ijkMode] < 0;
|
|
223
204
|
model.closestIJKAxis = {
|
|
224
205
|
ijkMode: ijkMode,
|
|
225
206
|
flip: flip
|
|
@@ -2,7 +2,7 @@ import { mat4, vec3 } from 'gl-matrix';
|
|
|
2
2
|
import { newInstance as newInstance$1, get, setGet, getArray, setGetArray, moveToProtected, vtkDebugMacro as vtkDebugMacro$1, vtkErrorMacro as vtkErrorMacro$1, vtkWarningMacro as vtkWarningMacro$1 } from '../../macros.js';
|
|
3
3
|
import vtkCamera from './Camera.js';
|
|
4
4
|
import vtkLight from './Light.js';
|
|
5
|
-
import {
|
|
5
|
+
import { Q as areBoundsInitialized, u as uninitializeBounds, r as radiansFromDegrees, d as dot, F as createUninitializedBounds } from '../../Common/Core/Math/index.js';
|
|
6
6
|
import vtkViewport from './Viewport.js';
|
|
7
7
|
import vtkBoundingBox from '../../Common/DataModel/BoundingBox.js';
|
|
8
8
|
|
|
@@ -4,7 +4,7 @@ import Constants from './Texture/Constants.js';
|
|
|
4
4
|
import HalfFloat from '../../Common/Core/HalfFloat.js';
|
|
5
5
|
import { newInstance as newInstance$1, obj, set, setGet, get, moveToProtected, newTypedArray, vtkDebugMacro as vtkDebugMacro$1, vtkErrorMacro as vtkErrorMacro$1, vtkWarningMacro as vtkWarningMacro$1 } from '../../macros.js';
|
|
6
6
|
import vtkDataArray from '../../Common/Core/DataArray.js';
|
|
7
|
-
import {
|
|
7
|
+
import { R as isPowerOfTwo, N as nearestPowerOfTwo } from '../../Common/Core/Math/index.js';
|
|
8
8
|
import vtkViewNode from '../SceneGraph/ViewNode.js';
|
|
9
9
|
import { registerOverride } from './ViewNodeFactory.js';
|
|
10
10
|
|
|
@@ -4,7 +4,7 @@ import vtkAbstractWidgetFactory from '../Core/AbstractWidgetFactory.js';
|
|
|
4
4
|
import vtkPlanePointManipulator from '../Manipulators/PlaneManipulator.js';
|
|
5
5
|
import vtkPolyLineRepresentation from '../Representations/PolyLineRepresentation.js';
|
|
6
6
|
import vtkSphereHandleRepresentation from '../Representations/SphereHandleRepresentation.js';
|
|
7
|
-
import { s as subtract,
|
|
7
|
+
import { s as subtract, S as angleBetweenVectors } from '../../Common/Core/Math/index.js';
|
|
8
8
|
import widgetBehavior from './AngleWidget/behavior.js';
|
|
9
9
|
import generateState from './AngleWidget/state.js';
|
|
10
10
|
import { ViewTypes } from '../Core/WidgetManager/Constants.js';
|
|
@@ -3,7 +3,7 @@ import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
|
3
3
|
import macro from '../../../macros.js';
|
|
4
4
|
import vtkBoundingBox from '../../../Common/DataModel/BoundingBox.js';
|
|
5
5
|
import vtkLine from '../../../Common/DataModel/Line.js';
|
|
6
|
-
import { k as add, l as normalize, s as subtract, d as dot, j as cross, m as multiplyAccumulate, w as multiplyScalar,
|
|
6
|
+
import { k as add, l as normalize, s as subtract, d as dot, j as cross, m as multiplyAccumulate, w as multiplyScalar, T as signedAngleBetweenVectors } from '../../../Common/Core/Math/index.js';
|
|
7
7
|
import { getLineNames, getOtherLineName, updateState, boundPointOnPlane, getLinePlaneName, getLineInPlaneName, rotateVector } from './helpers.js';
|
|
8
8
|
import { InteractionMethodsName, ScrollingMethods, planeNameToViewType } from './Constants.js';
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ import vtkBoundingBox, { STATIC } from '../../../Common/DataModel/BoundingBox.js
|
|
|
3
3
|
import vtkCubeSource from '../../../Filters/Sources/CubeSource.js';
|
|
4
4
|
import vtkCutter from '../../../Filters/Core/Cutter.js';
|
|
5
5
|
import vtkPlane from '../../../Common/DataModel/Plane.js';
|
|
6
|
-
import { s as subtract, l as normalize, j as cross, w as multiplyScalar, m as multiplyAccumulate,
|
|
6
|
+
import { s as subtract, l as normalize, j as cross, w as multiplyScalar, m as multiplyAccumulate, T as signedAngleBetweenVectors } from '../../../Common/Core/Math/index.js';
|
|
7
7
|
import vtkMatrixBuilder from '../../../Common/Core/MatrixBuilder.js';
|
|
8
8
|
import { viewTypeToPlaneName, planeNameToViewType, planeNames } from './Constants.js';
|
|
9
9
|
|