Java 对三维空间中点阵列的近似形状进行分类

Java 对三维空间中点阵列的近似形状进行分类,java,3d,geometry,Java,3d,Geometry,我在三维空间中有一组点,我希望能够对最适合它们的形状进行分类-立方体、球体、圆柱体、平面平面等 我已经研究过监督/机器学习,但因为我需要首先生成一个大的训练数据集,这并不真正合适 我梦想的解决方案是一个java库,它具有奇妙的神奇功能,如: public enum ShapeType { CUBE, SPHERE, CYLINDER, PLANAR } public ShapeType CategorizeShapeFromPoints( 3DPoint[] p

我在三维空间中有一组点,我希望能够对最适合它们的形状进行分类-立方体、球体、圆柱体、平面平面等

我已经研究过监督/机器学习,但因为我需要首先生成一个大的训练数据集,这并不真正合适

我梦想的解决方案是一个java库,它具有奇妙的神奇功能,如:

public enum ShapeType {
    CUBE,
    SPHERE,
    CYLINDER,
    PLANAR
}

public ShapeType CategorizeShapeFromPoints( 3DPoint[] points )

然而,任何和所有的帮助将不胜感激。谢谢

您可以尝试计算一些点云来描述其形状。
这是一个与2D情况相关的示例,您可以尝试计算一些点云来描述其形式。
以下是2D案例的相关示例

答案取决于您对对称性的定义。我用分子对称性做了很多这方面的工作。因此,正如@MBo所说,力矩是一个有用的开始,但只有当点均匀分布时,如果任何地方有集中,力矩分析才会失真。具有等间距点和极点集合的球体是否仍然是球体,因为它不会对称

如果您关心一个点是否在另一侧有一个伙伴,则必须应用旋转和镜像。您提到的对象有定义良好的对称组


同样重要的是,你是否有一个曲面,例如三角形网格或实体。我认为,在你有更清楚的想法之前,没有人能给出明确的答案

答案取决于你对对称性的定义。我用分子对称性做了很多这方面的工作。因此,正如@MBo所说,力矩是一个有用的开始,但只有当点均匀分布时,如果任何地方有集中,力矩分析才会失真。具有等间距点和极点集合的球体是否仍然是球体,因为它不会对称

如果您关心一个点是否在另一侧有一个伙伴,则必须应用旋转和镜像。您提到的对象有定义良好的对称组

同样重要的是,你是否有一个曲面,例如三角形网格或实体。我认为,在你有更清楚的想法之前,没有人能给出明确的答案