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 | import { Types } from '@cornerstonejs/core'; /** * Returns the orientation of the vector in the patient coordinate system. * @public * * @param vector - Input array * @returns The orientation in the patient coordinate system. */ export default function getOrientationStringLPS(vector: Types.Point3): string { // Thanks to David Clunie // https://sites.google.com/site/dicomnotes/ let orientation = ''; const orientationX = vector[0] < 0 ? 'R' : 'L'; const orientationY = vector[1] < 0 ? 'A' : 'P'; const orientationZ = vector[2] < 0 ? 'F' : 'H'; // Should probably make this a function vector3.abs const abs = [Math.abs(vector[0]), Math.abs(vector[1]), Math.abs(vector[2])]; const MIN = 0.0001; for (let i = 0; i < 3; i++) { if (abs[0] > MIN && abs[0] > abs[1] && abs[0] > abs[2]) { orientation += orientationX; abs[0] = 0; } else if (abs[1] > MIN && abs[1] > abs[0] && abs[1] > abs[2]) { orientation += orientationY; abs[1] = 0; } else if (abs[2] > MIN && abs[2] > abs[0] && abs[2] > abs[1]) { orientation += orientationZ; abs[2] = 0; } else if (abs[0] > MIN && abs[1] > MIN && abs[0] === abs[1]) { orientation += orientationX + orientationY; abs[0] = 0; abs[1] = 0; } else if (abs[0] > MIN && abs[2] > MIN && abs[0] === abs[2]) { orientation += orientationX + orientationZ; abs[0] = 0; abs[2] = 0; } else if (abs[1] > MIN && abs[2] > MIN && abs[1] === abs[2]) { orientation += orientationY + orientationZ; abs[1] = 0; abs[2] = 0; } else { break; } } return orientation; } |