10 votos

Dividir una curva en cuerdas de igual longitud

He estado investigando sobre esto durante bastante tiempo, pero parece que sólo obtengo respuestas que implican algún lenguaje de programación del que no tengo ningún conocimiento. Permítanme explicar el problema:

Creo que la "subdivisión de igual longitud" de la imagen debería ser una visualización directa del problema. Tengo una curva (una curva paramétrica de Bezier, para ser más específicos) que quiero dividir de tal manera que dos puntos de división consecutivos tengan distancias euclidianas iguales entre sí. La primera y la última cuerda tienen que estar al principio y al final de la curva respectivamente, y todos los puntos de división deben estar en la curva.

Lo ideal sería tener una solución matemática (es decir, sin programación) en la que pueda especificar el número de cuerdas para obtener los puntos de división resultantes. Me manejo perfectamente con el cálculo y estoy dispuesto a aprender más si es necesario.

Gracias.

[1]: https://i.stack.imgur.com/6RkAp.jpg enter image description here

2 votos

Mi respuesta actual supone que se mide la distancia a lo largo de la curva . ¿Esto está mal? ¿Qué quiere decir exactamente con distancia de los puntos consagrados ? ¿La distancia euclidiana habitual?

0 votos

Sí, me refería a la distancia euclidiana habitual, la más corta entre dos puntos. Siento que haya sido ambiguo.

1 votos

@CrazyRabbit: Como dice M. Winter, hay que decir si se mide la distancia a lo largo de la curva (longitud de arco) o en el espacio ambiental (longitud de la cuerda). En cualquier caso, es imposible una solución analítica: Aunque la curva sea cúbica de Bezier, la integral de la longitud de arco no suele ser elemental y no puede expresarse "en forma cerrada", y mucho menos invertirse para obtener una subdivisión de igual longitud. Por otra parte, la subdivisión de un segmento de curva en cuerdas de igual longitud es una global problema, posiblemente peor que los segmentos de curva de igual longitud.

11voto

M. Winter Puntos 1070

Si tienes alguna curva $c:[0,1]\to\Bbb R^n$ tendrá que reparametrizarlo para longitud del arco . Suponiendo que su curva está parametrizada por la longitud de arco, se sostiene que la longitud de la curva entre $c(a)$ y $c(b)$ es simplemente $b-a$ .

Para una curva de este tipo, se desea la partición en $n$ arcos es simplemente cortar la curva en los puntos $c(L\cdot i/n)$ para $i=0,...,n$ y $L$ la longitud de $c$ .


Algunos detalles:

La longitud de arco de una curva $c$ entre $a,b\in\Bbb R$ es

$$L_c(a,b)=\int_a^b\sqrt{1+\|c'(t)\|^2} \;\mathrm{d}t.$$

Reparametrización de la curva mediante $\hat c(t)=c(\varphi(t))$ para algunos $\varphi:[0,L]\to[0,1]$ con $L=L_c(0,1)$ se llama parametrización por longitud de arco si $L_{\hat c}(a,b)=b-a$ . Ahora la parametrización de la curva refleja perfectamente su longitud. Esto le permite controlar perfectamente la longitud de sus arcos.

¿Cómo encontrar esa reparametrización? Tendrá que calcular

$$\Phi(t)=L_c(0,t)$$

explícitamente. Inviértalo para $\varphi=\Phi^{-1}$ y aplicar para construir $\hat c=c\circ \varphi$ .

0 votos

Esto no resuelve el problema en absoluto: El objetivo es encontrar una longitud igual acordes .

1 votos

@DavidG.Stork ¡Lo sé! He publicado esta respuesta antes de que el OP aclarara sus intenciones. Encontrarás otra respuesta mía más abajo.

5voto

Yves Daoust Puntos 30126

Asumiendo que realmente quieres longitudes de cuerda iguales en lugar de longitudes de arco, la expresión será recursiva.

Supongamos que la ecuación de la curva está representada por $B(t)$ .

Desde el punto actual, localizado por el valor del parámetro $t_k(s)$ encontremos el primer punto que está a la distancia $s$ Si es que existe.

$$t_{k+1}(s):=\min\{t:t>t_n:d(B(t_k(s)),B(t))=s\}.$$

La recurrencia se inicia con

$$t_0(s)=t_a$$

y esto define $t_n(s)$ una función creciente.

Ahora bien, si quieres exactamente $n$ acordes, debe asegurarse de que

$$t_n(s^*)=t_b$$ y resolver esta ecuación para $s^*$ .

Ni que decir tiene que en la mayoría de los casos no habrá una forma cerrada manejable para el $t_k(s^*)$ que estás soñando.


Actualización :

Cuando hay varias soluciones al " $s$ -ecuación "distancia", eligiendo la primera $t$ puede conducir a bloqueos.

0 votos

Se me ocurre un caso en el que su procedimiento no encontrará $t_n(s)=t_b$ para cualquier valor de $s$ . Esto se debe a que el $t_i$ no son continuos en $s$ pero puede saltar. Me gustaría poder subir una foto de un ejemplo de contador pero imagina un gancho como curva.

0 votos

@M.Winter: efectivamente puede haber esos saltos. Pero eso no significa que la función no sea invertible.

0 votos

La invertibilidad no es mi preocupación, sino que $t_b$ no es a imagen y semejanza de $t_n(s)$ .

2voto

M. Winter Puntos 1070

No sé si esto es una solución para usted, pero ahora puedo demostrar la existencia de tal equichordal para cualquier curva (continua) $c:[0,1]\to\Bbb R^m$ en $n\in \Bbb N$ segmentos.

En primer lugar, fijemos algunas definiciones:

Definición. Dejemos que $c:[a,b]\to\Bbb R^m$ sea una curva y $n\in\Bbb N$ . Un partición equicordal de $c$ en $n$ segmentos es una secuencia $t_0,...,t_n\in[a,b]$ con $t_0\leq \cdots\leq t_n$ y

$$t_0=a,\quad t_n=b,\quad \|c(t_i)-c(t_{i-1})\|=\Delta,\quad\text{for all $ i=1,...,n $}$$

y alguna longitud de cuerda $\Delta\geq 0$ .

Ahora podemos formular lo que queremos demostrar. En realidad, tenemos que demostrar un enunciado más fuerte por el bien de la prueba inductiva. La prueba no podrá construir directamente esta partición. En su lugar, comienza con la partición de sólo una parte de la curva. Posteriormente vamos a mover los puntos de división de forma continua, de manera que la partición finalmente cubra toda la curva. La parte difícil es asegurar que la curva permanezca ecuánime durante todo el proceso.

Teorema. Para cualquier curva $c:[0,1]\to\Bbb R^m$ y cualquier $n\in \Bbb N$ hay funciones continuas $t_i(\tau),i=0,...,n$ para $\tau\in[0,1]$ con

  • $t_n(0)=0$ y $t_n(1)=1$ ,
  • el $t_i(\tau)$ son una partición ecuánime de la curva $c$ en $[0,t_n(\tau)]$ en $n$ segmentos.

Léalo con atención. Afirma que no sólo tenemos una partición ecuánime, sino un continuo de tales particiones. Para $\tau=0$ todos los puntos de partición se encuentran en $c(0)$ . Se trata de una partición trivial de la curva vacía con longitud de cuerda $\Delta(0) =0$ . Para $\tau = 1$ tenemos una partición de toda la curva. Todos los demás valores de $\tau$ mezcla entre estos dos estados $-$ y eso es importante $-$ en un continuo de la moda.

Comprobado esto, su partición deseada viene dada por los valores $t_i(1)$ .


Prueba.

Lo demostraremos utilizando inducción en $n$ . En realidad, se trata de una idea bastante natural. Tomamos algunas $n$ -segmento de la partición y añadir un solo segmento para construir un $(n+1)$ -partición. Sólo tenemos que asegurarnos de que el nuevo segmento tiene la misma longitud $\Delta$ como el resto. Además, esto aclara por qué tenemos que considerar las particiones de las subcurvas. Para tener lugar para añadir otro segmento, la partición actual no debe cubrir toda la curva.

El base de inducción $n=1$ es bastante trivial, basta con elegir

$$t_0(\tau)=0,\quad t_1(\tau)=\tau.$$

Se trata de un único segmento de línea que conecta $c(0)$ y $c(\tau)$ . El resto de la prueba se ocupará de la paso de inducción $n\to n+1$ .

Queremos construir un nuevo $(n+1)$ -partición de nuestro ya existente $n$ -partición $t_i(\tau),i=0,...,n$ que también se mezcla continuamente desde una división de la curva vacía hasta una división de la curva completa $c$ . Parametrizamos esta mezcla continua mediante $\hat\tau$ para evitar confusiones con la parametrización ya existente del $t_i(\tau)$ . Por el momento fija $\hat\tau$ . Ahora, podemos describir cualquier posible partición-candidato con sólo dos números: $x$ y $\tau$ .

  • $x$ es el nuevo punto de división añadido al final del antiguo $n$ -participación.
  • $\tau$ describe que $n$ -partición $t_i(\tau)$ para elegir por el resto.

Por supuesto, la mayoría de estos candidatos son inútiles. Por ejemplo, debemos asegurarnos de que $x\geq t_n(\tau)$ para que $x$ es efectivamente el último punto. Además, la distancia de $c(x)$ a $c(t_n(\tau))$ (= la longitud del nuevo segmento) debe ser igual a la longitud de la cuerda común $\Delta(\tau)$ del resto para garantizar la equicordancia. Y esta es la parte fácil. Por último, debemos asegurarnos de que $x$ y $\tau$ se eligen continuamente en función del nuevo parámetro $\hat\tau$ . Veremos cómo tratar todo esto simultáneamente.

Lo que deberíamos ver de este proceso de pensamiento es que el espacio de búsqueda para la nueva partición es bidimensional. Cualquier cadidato está representado de forma única por un par $(x,\tau)$ . Definamos el espacio de los cadidatos

$$D:=\{(x,\tau)\in[0,1]^2\mid t_n(\tau)<x<1\}.$$

Vemos que la condición de que $x$ es el último punto de división ya está incorporado. $D$ puede parecerse a la zona de color gris en la imagen de abajo.

$\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad$

Ahora defina la siguiente función en $D$ para tener una medida de lo ecuánime que es un candidato:

$$f(x,\tau):=\Delta(\tau) - \|c(x)-c(t_n(\tau))\|.$$

Esta función compara la longitud del nuevo segmento con $\Delta(\tau)$ . Si es cero, es decir $f(x,\tau)=0$ entonces sí que encontramos un equicordio $(n+1)$ -partición. Así que nos interesan los ceros de $f$ . Pero no sólo esto. Porque necesitamos tener un continuo de particiones parametrizadas por $\hat\tau$ En realidad deberíamos buscar un camino completo de ceros dentro de $D$ que, con suerte, se extiende desde $(0,0)$ (una partición de la curva vacía) a $(1,\tau)$ (una partición de la curva completa), véase la línea negra discontinua en la imagen. Así que lo último que hay que hacer es demostrar que existe tal camino $p:[0,1]\to D$ que se encuentra completamente dentro de los ceros de $f$ y satisface

$$ p(0)=(0,0),\quad p(1)=(1,\tau),\quad\text{for some $ \N - [0,1] $}.$$

Y aquí viene el gran truco que mostrará la existencia. Imagínese sentado en el borde izquierdo de $D$ y tratar de caminar hacia el borde curvo de $D$ , pero sin pasar por un cero de $f$ . En primer lugar, hay que tener en cuenta que

  • en el borde izquierdo todos los pares tienen $\tau=0$ por lo que describen particiones de la curva vacía. Por lo tanto, $\Delta(0)=0$ y por lo tanto $f(x,0)\leq 0$ .
  • en el borde curvo todos los pares describen el caso $x=t_n(\tau)$ . Esto significa que el último segmento tiene una longitud cero, por lo que $f(x,\tau)\geq 0$ .

Así que durante su viaje desde el borde izquierdo hasta el curvo, tiene que pasar de valores negativos de $f$ a valores positivos de $f$ y porque $f$ es continua (se puede ver fácilmente), el teorema del valor intermedio dice que tenemos que pasar $f=0$ en algún momento. Imagina los ceros como paredes. Entonces, ¿qué significa que no podemos llegar de un borde al otro? Probablemente que hay una pared (hecha de ceros) que se extiende sin huecos desde el punto más bajo de $D$ a algún punto más alto de $D$ . Este "muro" es nuestro camino $p$ .

Que este camino exista realmente y sea continuo no es evidente. Demostrar esto probablemente necesitaría otro post de este tipo. Así pues, consulta los siguientes enlaces:

Para ser precisos, este teorema se mantiene probablemente sólo para un $f$ . Pero en este punto debo confiar en el hecho de que, por ejemplo, asumiendo $c$ tiene una longitud finita, servirá.

Con esto termina esta prueba por inducción. $\square$


Entonces, ¿qué se puede sacar de esto? Como no hay forma de escribir explícitamente los puntos de división que se pueden buscar, esta prueba arroja algo de luz sobre cómo uno puede acercarse gradualmente a una partición equicordal.

El resultado es comparable a la respuesta de Yves. Se parte de una partición de una parte inicial muy pequeña de la curva (unos diminutos $\tau$ ). Aquí puede ser fácil asegurar la equicordancia. A continuación, se desplaza gradualmente el último punto de división a lo largo de la curva, poco a poco. Después de cada movimiento recuperas la equicordancia desplazando ligeramente los otros puntos. El hecho de que esto no requiera fuertes (e imprevisibles) ajustes de estos otros puntos está garantizado por la continuidad de la mezcla de partición resultante.

Puede ocurrir que no puedas moverte $t_n$ más allá de la curva manteniendo la partición equicordal. Este era el problema inicial del enfoque de Yves. Sin embargo, la prueba muestra que todavía se puede avanzar moviendo $t_n$ hacia atrás. Sólo tienes que asegurarte de que no vas a invertir el movimiento de todo los otros puntos.

0 votos

Inspirado por su respuesta, he hecho un intento de un enfoque diferente pero no conozco la topología suficiente para completarlo. Te agradecería que le echaras un vistazo y lo comentaras.

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