examples chart math graphics 3d mesh

math - chart - Una buena biblioteca de malla 3D



plotly examples (3)

¿Puedo preguntar por qué el último punto es un requisito?

Las bibliotecas escritas para el consumo público están diseñadas para ser tan genéricas como sea posible para que puedan ser utilizadas por la audiencia más amplia posible. En C ++, a menudo esto se hace mejor usando plantillas. Sería una gran lección si encontraras una buena biblioteca, solo para descubrir que era inútil para tus propósitos porque usaba flotadores en lugar de dobles.

CGAL, por ejemplo, parece haber adoptado el conocido y probado paradigma de STL de escribir librerías C ++ genéricas y extensibles. Esto hace que sea difícil seguir con las herramientas de análisis de código; Dudo que sean muy buenos para seguir los encabezados de STL tampoco.

¿Pero estás tratando de usar la biblioteca o modificarla? De cualquier manera, parece que tienen una documentación de muy alta calidad (por ejemplo, Kernel Manual ) que debería hacer que sea relativamente simple averiguar lo que debe hacer, sin tener que recurrir a leer su código.

Descargo de responsabilidad: sé que esto no es lo que estás pidiendo. Pero no creo que exista lo que estás buscando. Es extraordinariamente raro encontrar código fuente abierto con documentación tan buena como lo que he visto escaneando a través de CGAL. Le sugiero encarecidamente que vuelva a analizarlo.

Estoy buscando una buena biblioteca 3D Mesh

  • Debería poder leer formatos populares (OFF, OBJ ...)
  • Debe admitir tanto la estructura de medio borde como una sopa de triángulo
  • Debe ser tolerante a fallas y mallas ilegales.
  • Operaciones geométricas básicas: intersecciones, cálculos normales, etc.
  • Lo más importante: no debe ser intrincado con plantilla interminable y jerarquías de herencia.

He probado tanto CGAL como OpenMesh pero ambos fallan miserablemente en el último punto.

Específicamente CGAL que es imposible seguir incluso con las herramientas de análisis de código más avanzadas.

Hasta ahora, estoy considerando seriamente sacar el mío.

Mi preferencia es C ++, pero estoy abierto a otras opciones.


Primero, algunos comentarios generales sobre sus requisitos:

  • leer archivos OBJ o OFF es muy fácil. Puede implementarlo usted mismo, en la parte superior de una biblioteca que proporciona las funciones más geométricas, en pocos minutos. Por otro lado, la parte geométrica de dichas bibliotecas es mucho más complicada, por lo que debe centrarse en sus requisitos, que realmente tratan con los algoritmos geométricos, y tratar de encontrar algo que se adapte a sus necesidades. Luego, por supuesto, si hay un empate, comience a considerar este problema de interfaz.
  • en términos de operaciones geométricas, pides intersección. ¿Te refieres a la intersección de primitivos? (para lo cual se pueden encontrar e implementar algoritmos buenos y simples) o el cálculo de la intersección de dos mallas? o detección de colisión? (que son preguntas delicadas, sin una respuesta simple)
  • Si es más específico, desde un punto de vista de nivel superior, sobre el tipo de herramientas que desea construir, las personas podrán dirigirlo a la herramienta adecuada. Sus requisitos son de muy bajo nivel.

Por lo que entiendo su pregunta, me parece que no ve claramente el objetivo de bibliotecas como CGAL y OpenMesh. Es posible que estas bibliotecas no proporcionen todas las herramientas de nivel superior que necesita, pero su objetivo es proporcionarle (especialmente en el caso de CGAL) todo el marco geométrico sobre el que puede construir una aplicación geométrica. Dichos marcos geométricos son muy delicados de diseñar, especialmente debido al problema de robustez, que es muy específico de la geometría computacional. Y sin ese marco, construir una aplicación sólida es un esfuerzo horrendo.

Si no encuentra una biblioteca que satisfaga sus necesidades, considere seriamente el uso de una biblioteca como CGAL como el marco subyacente para su desarrollo. Evitará la aparición de problemas relacionados con la robustez, por lo que normalmente comenzará a notarlo tarde en su proceso de desarrollo, cuando cambiar el marco subyacente será doloroso. Como un aparte, CGAL tiene una extensa documentación y una lista de correo de usuarios muy activa.

Si no conoce los problemas de robustez en el software de geometría, eche un vistazo a esta página: problemas de robustez


No sé si puede ser útil para ti. También hay otra biblioteca, que se llama Biblioteca Mangrove TDS, disponible gratuitamente en http://mangrovetds.sourceforge.net. Admite cualquier tipo de formas (2d, 3d, cualquier dimensión), con cualquier dominio (múltiple, no múltiple , pseudo-colectores, complejos iqm, complejos simpliciales, etc.). Posiblemente admite formas no regulares, es decir, formadas por piezas de diferentes dimensionalidades.

Su principal propiedad es que es extensible, en el sentido de que se admite cualquier estructura de datos topológicos. Es un complemento que se puede cambiar y cargar en tiempo de ejecución.

Su implementación se basa en la indexación de entidades basada en arreglos, codificada en una estructura de datos, que admite iteradores. También es compatible con propiedades dinámicas.

Finalmente, admite una representación implícita de entidades que no están directamente codificadas en una estructura de datos (entidades fantasmas), que mejoran la eficiencia de las consultas topológicas.