import Vector from '../../../math/Vector'; import Ray from '../../../utils/Ray'; import Steerable from '../../Steerable'; import RayConfiguration from '../RayConfiguration'; /** * {@code RayConfigurationBase} is the base class for concrete ray configurations having a fixed number of rays. * * @param Type of vector, either 2D or 3D, implementing the {@link Vector} interface * * @author davebaol */ declare abstract class RayConfigurationBase> implements RayConfiguration { protected owner: Steerable; protected rays: Ray[]; /** * Creates a {@code RayConfigurationBase} for the given owner and the specified number of rays. * @param owner the owner of this configuration * @param numRays the number of rays used by this configuration */ constructor(owner: Steerable, numRays: number); /** Returns the owner of this configuration. */ getOwner(): Steerable; /** Sets the owner of this configuration. */ setOwner(owner: Steerable): void; /** Returns the rays of this configuration. */ getRays(): Ray[]; /** Sets the rays of this configuration. */ setRays(rays: Ray[]): void; abstract updateRays(): Ray[]; } export default RayConfigurationBase;