Una imagen vale más que mil palabras:
Este equipo es parte de un sistema interactivo de SVG Espirógrafo que estoy creando. Estoy generación dinámica de la marcha basa en una serie de parámetros (el equipo de radio, número de dientes, etc). Observe cómo los agujeros apriétalo hasta que acercarse hasta el centro? Es porque actualmente estoy espaciado de los agujeros con un ángulo constante, y cuando están cerca del centro, de que el ángulo no se mueve cada agujero muy lejos.
En la vida Real Espirógrafo engranajes espacio de sus agujeros para que aparezcan equidistantes unos de otros, incluso a medida que se acercan al centro:
Mi intento de emular este efecto fue parcialmente exitosa - en lugar de espaciado de cada agujero por un ángulo absoluto, me tomó de la longitud de arco entre los dos primeros agujeros y en los últimos dos hoyos y un promedio de ellos. A continuación, fui cada agujero por este promedio de longitud de arco. Esto se ve mucho mejor:
Sin embargo, observe que los agujeros ahora envuelva más alrededor de la marcha del barren a través de unos 450 grados en lugar de exactamente 360, como en la primera imagen. Este "barrido de distancia" es algo que me acepte como parámetro al crear un engranaje, por lo que me gustaría para reflejar con precisión el valor pasado.
Estoy asumiendo que hay algo mal con cómo estoy calculando el promedio de longitud de arco - sólo el promedio de la pequeña y la más grande de la longitud de arco es, probablemente, una simplificación excesiva que resulta en un espacio extra entre los agujeros. Existe un algoritmo mejor que se coloque los agujeros alrededor de la marcha, mientras que el mantenimiento de la correcta "barrido de distancia"?