sysml-validate 0.11.0 → 0.14.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +27 -27
- package/README.md +200 -200
- package/out/main.js +596 -141
- package/out/main.js.map +4 -4
- package/package.json +57 -57
- package/resources/sysml.dimension-table.json +1 -1
- package/resources/sysml.library/Domain Libraries/Analysis/.meta.json +9 -9
- package/resources/sysml.library/Domain Libraries/Analysis/.project.json +26 -26
- package/resources/sysml.library/Domain Libraries/Analysis/AnalysisTooling.sysml +33 -33
- package/resources/sysml.library/Domain Libraries/Analysis/SampledFunctions.sysml +118 -118
- package/resources/sysml.library/Domain Libraries/Analysis/StateSpaceRepresentation.sysml +143 -143
- package/resources/sysml.library/Domain Libraries/Analysis/TradeStudies.sysml +170 -170
- package/resources/sysml.library/Domain Libraries/Cause and Effect/.meta.json +7 -7
- package/resources/sysml.library/Domain Libraries/Cause and Effect/.project.json +22 -22
- package/resources/sysml.library/Domain Libraries/Cause and Effect/CausationConnections.sysml +82 -82
- package/resources/sysml.library/Domain Libraries/Cause and Effect/CauseAndEffect.sysml +81 -81
- package/resources/sysml.library/Domain Libraries/Geometry/.meta.json +7 -7
- package/resources/sysml.library/Domain Libraries/Geometry/.project.json +26 -26
- package/resources/sysml.library/Domain Libraries/Geometry/ShapeItems.sysml +898 -898
- package/resources/sysml.library/Domain Libraries/Geometry/SpatialItems.sysml +167 -167
- package/resources/sysml.library/Domain Libraries/Metadata/.meta.json +9 -9
- package/resources/sysml.library/Domain Libraries/Metadata/.project.json +18 -18
- package/resources/sysml.library/Domain Libraries/Metadata/ImageMetadata.sysml +77 -77
- package/resources/sysml.library/Domain Libraries/Metadata/ModelingMetadata.sysml +142 -142
- package/resources/sysml.library/Domain Libraries/Metadata/ParametersOfInterestMetadata.sysml +38 -38
- package/resources/sysml.library/Domain Libraries/Metadata/RiskMetadata.sysml +99 -99
- package/resources/sysml.library/Domain Libraries/Quantities and Units/.meta.json +28 -28
- package/resources/sysml.library/Domain Libraries/Quantities and Units/.project.json +22 -22
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQ.sysml +42 -42
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQAcoustics.sysml +439 -439
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQAtomicNuclear.sysml +2726 -2726
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQBase.sysml +206 -206
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQCharacteristicNumbers.sysml +1991 -1991
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQChemistryMolecular.sysml +1353 -1353
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQCondensedMatter.sysml +1223 -1223
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQElectromagnetism.sysml +2333 -2333
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQInformation.sysml +958 -958
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQLight.sysml +1537 -1537
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQMechanics.sysml +1564 -1564
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQSpaceTime.sysml +1169 -1169
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQThermodynamics.sysml +1256 -1256
- package/resources/sysml.library/Domain Libraries/Quantities and Units/MeasurementRefCalculations.sysml +30 -30
- package/resources/sysml.library/Domain Libraries/Quantities and Units/MeasurementReferences.sysml +526 -526
- package/resources/sysml.library/Domain Libraries/Quantities and Units/Quantities.sysml +107 -107
- package/resources/sysml.library/Domain Libraries/Quantities and Units/QuantityCalculations.sysml +70 -70
- package/resources/sysml.library/Domain Libraries/Quantities and Units/SI.sysml +378 -378
- package/resources/sysml.library/Domain Libraries/Quantities and Units/SIPrefixes.sysml +48 -48
- package/resources/sysml.library/Domain Libraries/Quantities and Units/TensorCalculations.sysml +49 -49
- package/resources/sysml.library/Domain Libraries/Quantities and Units/Time.sysml +274 -274
- package/resources/sysml.library/Domain Libraries/Quantities and Units/USCustomaryUnits.sysml +260 -260
- package/resources/sysml.library/Domain Libraries/Quantities and Units/VectorCalculations.sysml +62 -62
- package/resources/sysml.library/Domain Libraries/Requirement Derivation/.meta.json +7 -7
- package/resources/sysml.library/Domain Libraries/Requirement Derivation/.project.json +18 -18
- package/resources/sysml.library/Domain Libraries/Requirement Derivation/DerivationConnections.sysml +62 -62
- package/resources/sysml.library/Domain Libraries/Requirement Derivation/RequirementDerivation.sysml +38 -38
- package/resources/sysml.library/Kernel Libraries/Kernel Data Type Library/.meta.json +8 -8
- package/resources/sysml.library/Kernel Libraries/Kernel Data Type Library/.project.json +10 -10
- package/resources/sysml.library/Kernel Libraries/Kernel Data Type Library/Collections.kerml +176 -176
- package/resources/sysml.library/Kernel Libraries/Kernel Data Type Library/ScalarValues.kerml +23 -23
- package/resources/sysml.library/Kernel Libraries/Kernel Data Type Library/VectorValues.kerml +63 -63
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/.meta.json +22 -22
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/.project.json +14 -14
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/BaseFunctions.kerml +79 -79
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/BooleanFunctions.kerml +22 -22
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/CollectionFunctions.kerml +68 -68
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/ComplexFunctions.kerml +47 -47
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/ControlFunctions.kerml +116 -116
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/DataFunctions.kerml +42 -42
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/IntegerFunctions.kerml +43 -43
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/NaturalFunctions.kerml +27 -27
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/NumericalFunctions.kerml +42 -42
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/OccurrenceFunctions.kerml +153 -153
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/RationalFunctions.kerml +49 -49
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/RealFunctions.kerml +56 -56
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/ScalarFunctions.kerml +32 -32
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/SequenceFunctions.kerml +110 -110
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/StringFunctions.kerml +25 -25
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/TrigFunctions.kerml +34 -34
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/VectorFunctions.kerml +272 -272
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/.meta.json +21 -21
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/.project.json +14 -14
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Base.kerml +94 -94
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Clocks.kerml +155 -155
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/ControlPerformances.kerml +134 -134
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/FeatureReferencingPerformances.kerml +189 -189
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/KerML.kerml +483 -483
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Links.kerml +66 -66
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Metaobjects.kerml +57 -57
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Objects.kerml +212 -212
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Observation.kerml +160 -160
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Occurrences.kerml +992 -992
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Performances.kerml +292 -292
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/SpatialFrames.kerml +196 -196
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/StatePerformances.kerml +144 -144
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Transfers.kerml +280 -280
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/TransitionPerformances.kerml +65 -65
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Triggers.kerml +187 -187
- package/resources/sysml.library/LICENSE +276 -276
- package/resources/sysml.library/NOTICE.md +20 -20
- package/resources/sysml.library/Systems Library/Actions.sysml +556 -556
- package/resources/sysml.library/Systems Library/Allocations.sysml +28 -28
- package/resources/sysml.library/Systems Library/AnalysisCases.sysml +37 -37
- package/resources/sysml.library/Systems Library/Attributes.sysml +24 -24
- package/resources/sysml.library/Systems Library/Calculations.sysml +36 -36
- package/resources/sysml.library/Systems Library/Cases.sysml +70 -70
- package/resources/sysml.library/Systems Library/Connections.sysml +59 -59
- package/resources/sysml.library/Systems Library/Constraints.sysml +43 -43
- package/resources/sysml.library/Systems Library/Flows.sysml +125 -125
- package/resources/sysml.library/Systems Library/Interfaces.sysml +88 -88
- package/resources/sysml.library/Systems Library/Items.sysml +152 -152
- package/resources/sysml.library/Systems Library/Metadata.sysml +31 -31
- package/resources/sysml.library/Systems Library/Parts.sysml +80 -80
- package/resources/sysml.library/Systems Library/Ports.sysml +53 -53
- package/resources/sysml.library/Systems Library/Requirements.sysml +193 -193
- package/resources/sysml.library/Systems Library/StandardViewDefinitions.sysml +123 -123
- package/resources/sysml.library/Systems Library/States.sysml +102 -102
- package/resources/sysml.library/Systems Library/SysML.sysml +539 -539
- package/resources/sysml.library/Systems Library/UseCases.sysml +56 -56
- package/resources/sysml.library/Systems Library/VerificationCases.sysml +102 -102
- package/resources/sysml.library/Systems Library/Views.sysml +163 -163
- package/resources/sysml.library.index.json +1 -1
package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/SpatialFrames.kerml
CHANGED
|
@@ -1,197 +1,197 @@
|
|
|
1
|
-
standard library package SpatialFrames {
|
|
2
|
-
doc
|
|
3
|
-
/*
|
|
4
|
-
* This package models spatial frames of reference for quantifying the position of points
|
|
5
|
-
* in a three-dimensional space.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
private import Clocks::*;
|
|
9
|
-
private import ScalarValues::NumericalValue;
|
|
10
|
-
private import VectorValues::ThreeVectorValue;
|
|
11
|
-
private import VectorValues::CartesianThreeVectorValue;
|
|
12
|
-
private import VectorFunctions::isZeroVector;
|
|
13
|
-
private import Occurrences::Life;
|
|
14
|
-
private import Objects::Body;
|
|
15
|
-
private import Objects::Point;
|
|
16
|
-
private import ControlFunctions::forAll;
|
|
17
|
-
private import SequenceFunctions::includes;
|
|
18
|
-
|
|
19
|
-
private struct DefaultFrameLife[1] :> SpatialFrame, Life {
|
|
20
|
-
doc
|
|
21
|
-
/*
|
|
22
|
-
* DefaultFrameLife is the classifier of the singleton Life of the defaultFrame.
|
|
23
|
-
*/
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
feature defaultFrame : DefaultFrameLife[1] {
|
|
27
|
-
doc
|
|
28
|
-
/*
|
|
29
|
-
* defaultFrame is a fixed SpatialFrame used as a universal default.
|
|
30
|
-
*/
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
abstract struct SpatialFrame specializes Body {
|
|
34
|
-
doc
|
|
35
|
-
/*
|
|
36
|
-
* A SpatialFrame is a three-dimensional Body that provides a spatial extent that
|
|
37
|
-
* acts as a frame of reference for defining the physical position and displacement
|
|
38
|
-
* vectors of Points over time.
|
|
39
|
-
*/
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
abstract function PositionOf {
|
|
43
|
-
doc
|
|
44
|
-
/*
|
|
45
|
-
* The PositionOf a Point relative to a SpatialFrame, at a specific time relative to a given
|
|
46
|
-
* Clock, as a positionVector that is a ThreeVectorValue.
|
|
47
|
-
*/
|
|
48
|
-
|
|
49
|
-
in point : Point[1];
|
|
50
|
-
in time : NumericalValue[1];
|
|
51
|
-
in frame : SpatialFrame[1] default defaultFrame;
|
|
52
|
-
in clock : Clock[1] default frame.localClock;
|
|
53
|
-
return positionVector : ThreeVectorValue[1];
|
|
54
|
-
|
|
55
|
-
inv positionTimePrecondition {
|
|
56
|
-
doc
|
|
57
|
-
/*
|
|
58
|
-
* The given point must exist at the given time.
|
|
59
|
-
*/
|
|
60
|
-
|
|
61
|
-
TimeOf(point.startShot) <= time and
|
|
62
|
-
time <= TimeOf(point.endShot)
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
inv spacePositionConstraint {
|
|
66
|
-
doc
|
|
67
|
-
/*
|
|
68
|
-
* The result positionVector is equal to the PositionOf the Point spaceShot of the
|
|
69
|
-
* frame that encloses the given point, at the given time.
|
|
70
|
-
*/
|
|
71
|
-
|
|
72
|
-
(frame.spaceShots as Point)->forAll{in p : Point;
|
|
73
|
-
p.spaceTimeEnclosedOccurrences->includes(point) implies
|
|
74
|
-
positionVector == PositionOf(p, time, frame)
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
abstract function CurrentPositionOf {
|
|
80
|
-
doc
|
|
81
|
-
/*
|
|
82
|
-
* The CurrentPositionOf a Point relative to a SpatialFrame and a Clock is the PositionOf
|
|
83
|
-
* the Point relative to the SpatialFrame at the currentTime of the Clock.
|
|
84
|
-
*/
|
|
85
|
-
|
|
86
|
-
in point : Point[1];
|
|
87
|
-
in frame : SpatialFrame[1] default defaultFrame;
|
|
88
|
-
in clock : Clock[1] default frame.localClock;
|
|
89
|
-
return positionVector : ThreeVectorValue[1] =
|
|
90
|
-
PositionOf(point, clock.currentTime, frame, clock);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
function DisplacementOf {
|
|
94
|
-
doc
|
|
95
|
-
/*
|
|
96
|
-
* The DisplacementOf two Points relative to a SpatialFrame, at a specific time relative to a
|
|
97
|
-
* given Clock, is the displacementVector computed as the difference between the PositionOf the
|
|
98
|
-
* first Point and PositionOf the second Point, relative to that SpatialFrame, at that time.
|
|
99
|
-
*/
|
|
100
|
-
|
|
101
|
-
in point1 : Point[1];
|
|
102
|
-
in point2 : Point[1];
|
|
103
|
-
in time : NumericalValue;
|
|
104
|
-
in frame : SpatialFrame[1] default defaultFrame;
|
|
105
|
-
in clock : Clock[1] default frame.localClock;
|
|
106
|
-
return displacementVector : ThreeVectorValue[1] =
|
|
107
|
-
PositionOf(point2, time, frame, clock) - PositionOf(point1, time, frame, clock);
|
|
108
|
-
|
|
109
|
-
inv zeroDisplacementConstraint {
|
|
110
|
-
doc
|
|
111
|
-
/*
|
|
112
|
-
* If either point1 or point2 occurs within the other, then the displacementVector is
|
|
113
|
-
* the zero vector.
|
|
114
|
-
*/
|
|
115
|
-
|
|
116
|
-
(point1.spaceTimeEnclosedOccurrences->includes(point2) or
|
|
117
|
-
point2.spaceTimeEnclosedOccurrences->includes(point1)) implies
|
|
118
|
-
isZeroVector(displacementVector)
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
function CurrentDisplacementOf {
|
|
123
|
-
doc
|
|
124
|
-
/*
|
|
125
|
-
* The CurrentDisplacementOf two Points relative to a SpatialFrame and Clock is the DisplacementOf
|
|
126
|
-
* the Points relative to the SpatialFrame at the currentTime of the Clock.
|
|
127
|
-
*/
|
|
128
|
-
|
|
129
|
-
in point1 : Point[1];
|
|
130
|
-
in point2 : Point[1];
|
|
131
|
-
in frame : SpatialFrame[1] default defaultFrame;
|
|
132
|
-
in clock : Clock[1] default frame.localClock;
|
|
133
|
-
return displacementVector : ThreeVectorValue[1] =
|
|
134
|
-
DisplacementOf(point1, point2, clock.currentTime, frame, clock);
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
abstract struct CartesianSpatialFrame :> SpatialFrame {
|
|
138
|
-
doc
|
|
139
|
-
/*
|
|
140
|
-
* A CartesianSpatialFrame is a SpatialFrame relative to which all position and displacement
|
|
141
|
-
* vectors can be represented as CartesianThreeVectorValues.
|
|
142
|
-
*/
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
abstract function CartesianPositionOf :> PositionOf {
|
|
146
|
-
doc
|
|
147
|
-
/*
|
|
148
|
-
* The PositionOf a Point relative to a CartesianSpatialFrame is a CartesianThreeVectorValue.
|
|
149
|
-
*/
|
|
150
|
-
|
|
151
|
-
in point : Point[1];
|
|
152
|
-
in time : NumericalValue[1];
|
|
153
|
-
in frame : CartesianSpatialFrame[1];
|
|
154
|
-
in clock : Clock[1] default frame.localClock;
|
|
155
|
-
return positionVector : CartesianThreeVectorValue[1];
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
abstract function CartesianCurrentPositionOf :> CurrentPositionOf {
|
|
159
|
-
doc
|
|
160
|
-
/*
|
|
161
|
-
* The CurrentPositionOf a Point relative to a CartesianSpatialFrame is a CartesianThreeVectorValue.
|
|
162
|
-
*/
|
|
163
|
-
|
|
164
|
-
in point : Point[1];
|
|
165
|
-
in frame : CartesianSpatialFrame[1];
|
|
166
|
-
in clock : Clock[1] default frame.localClock;
|
|
167
|
-
return positionVector : CartesianThreeVectorValue[1];
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
function CartesianDisplacementOf :> DisplacementOf {
|
|
171
|
-
doc
|
|
172
|
-
/*
|
|
173
|
-
* The DisplacementOf two Points relative to a CartesianSpatialFrame is a CartesianThreeVectorValue.
|
|
174
|
-
*/
|
|
175
|
-
|
|
176
|
-
in point1 : Point[1];
|
|
177
|
-
in point2 : Point[1];
|
|
178
|
-
in time : NumericalValue[1];
|
|
179
|
-
in frame : CartesianSpatialFrame[1];
|
|
180
|
-
in clock : Clock[1] default frame.localClock;
|
|
181
|
-
return displacementVector : CartesianThreeVectorValue[1];
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
function CartesianCurrentDisplacementOf :> CurrentDisplacementOf {
|
|
185
|
-
doc
|
|
186
|
-
/*
|
|
187
|
-
* The CurrentDisplacementOf two Points relative to a CartesianSpatialFrame is a CartesianThreeVectorValue.
|
|
188
|
-
*/
|
|
189
|
-
|
|
190
|
-
in point1 : Point[1];
|
|
191
|
-
in point2 : Point[1];
|
|
192
|
-
in frame : CartesianSpatialFrame[1];
|
|
193
|
-
in clock : Clock[1] default frame.localClock;
|
|
194
|
-
return displacementVector : CartesianThreeVectorValue[1];
|
|
195
|
-
}
|
|
196
|
-
|
|
1
|
+
standard library package SpatialFrames {
|
|
2
|
+
doc
|
|
3
|
+
/*
|
|
4
|
+
* This package models spatial frames of reference for quantifying the position of points
|
|
5
|
+
* in a three-dimensional space.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
private import Clocks::*;
|
|
9
|
+
private import ScalarValues::NumericalValue;
|
|
10
|
+
private import VectorValues::ThreeVectorValue;
|
|
11
|
+
private import VectorValues::CartesianThreeVectorValue;
|
|
12
|
+
private import VectorFunctions::isZeroVector;
|
|
13
|
+
private import Occurrences::Life;
|
|
14
|
+
private import Objects::Body;
|
|
15
|
+
private import Objects::Point;
|
|
16
|
+
private import ControlFunctions::forAll;
|
|
17
|
+
private import SequenceFunctions::includes;
|
|
18
|
+
|
|
19
|
+
private struct DefaultFrameLife[1] :> SpatialFrame, Life {
|
|
20
|
+
doc
|
|
21
|
+
/*
|
|
22
|
+
* DefaultFrameLife is the classifier of the singleton Life of the defaultFrame.
|
|
23
|
+
*/
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
feature defaultFrame : DefaultFrameLife[1] {
|
|
27
|
+
doc
|
|
28
|
+
/*
|
|
29
|
+
* defaultFrame is a fixed SpatialFrame used as a universal default.
|
|
30
|
+
*/
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
abstract struct SpatialFrame specializes Body {
|
|
34
|
+
doc
|
|
35
|
+
/*
|
|
36
|
+
* A SpatialFrame is a three-dimensional Body that provides a spatial extent that
|
|
37
|
+
* acts as a frame of reference for defining the physical position and displacement
|
|
38
|
+
* vectors of Points over time.
|
|
39
|
+
*/
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
abstract function PositionOf {
|
|
43
|
+
doc
|
|
44
|
+
/*
|
|
45
|
+
* The PositionOf a Point relative to a SpatialFrame, at a specific time relative to a given
|
|
46
|
+
* Clock, as a positionVector that is a ThreeVectorValue.
|
|
47
|
+
*/
|
|
48
|
+
|
|
49
|
+
in point : Point[1];
|
|
50
|
+
in time : NumericalValue[1];
|
|
51
|
+
in frame : SpatialFrame[1] default defaultFrame;
|
|
52
|
+
in clock : Clock[1] default frame.localClock;
|
|
53
|
+
return positionVector : ThreeVectorValue[1];
|
|
54
|
+
|
|
55
|
+
inv positionTimePrecondition {
|
|
56
|
+
doc
|
|
57
|
+
/*
|
|
58
|
+
* The given point must exist at the given time.
|
|
59
|
+
*/
|
|
60
|
+
|
|
61
|
+
TimeOf(point.startShot) <= time and
|
|
62
|
+
time <= TimeOf(point.endShot)
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
inv spacePositionConstraint {
|
|
66
|
+
doc
|
|
67
|
+
/*
|
|
68
|
+
* The result positionVector is equal to the PositionOf the Point spaceShot of the
|
|
69
|
+
* frame that encloses the given point, at the given time.
|
|
70
|
+
*/
|
|
71
|
+
|
|
72
|
+
(frame.spaceShots as Point)->forAll{in p : Point;
|
|
73
|
+
p.spaceTimeEnclosedOccurrences->includes(point) implies
|
|
74
|
+
positionVector == PositionOf(p, time, frame)
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
abstract function CurrentPositionOf {
|
|
80
|
+
doc
|
|
81
|
+
/*
|
|
82
|
+
* The CurrentPositionOf a Point relative to a SpatialFrame and a Clock is the PositionOf
|
|
83
|
+
* the Point relative to the SpatialFrame at the currentTime of the Clock.
|
|
84
|
+
*/
|
|
85
|
+
|
|
86
|
+
in point : Point[1];
|
|
87
|
+
in frame : SpatialFrame[1] default defaultFrame;
|
|
88
|
+
in clock : Clock[1] default frame.localClock;
|
|
89
|
+
return positionVector : ThreeVectorValue[1] =
|
|
90
|
+
PositionOf(point, clock.currentTime, frame, clock);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
function DisplacementOf {
|
|
94
|
+
doc
|
|
95
|
+
/*
|
|
96
|
+
* The DisplacementOf two Points relative to a SpatialFrame, at a specific time relative to a
|
|
97
|
+
* given Clock, is the displacementVector computed as the difference between the PositionOf the
|
|
98
|
+
* first Point and PositionOf the second Point, relative to that SpatialFrame, at that time.
|
|
99
|
+
*/
|
|
100
|
+
|
|
101
|
+
in point1 : Point[1];
|
|
102
|
+
in point2 : Point[1];
|
|
103
|
+
in time : NumericalValue;
|
|
104
|
+
in frame : SpatialFrame[1] default defaultFrame;
|
|
105
|
+
in clock : Clock[1] default frame.localClock;
|
|
106
|
+
return displacementVector : ThreeVectorValue[1] =
|
|
107
|
+
PositionOf(point2, time, frame, clock) - PositionOf(point1, time, frame, clock);
|
|
108
|
+
|
|
109
|
+
inv zeroDisplacementConstraint {
|
|
110
|
+
doc
|
|
111
|
+
/*
|
|
112
|
+
* If either point1 or point2 occurs within the other, then the displacementVector is
|
|
113
|
+
* the zero vector.
|
|
114
|
+
*/
|
|
115
|
+
|
|
116
|
+
(point1.spaceTimeEnclosedOccurrences->includes(point2) or
|
|
117
|
+
point2.spaceTimeEnclosedOccurrences->includes(point1)) implies
|
|
118
|
+
isZeroVector(displacementVector)
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
function CurrentDisplacementOf {
|
|
123
|
+
doc
|
|
124
|
+
/*
|
|
125
|
+
* The CurrentDisplacementOf two Points relative to a SpatialFrame and Clock is the DisplacementOf
|
|
126
|
+
* the Points relative to the SpatialFrame at the currentTime of the Clock.
|
|
127
|
+
*/
|
|
128
|
+
|
|
129
|
+
in point1 : Point[1];
|
|
130
|
+
in point2 : Point[1];
|
|
131
|
+
in frame : SpatialFrame[1] default defaultFrame;
|
|
132
|
+
in clock : Clock[1] default frame.localClock;
|
|
133
|
+
return displacementVector : ThreeVectorValue[1] =
|
|
134
|
+
DisplacementOf(point1, point2, clock.currentTime, frame, clock);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
abstract struct CartesianSpatialFrame :> SpatialFrame {
|
|
138
|
+
doc
|
|
139
|
+
/*
|
|
140
|
+
* A CartesianSpatialFrame is a SpatialFrame relative to which all position and displacement
|
|
141
|
+
* vectors can be represented as CartesianThreeVectorValues.
|
|
142
|
+
*/
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
abstract function CartesianPositionOf :> PositionOf {
|
|
146
|
+
doc
|
|
147
|
+
/*
|
|
148
|
+
* The PositionOf a Point relative to a CartesianSpatialFrame is a CartesianThreeVectorValue.
|
|
149
|
+
*/
|
|
150
|
+
|
|
151
|
+
in point : Point[1];
|
|
152
|
+
in time : NumericalValue[1];
|
|
153
|
+
in frame : CartesianSpatialFrame[1];
|
|
154
|
+
in clock : Clock[1] default frame.localClock;
|
|
155
|
+
return positionVector : CartesianThreeVectorValue[1];
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
abstract function CartesianCurrentPositionOf :> CurrentPositionOf {
|
|
159
|
+
doc
|
|
160
|
+
/*
|
|
161
|
+
* The CurrentPositionOf a Point relative to a CartesianSpatialFrame is a CartesianThreeVectorValue.
|
|
162
|
+
*/
|
|
163
|
+
|
|
164
|
+
in point : Point[1];
|
|
165
|
+
in frame : CartesianSpatialFrame[1];
|
|
166
|
+
in clock : Clock[1] default frame.localClock;
|
|
167
|
+
return positionVector : CartesianThreeVectorValue[1];
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
function CartesianDisplacementOf :> DisplacementOf {
|
|
171
|
+
doc
|
|
172
|
+
/*
|
|
173
|
+
* The DisplacementOf two Points relative to a CartesianSpatialFrame is a CartesianThreeVectorValue.
|
|
174
|
+
*/
|
|
175
|
+
|
|
176
|
+
in point1 : Point[1];
|
|
177
|
+
in point2 : Point[1];
|
|
178
|
+
in time : NumericalValue[1];
|
|
179
|
+
in frame : CartesianSpatialFrame[1];
|
|
180
|
+
in clock : Clock[1] default frame.localClock;
|
|
181
|
+
return displacementVector : CartesianThreeVectorValue[1];
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
function CartesianCurrentDisplacementOf :> CurrentDisplacementOf {
|
|
185
|
+
doc
|
|
186
|
+
/*
|
|
187
|
+
* The CurrentDisplacementOf two Points relative to a CartesianSpatialFrame is a CartesianThreeVectorValue.
|
|
188
|
+
*/
|
|
189
|
+
|
|
190
|
+
in point1 : Point[1];
|
|
191
|
+
in point2 : Point[1];
|
|
192
|
+
in frame : CartesianSpatialFrame[1];
|
|
193
|
+
in clock : Clock[1] default frame.localClock;
|
|
194
|
+
return displacementVector : CartesianThreeVectorValue[1];
|
|
195
|
+
}
|
|
196
|
+
|
|
197
197
|
}
|