Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | import * as vtkMath from 'vtk.js/Sources/Common/Core/Math/'; export function calculateTextPosition(model) { const vector = [0, 0, 0]; const handle1WorldPos = model.widgetState.getHandle1().getOrigin(); const handle2WorldPos = model.widgetState.getHandle2().getOrigin(); if (!handle1WorldPos || !handle2WorldPos) { return null; } let statePositionOnLine = model.widgetState .getPositionOnLine() .getPosOnLine(); statePositionOnLine = 1 - statePositionOnLine; vtkMath.subtract(handle1WorldPos, handle2WorldPos, vector); vtkMath.multiplyScalar(vector, statePositionOnLine); vtkMath.add(vector, handle2WorldPos, vector); return vector; } export function updateTextPosition(model) { const SVGTextState = model.widgetState.getText(); SVGTextState.setOrigin(calculateTextPosition(model)); } export function isHandlePlaced(handleIndex, widgetState) { if (handleIndex === 2) { return widgetState.getMoveHandle().getOrigin() != null; } const handle1Origin = widgetState.getHandle1().getOrigin(); if (handleIndex === 0) { return handle1Origin != null; } const handle2Origin = widgetState.getHandle2().getOrigin(); return ( handle1Origin && handle2Origin && !vtkMath.areEquals(handle1Origin, handle2Origin, 0) ); } /** * Returns the world position of line extremities (placed or not). * Returns null if no extremity exist. * @param {number} handleIndex 0 or 1 * @param {object} widgetState state of line widget * @param {bool} moveHandle Get move handle position if moveHandle is true and handle is not placed */ export function getPoint(handleIndex, widgetState, moveHandle = true) { const handle = moveHandle && !isHandlePlaced(handleIndex, widgetState) ? widgetState.getMoveHandle() : widgetState[`getHandle${handleIndex + 1}`](); const origin = handle.getOrigin(); return origin || null; } /** * Returns the number of handle placed on the scene by checking * handle positions. Returns 2 when the user is still * placing 2nd handle * */ export function getNumberOfPlacedHandles(widgetState) { let numberOfPlacedHandles = 0; if (isHandlePlaced(0, widgetState)) { numberOfPlacedHandles = 1 + isHandlePlaced(1, widgetState); } return numberOfPlacedHandles; } |