haskell data-structures 3d language-agnostic geometry

haskell - Estructura de datos de representación de límites para la biblioteca 3D



data-structures language-agnostic (0)

Me gustaría implementar una biblioteca Haskell de fuente abierta que opere con datos geométricos, específicamente mallas poligonales 3D , como lo hacen Blender, Maya, 3ds Max o Houdini. El criterio más importante es el rendimiento al modificar partes de esas mallas, sin embargo, también quiero que sea capaz de representar objetos compuestos por:

  1. solo vértices
  2. polígonos con cualquier cantidad de vértices
  3. mallas con agujeros
  4. (no obligatorio) bordes sin polígonos

y poder asignar vértices, aristas y polígonos con propiedades nombradas. Una propiedad con nombre es solo una asignación entre un String y cualquier tipo de datos, como Int. Esto refleja la forma en que Houdini lo hace.

Después de leer acerca de las diferentes representaciones, me viene a la mente que las estructuras de datos de borde alado o medio se usan en una multitud de bibliotecas, pero pueden ser difíciles o imposibles de aplicar a objetos como (1.), mientras que las búsquedas para renderizar Las mallas dinámicas o la estructura de datos de borde radial no ofrecen explicaciones claras o implementaciones reales.

Mi pregunta es ¿cuál sería la mejor opción para representar estos objetos geo como se describe y por qué? Y en caso de que necesite representaciones que no sean de 2 columnas, ¿hay alguna implementación de estructuras de borde radial?