The namespace for all the classes representing objects that can be added to the scene. Scene objects include optical elements (e.g. mirrors, lenses), detectors, decorations (e.g. rulers, text labels), and special objects (e.g. handles, cropboxes).
Each class represents a type of objects, and defines the rendering of the object, the options in the object bar when selected, how the mouse interacts with the object, and how the object interacts with light rays. The base class for all scene objects is BaseSceneObj
, which provides common properties and methods for all scene objects. Child base classes are used for common optical interactions: BaseFilter
(for mirrors and blockes), BaseGlass
, and BaseGrinGlass
.
Mixins are used for common user interactions based on shapes: LineObjMixin
and CircleObjMixin
.
The directory structure in src/core/sceneObjs
is organized according to the toolbars in the app, which is not always the same as the class inheritance structure. For example, IdealLens
is categorized under "Glass" in the app, but is not a subclass of BaseGlass
.
In the Ray Optics Simulator web app, a single instance of Scene
is used. The scene objects created by the users are stored in the objs
property of that instance, each a instance of a class defined in this namespace.
The classes can also be used by other projects, including those running in a standalone environment (e.g. Node.js).
- Source:
Classes
- AngleSource
- Aperture
- ArcMirror
- Beam
- BeamSplitter
- Blocker
- CircleBlocker
- CircleGlass
- CircleGrinGlass
- ConcaveDiffractionGrating
- CropBox
- CustomGlass
- CustomMirror
- Detector
- DiffractionGrating
- Drawing
- Glass
- GrinGlass
- Handle
- IdealLens
- IdealMirror
- LineArrow
- Mirror
- ModuleObj
- ParabolicMirror
- PlaneGlass
- PointSource
- Protractor
- Ruler
- SingleRay
- SphericalLens
- TextLabel