Tags and keywords
A "staging" BDD for defining some flows and ports for a simple port-based image flow model for a KeplerianRefractor
with an eyepiece:
This time, instead of modelling the flow of light, the flow of a step-wise transformed OpticalImage
is represented. The main aim of this trail is be able to model reflectors, however most reflectors use a secondary mirror in addition to a primary mirror, not just a simple single objective. Before extending OpticalTelescope
to include such reflectors, a simpler light flow model of a KeplerianRefractor
(which has a single primary lens as objective) is demonstrated.
Care has to be taken here not to build inflexible assumptions into the abstract OpticalTelescope
. For example, a Gregorian reflector has the focal plane before a secondary, whereas the secondary of a Cassegrain reflector intercepts the image being focussed by the primary. The final viewed image of a Gregorian reflector is not inverted, whereas the final viewed image of a Keplerian refractor is. Therefore, to capture the transformation of an OpticalImage
through an optical system, it must be specialised with appropriately redefined properties, and the optical elements of the system need ports with dedicated FlowProperty types.
The block KeplerianObjectiveImage
is a specialisation of OpticalImage
with isReal=true
and isInverted=true
. The block KeplerianViewedImage
is a specialisation of OpticalImage
with isVirtual=true
, isInverted=true
, and isMagnified=true
, corresponding with these earlier snippets:
There are specialised blocks KeplerianObjective
and KeplerianEyepiece
with specialised Ports for handling the above image flows. The specialised KeplerianRefractor
has redefined objective
to be of type KeplerianObjective
and eyepiece
to be of type KeplerianEyepiece
(and it has also redefined them as 'composite' part properties, not just reference properties, because it is assumed there are no intermediate assemblies).
The specialised KeplerianRefractor
also has a redefined image
of type KeplerianObjectiveImage
, and a redefined viewedImage
of type KeplerianViewedImage
. These can each be used as the SysML 'itemProperty' on Connectors with ItemFlows.
The context block KeplerianRefractorContext
is much as was used for the simple light flow model with a :DistantObject
, and an :Eye
, but has a :KeplerianRefractor
, as well as properties objectImage
of type OpticalImage
and viewImage
of type KeplerianViewedImage
for use as the 'itemProperty' of SysML ItemFlows on Connectors.
Block OpticalTelescope
has now also been given an additional property objectImage
of type OpticalImage
, which is inherited by KeplerianRefractor
, and may likewise be used as the 'itemProperty' of a SysML ItemFlow on a Connector.
As per Webel Best Practice for BDDs: