ad_physics
PhysicsOperation.hpp
Go to the documentation of this file.
1 // ----------------- BEGIN LICENSE BLOCK ---------------------------------
2 //
3 // Copyright (C) 2018-2021 Intel Corporation
4 //
5 // SPDX-License-Identifier: MIT
6 //
7 // ----------------- END LICENSE BLOCK -----------------------------------
8 
13 #pragma once
14 
15 #include "ad/physics/Types.hpp"
16 
29 {
30  a.ensureValid();
31  t.ensureValid();
32  ad::physics::Speed const v(static_cast<double>(a) * static_cast<double>(t));
33  v.ensureValid();
34  return v;
35 }
36 
49 {
50  a.ensureValid();
51  t2.ensureValid();
52  ad::physics::Distance const s(static_cast<double>(a) * static_cast<double>(t2));
53  s.ensureValid();
54  return s;
55 }
56 
69 {
70  a.ensureValid();
71  s.ensureValid();
72  ad::physics::SpeedSquared const v2(static_cast<double>(a) * static_cast<double>(s));
73  v2.ensureValid();
74  return v2;
75 }
76 
89 {
90  return operator*(a, t);
91 }
92 
105 {
106  v.ensureValid();
107  t.ensureValid();
108  ad::physics::Distance const s(static_cast<double>(v) * static_cast<double>(t));
109  s.ensureValid();
110  return s;
111 }
112 
125 {
126  return operator*(v, t);
127 }
128 
141 {
142  s.ensureValid();
143  v.ensureValidNonZero();
144  ad::physics::Duration const t(static_cast<double>(s) / static_cast<double>(v));
145  t.ensureValid();
146  return t;
147 }
148 
161 {
162  v.ensureValid();
163  a.ensureValidNonZero();
164  ad::physics::Duration const t(static_cast<double>(v) / static_cast<double>(a));
165  t.ensureValid();
166  return t;
167 }
168 
181 {
182  v.ensureValid();
183  t.ensureValidNonZero();
184  ad::physics::Acceleration const a(static_cast<double>(v) / static_cast<double>(t));
185  a.ensureValid();
186  return a;
187 }
188 
201 {
202  v2.ensureValid();
203  a.ensureValidNonZero();
204  ad::physics::Distance const t(static_cast<double>(v2) / static_cast<double>(a));
205  t.ensureValid();
206  return t;
207 }
208 
221 {
222  s.ensureValid();
223  a.ensureValidNonZero();
224  ad::physics::DurationSquared const t2(static_cast<double>(s) / static_cast<double>(a));
225  t2.ensureValid();
226  return t2;
227 }
operator*
ad::physics::Speed operator*(ad::physics::Acceleration const &a, ad::physics::Duration const &t)
Arithmetic physics operation v = a * t.
Definition: PhysicsOperation.hpp:28
ad::physics::Duration::ensureValidNonZero
void ensureValidNonZero() const
ensure that the Duration is valid and non zero
Definition: Duration.hpp:433
ad::physics::Distance
DataType Distance.
Definition: Distance.hpp:67
ad::physics::Speed
DataType Speed.
Definition: Speed.hpp:68
ad::physics::Distance::ensureValid
void ensureValid() const
ensure that the Distance is valid
Definition: Distance.hpp:416
ad::physics::Duration::ensureValid
void ensureValid() const
ensure that the Duration is valid
Definition: Duration.hpp:416
ad::physics::Speed::ensureValid
void ensureValid() const
ensure that the Speed is valid
Definition: Speed.hpp:416
ad::physics::DurationSquared
DataType DurationSquared.
Definition: DurationSquared.hpp:67
ad::physics::Acceleration::ensureValidNonZero
void ensureValidNonZero() const
ensure that the Acceleration is valid and non zero
Definition: Acceleration.hpp:412
operator/
ad::physics::Duration operator/(ad::physics::Distance const &s, ad::physics::Speed const &v)
Arithmetic physics operation t = s / v.
Definition: PhysicsOperation.hpp:140
ad::physics::SpeedSquared::ensureValid
void ensureValid() const
ensure that the SpeedSquared is valid
Definition: SpeedSquared.hpp:403
ad::physics::Acceleration
DataType Acceleration.
Definition: Acceleration.hpp:59
Types.hpp
ad::physics::SpeedSquared
DataType SpeedSquared.
Definition: SpeedSquared.hpp:67
ad::physics::Duration
DataType Duration.
Definition: Duration.hpp:67
ad::physics::Speed::ensureValidNonZero
void ensureValidNonZero() const
ensure that the Speed is valid and non zero
Definition: Speed.hpp:433
ad::physics::Acceleration::ensureValid
void ensureValid() const
ensure that the Acceleration is valid
Definition: Acceleration.hpp:395
ad::physics::DurationSquared::ensureValid
void ensureValid() const
ensure that the DurationSquared is valid
Definition: DurationSquared.hpp:403