MeshLib C++ Docs
Loading...
Searching...
No Matches
MRPointOnObject.h
Go to the documentation of this file.
1#pragma once
2
3#include "MRPch/MRBindingMacros.h"
4#include "MRPointOnFace.h"
5#include "MRMeshTriPoint.h"
6#include "MREdgePoint.h"
7#include <optional>
8#include <variant>
9
10namespace MR
11{
14
15
21{
24 Vector3f point;
26 float zBuffer{ 1.0f };
28 union
29 {
30 int primId = -1;
31 FaceId face;
32 UndirectedEdgeId uedge;
33 VertId vert;
34 };
35 [[nodiscard]] operator PointOnFace() const { return { .face = face, .point = point }; }
36};
37
45using PickedPoint = std::variant<std::monostate, MeshTriPoint, EdgePoint, VertId>;
46
48MRMESH_API PickedPoint pointOnObjectToPickedPoint( const VisualObject* object, const PointOnObject& pos );
49
52MRMESH_API std::optional<Vector3f> getPickedPointPosition( const VisualObject& object, const PickedPoint& point );
53
55[[deprecated( "use getPickedPointPosition() instead" )]] MRMESH_API MR_BIND_IGNORE Vector3f pickedPointToVector3( const VisualObject* object, const PickedPoint& point );
56
58[[deprecated( "use getPickedPointPosition() instead" )]] MRMESH_API MR_BIND_IGNORE bool isPickedPointValid( const VisualObject* object, const PickedPoint& point );
59
63MRMESH_API std::optional<Vector3f> getPickedPointNormal( const VisualObject& object, const PickedPoint& point, bool interpolated = true );
64
65}
Visual Object.
Definition MRVisualObject.h:116
FaceId face
Definition MRPointOnObject.h:31
int primId
Definition MRPointOnObject.h:30
FaceId face
mesh's face containing the point
Definition MRPointOnFace.h:18
std::variant< std::monostate, MeshTriPoint, EdgePoint, VertId > PickedPoint
Definition MRPointOnObject.h:45
MRMESH_API MR_BIND_IGNORE bool isPickedPointValid(const VisualObject *object, const PickedPoint &point)
Checks that the picked point presents in the object's topology.
MRMESH_API MR_BIND_IGNORE Vector3f pickedPointToVector3(const VisualObject *object, const PickedPoint &point)
Converts pickedPoint into local coordinates of its object.
MRMESH_API PickedPoint pointOnObjectToPickedPoint(const VisualObject *object, const PointOnObject &pos)
Converts PointOnObject coordinates depending on the object type to the PickedPoint variant.
Vector3f point
3D location on the object in local coordinates
Definition MRPointOnObject.h:24
std::array< Vector3f, 3 > MR_BIND_IGNORE
Definition MRMeshBuilderTypes.h:13
PointOnObject()
Definition MRPointOnObject.h:22
float zBuffer
z buffer value
Definition MRPointOnObject.h:26
VertId vert
for ObjectLines
Definition MRPointOnObject.h:33
MRMESH_API std::optional< Vector3f > getPickedPointPosition(const VisualObject &object, const PickedPoint &point)
MRMESH_API std::optional< Vector3f > getPickedPointNormal(const VisualObject &object, const PickedPoint &point, bool interpolated=true)
UndirectedEdgeId uedge
for ObjectMesh
Definition MRPointOnObject.h:32
only for bindings generation
Definition MRCameraOrientationPlugin.h:8
a point located on some mesh's face
Definition MRPointOnFace.h:16
Definition MRPointOnObject.h:21