import type { HyperplaneSlice4 } from '../projection/slice.js'; import type { Point3 } from './sample.js'; import type { FieldEvaluation4, ImplicitField4, Vec4f64 } from './types.js'; export interface TraceFieldSliceRay3Options { /** Half-width of the axis-aligned trace box in slice coordinates. Default 1.65. */ extent?: number; /** Maximum conservative-advancement steps. Default 112. */ maxSteps?: number; /** Surface hit threshold in slice coordinates. Default 0.0015. */ surfaceEpsilon?: number; /** Finite-difference step for the slice-space normal. Default 0.004. */ normalEpsilon?: number; /** Defaults to the field's declared distance-estimator recommendation. */ stepSafety?: number; } export interface FieldSliceRayHit3 { readonly hit: true; readonly position: Point3; readonly point4: Vec4f64; /** Unit slice-space normal, oriented against the incoming ray. */ readonly normal: Point3; readonly distance: number; readonly steps: number; /** True when the first in-box evaluation was already classified inside. */ readonly startedInside: boolean; readonly record: Record; } export interface FieldSliceRayMiss3 { readonly hit: false; readonly reason: 'box' | 'bounds' | 'steps'; readonly steps: number; } export type FieldSliceRayResult3 = FieldSliceRayHit3 | FieldSliceRayMiss3; /** * Deterministic CPU reference for the same affine-slice sphere tracing used by * `RaymarchedField3D`. It supports headless inspection and renderer picking. * * The distance channel is assumed conservative under `stepSafety`. Fields * without a declared estimator must provide that option explicitly. */ export declare function traceFieldSliceRay3(field: ImplicitField4, slice: HyperplaneSlice4, originValue: ArrayLike, directionValue: ArrayLike, options?: TraceFieldSliceRay3Options): FieldSliceRayResult3; //# sourceMappingURL=ray.d.ts.map