MeshLib C++ Docs
Loading...
Searching...
No Matches
MRCircleObject.h
Go to the documentation of this file.
1#pragma once
4#include "MRMeshFwd.h"
5#include "MRFeatureObject.h"
6#include "MRVisualObject.h"
7#include "MRPlane3.h"
8
9namespace MR
10{
13
16class MRMESH_CLASS CircleObject : public AddVisualProperties<FeatureObject, DimensionsVisualizePropertyType::diameter>
17{
18public:
22 MRMESH_API CircleObject( const std::vector<Vector3f>& pointsToApprox );
23
24 CircleObject( CircleObject&& ) noexcept = default;
25 CircleObject& operator = ( CircleObject&& ) noexcept = default;
26
27 constexpr static const char* TypeName() noexcept { return "CircleObject"; }
28 virtual const char* typeName() const override { return TypeName(); }
29
30 constexpr static const char* ClassName() noexcept { return "Circle"; }
31 virtual std::string className() const override { return ClassName(); }
32
33 constexpr static const char* ClassNameInPlural() noexcept { return "Circles"; }
34 virtual std::string classNameInPlural() const override { return ClassNameInPlural(); }
35
39
40 MRMESH_API virtual std::shared_ptr<Object> clone() const override;
41 MRMESH_API virtual std::shared_ptr<Object> shallowClone() const override;
42
44 [[nodiscard]] MRMESH_API float getRadius( ViewportId id = {} ) const;
46 [[nodiscard]] MRMESH_API Vector3f getCenter( ViewportId id = {} ) const;
48 [[nodiscard]] MRMESH_API Vector3f getNormal( ViewportId id = {} ) const;
50 MRMESH_API void setRadius( float radius, ViewportId id = {} );
52 MRMESH_API void setCenter( const Vector3f& center, ViewportId id = {} );
54 MRMESH_API void setNormal( const Vector3f& normal, ViewportId id = {} );
55
56 [[nodiscard]] MRMESH_API FeatureObjectProjectPointResult projectPoint( const Vector3f& point, ViewportId id = {} ) const override;
57
58 [[nodiscard]] MRMESH_API virtual const std::vector<FeatureObjectSharedProperty>& getAllSharedProperties() const override;
59
60protected:
61 CircleObject( const CircleObject& other ) = default;
62
64 MRMESH_API virtual void swapBase_( Object& other ) override;
65
66 MRMESH_API virtual void serializeFields_( Json::Value& root ) const override;
67
68 virtual Expected<std::future<Expected<void>>> serializeModel_( const std::filesystem::path& ) const override
69 {
70 return {};
71 }
72
73 virtual Expected<void> deserializeModel_( const std::filesystem::path&, ProgressCallback ) override
74 {
75 return {};
76 }
77
78 MRMESH_API void setupRenderObject_() const override;
79};
80
81}
#define MRMESH_API
Definition MRMesh/MRMeshFwd.h:80
#define MRMESH_CLASS
Definition MRMesh/MRMeshFwd.h:84
Definition MRAddVisualPropertiesMixin.h:14
Definition MRCircleObject.h:17
MRMESH_API FeatureObjectProjectPointResult projectPoint(const Vector3f &point, ViewportId id={}) const override
virtual Expected< std::future< Expected< void > > > serializeModel_(const std::filesystem::path &) const override
Definition MRCircleObject.h:68
virtual MRMESH_API std::shared_ptr< Object > shallowClone() const override
virtual MRMESH_API std::shared_ptr< Object > clone() const override
virtual Expected< void > deserializeModel_(const std::filesystem::path &, ProgressCallback) override
Reads model from file.
Definition MRCircleObject.h:73
virtual MRMESH_API void serializeFields_(Json::Value &root) const override
MRMESH_API void setupRenderObject_() const override
MRMESH_API void setCenter(const Vector3f &center, ViewportId id={})
updates xf to fit given center
static constexpr const char * ClassNameInPlural() noexcept
Definition MRCircleObject.h:33
static constexpr const char * ClassName() noexcept
Definition MRCircleObject.h:30
virtual MRMESH_API void swapBase_(Object &other) override
swaps this object with other
MRMESH_API float getRadius(ViewportId id={}) const
calculates radius from xf
virtual const char * typeName() const override
Definition MRCircleObject.h:28
MRMESH_API Vector3f getNormal(ViewportId id={}) const
calculates normal from xf
MRMESH_API Vector3f getCenter(ViewportId id={}) const
calculates center from xf
CircleObject(CircleObject &&) noexcept=default
MRMESH_API void setNormal(const Vector3f &normal, ViewportId id={})
updates xf to fit given normal
virtual MRMESH_API const std::vector< FeatureObjectSharedProperty > & getAllSharedProperties() const override
Create and generate list of bounded getters and setters for the main properties of feature object,...
virtual std::string className() const override
Definition MRCircleObject.h:31
virtual std::string classNameInPlural() const override
Definition MRCircleObject.h:34
MRMESH_API void setRadius(float radius, ViewportId id={})
updates xf to fit given radius
CircleObject(ProtectedStruct, const CircleObject &obj)
Definition MRCircleObject.h:37
MRMESH_API CircleObject(const std::vector< Vector3f > &pointsToApprox)
Finds best sphere to approx given points.
MRMESH_API CircleObject()
Creates simple sphere object with center in zero and radius - 1.
CircleObject(const CircleObject &other)=default
named object in the data model
Definition MRObject.h:62
Definition MRViewportId.h:16
std::function< bool(float)> ProgressCallback
Definition MRMesh/MRMeshFwd.h:729
Definition MRCameraOrientationPlugin.h:8
tl::expected< T, E > Expected
Definition MRExpected.h:25
Definition MRFeatureObject.h:78
Definition MRObject.h:279