RoboidControl-cpp/Placement.h

57 lines
2.0 KiB
C++

#pragma once
#include "ControlledMotor.h"
#include "DistanceSensor.h"
#include "Motor.h"
#include "Thing.h"
#include "Vector2.h"
#include "Vector3.h"
namespace Passer {
namespace RoboidControl {
/// @brief A plament is used to specify where a Thing is placed on the Roboid.
class Placement {
public:
/// @brief Default constructor with a zero placement
Placement();
/// @brief Placement of a Thing on the Roboid
/// @param thing The Thing which is placed
/// @param position The position of the Thing in carthesian coordinated
/// @param horizontalDirection The horizontal direction angle of the Thing
/// @param verticalAngle The vertical direction angle of the Thing
Placement(Thing* thing,
Vector3 position = Vector3::zero,
float horizontalDirection = 0.0F,
float verticalAngle = 0.0F);
/// @brief Placement of a Thing on the roboit without position
/// @param thing The Thing which is place
/// @param horizontalDirection The horizontal direction angle of the Thing
/// @param verticalAngle The vertical direction angle of the Thing
Placement(Thing* thing,
float horizontalDirection,
float verticalAnlge = 0.0F);
/// @brief The parent placement in the Roboid hierarchy
/// @remark Reserved for future use
Placement* parent = nullptr;
/// @brief An array of children of this placement in the Roboid hierarchy
/// @remark Reserved for future use
Placement** children = nullptr;
/// @brief The number of children of this placemet in the Roboid hierarchy
/// @remark Reserved for future use
unsigned int childCount = 0;
/// @brief The Thing which is placed
Thing* thing;
/// @brief The position of the Thing in carthesian coordinates
Vector3 position;
/// @brief The angle or direction of the Thing in the horizontal plane
float horizontalDirection;
/// @brief The angle or direction of the Thing in the vertical plane
float verticalDirection;
};
} // namespace RoboidControl
} // namespace Passer
using namespace Passer::RoboidControl;