28 [[nodiscard]]
size_t calcNumValidPoints()
const {
return validPoints.count(); }
31 [[nodiscard]]
bool hasNormals()
const {
return normals.size() >=
points.size(); }
34 [[nodiscard]]
const VertBitSet & getVertIds(
const VertBitSet * region )
const
36 assert( !region || region->is_subset_of(
validPoints ) );
41 MRMESH_API const AABBTreePoints& getAABBTree()
const;
44 [[nodiscard]]
const AABBTreePoints * getAABBTreeNotCreate()
const {
return AABBTreeOwner_.get(); }
47 [[nodiscard]]
MRMESH_API Box3f getBoundingBox()
const;
51 [[nodiscard]]
MRMESH_API Box3f computeBoundingBox(
const AffineXf3f * toWorld =
nullptr )
const;
55 [[nodiscard]]
MRMESH_API Box3f computeBoundingBox(
const VertBitSet * region,
const AffineXf3f * toWorld =
nullptr )
const;
58 [[nodiscard]]
MRMESH_API Vector3f findCenterFromPoints()
const;
61 [[nodiscard]]
MRMESH_API Vector3f findCenterFromBBox()
const;
68 [[nodiscard]]
MRMESH_API std::vector<VertId> getLexicographicalOrder()
const;
101 [[nodiscard]]
MRMESH_API size_t heapBytes()
const;
104 mutable SharedThreadSafeOwner<AABBTreePoints> AABBTreeOwner_;
#define MRMESH_API
Definition MRMeshFwd.h:80
unsafe void addPartByMask(MR.Const_PointCloud from, MR.Const_VertBitSet fromVerts, MR.Const_CloudPartMapping? outMap=null, MR.Const_VertCoords? extNormals=null)
unsafe void mirror(MR.Const_Plane3f plane)
unsafe MR.VertId addPoint(in MR.Vector3f point)
unsafe bool pack(MR.VertMap? outNew2Old=null)
unsafe void flipOrientation(MR.Const_VertBitSet? region=null)
new unsafe MR.VertBitSet validPoints
unsafe void transform(in MR.AffineXf3f xf, MR.Const_VertBitSet? region=null)
unsafe void invalidateCaches()
new unsafe MR.VertCoords points
new unsafe MR.VertCoords normals
Definition MRCameraOrientationPlugin.h:8
Vector3f normal(const MeshTopology &topology, const VertCoords &points, FaceId f)
computes triangular face normal from its vertices
Definition MRMeshMath.h:221