Algoritmo de vista explotada para CAD

Estoy haciendo un programa para ver modelos CAD en 3D y me gustaría construir en vistas explosionadas automatizadas. Todos los ensamblajes que se verán son axi-simétricos. Algunos pueden no serlo, pero la mayoría sí. Me gustaría encontrar un algoritmo para mover automáticamente las piezas de un ensamblaje a una posición de vista explosionada. Aquí hay un ejemplo de lo que quiero lograr a través de un algoritmo (menos las etiquetas, por supuesto):

El único valor con el que tengo que trabajar es el centro del cuadro delimitador de cada parte. Si se necesita más información que esa, puedo calcular más información, pero parece que debería ser suficiente. El enfoque aproximado que tengo en mente es calcular un vector desde el origen del ensamblaje hasta el centro de cada parte a lo largo del eje axi-simétrico, luego calcular un vector radial al centro de la parte con respecto al eje central. A partir de ahí, necesitaría calcular algún cálculo que pudiera escalar la posición de cada parte a lo largo de alguna combinación de esos dos vectores. Esa es la parte en la que no estoy muy seguro de qué dirección tomar con esto. La imagen que he incluido muestra la funcionalidad exacta que me gustaría, pero quiero poder escalar la posición por cualquier valor flotante para expandir o contraer la vista explosionada, siendo 1.0 el modelo ensamblado original. ¿Algunas ideas

Respuestas a la pregunta(1)

Su respuesta a la pregunta