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 | 1302x 5208x 5208x 1302x 1302x 1302x 1302x 1302x 1302x 1302x | import type { Types } from '@cornerstonejs/core';
type Ellipse = {
center: Types.Point3;
xRadius: number;
yRadius: number;
zRadius: number;
};
/**
* Given an ellipse and a point, return true if the point is inside the ellipse
* @param ellipse - The ellipse object to check against.
* @param pointLPS - The point in LPS space to test.
* @returns A boolean value.
*/
export default function pointInEllipse(
ellipse: Ellipse,
pointLPS: Types.Point3
): boolean {
const { center: circleCenterWorld, xRadius, yRadius, zRadius } = ellipse;
const [x, y, z] = pointLPS;
const [x0, y0, z0] = circleCenterWorld;
let inside = 0;
Eif (xRadius !== 0) {
inside += ((x - x0) * (x - x0)) / (xRadius * xRadius);
}
Eif (yRadius !== 0) {
inside += ((y - y0) * (y - y0)) / (yRadius * yRadius);
}
Iif (zRadius !== 0) {
inside += ((z - z0) * (z - z0)) / (zRadius * zRadius);
}
return inside <= 1;
}
|