17#ifndef DAISI_UTILS_STRUCTURE_HELPERS_H_
18#define DAISI_UTILS_STRUCTURE_HELPERS_H_
20#include <ns3/vector.h>
22#include "solanet/serializer/serialize.h"
24template <
class Archive>
inline void serialize(Archive &archive, ns3::Vector2D &m) {
28template <
class Archive>
inline void serialize(Archive &archive, ns3::Vector3D &m) {
32inline ns3::Vector2D operator/(
const ns3::Vector2D &vec,
double d) {
33 return {vec.x / d, vec.y / d};
36inline ns3::Vector2D operator*(
const ns3::Vector2D &vec,
double d) {
37 return {vec.x * d, vec.y * d};
40inline ns3::Vector2D operator*(
double d,
const ns3::Vector2D &vec) {
return vec * d; }
42inline ns3::Vector2D operator-=(ns3::Vector2D &vec1,
const ns3::Vector2D &vec2) {
43 vec1.x = vec1.x - vec2.x;
44 vec1.y = vec1.y - vec2.y;
48inline ns3::Vector2D operator+=(ns3::Vector2D &vec1,
const ns3::Vector2D &vec2) {
49 vec1.x = vec1.x + vec2.x;
50 vec1.y = vec1.y + vec2.y;
54inline ns3::Vector2D operator-(
const ns3::Vector2D &vec) {
return {-vec.x, -vec.y}; }
56namespace daisi::util {
58using Position = ns3::Vector2D;
59using Velocity = ns3::Vector2D;
60using Acceleration = ns3::Vector2D;
61using Dimensions = ns3::Vector3D;
62using Duration = double;
63using Distance = double;
66 Pose(Position position_m,
double orientation_rad)
67 : position(position_m), orientation(orientation_rad) {}
68 explicit Pose(Position position_m) : position(position_m) {}
71 double orientation = 0.0;
72 SERIALIZE(position, orientation);
Definition structure_helpers.h:64