7 votos

Uniformemente espacio agujeros en círculo

Una imagen vale más que mil palabras:

Uneven Spirograph gear holes

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:

A real Spirograph gear

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:

A better Spirograph gear

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"?

4voto

HappyEngineer Puntos 111

Si $r_1<r_2$ es el rango que desea para las radios, a continuación, desea $\theta: [r_1,r_2]\to [0,2\pi]$, de modo que $\theta(r_1)=0$, $\theta(r_2)=2\pi$ y la velocidad de la curva de $\left(r\cos\theta(r),r\sin\theta(r)\right)$ es constante en amplitud.

La velocidad es $(\cos \theta(r) -r\theta'(r)\sin\theta,\sin\theta(r) + r\theta'(r)\cos\theta(r))$, y la amplitud de la se $$\sqrt{\left(\cos \theta(r) -r\theta'(r)\sin\theta(r)\right)^2+\left(\sin\theta(r) + r\theta'(r)\cos\theta(r)\right)^2} = \sqrt{1+\left(r\theta'(r)\right)^2}$$

Así que para que esto sea constante como $r$ cambios, $\theta'(r) = \frac{A}{r}$, y por lo tanto $\theta(r)=A\log r + B$, para algunas constantes, $A,B$.

Ahora resolver para $A,B$ usando las condiciones de frontera, $$A\log r_1 + B = 0\\A\log r_2 + B=2\pi$$

Esto nos da: $$B=-A\log r_1\\ A=\frac{2\pi}{\log{r_2}-\log {r_1}}$$

Por eso, $$\theta(r)=\frac{2\pi\log\frac r{r_1}}{\log\frac{r_2}{r_1}}$$

El conseguir $n$ puntos, simplemente defina $r_1=s_0,\dots,s_{n-1}=r_2\in [r_1,r_2]$ $s_i$ equidistante en $[r_1,r_2]$.

Por lo $s_k=r_1+k\frac{r_2-r_1}{n-1}$ y dejando $R=r_2/r_1$, obtenemos $s_k/r_1 = 1+k\frac{R-1}{n-1}$ y, por tanto, $$\theta(s_k)=2\pi\frac{\log\left(1+k\frac{R-1}{n-1}\right)}{\log R}=2\pi\log_R\left(1+k\frac{R-1}{n-1}\right)=2\pi\log_R\frac{s_k}{r_1}$$

El $2\pi$ podría, por supuesto, ser reemplazado por cualquier ángulo para obtener diferentes "barridos" del ángulo.

Si desea que los puntos sean equidistantes, en lugar de sólo equidistante de la curva, que es un poco más difícil.

0voto

Yves Daoust Puntos 30126

La distancia entre dos agujeros es aproximadamente proporcional al $r\Delta\theta$, $r$ la distancia desde el centro y $\Delta\theta$ el espaciamiento angular.

Así que si quieres mantener un espaciamiento angular constante, que $r$ aumento en $\frac d{r\Delta\theta}$ incrementos.

Si desea mantener un constante espacio radial, que $\theta$ aumento en $\frac dr$ incrementos.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X