6 votos

Encontrar sagitta de una cúbica de Bézier-describe arco

Tengo una situación en la que tengo un arco que estaba destrozado (irrelevante: por c#'s GraphicsPath.AddArc() la función). El arc original está garantizado para ser circular, y los nuevos datos que he describe el Bézier aproximación para el arco en su lugar. No estoy enormemente en Béziers, o de la geometría compleja, así que estoy esperando que alguien me puede ayudar!

Datos:

  • Tengo cuatro puntos que describen un arco circular
  • Los puntos 1 y 4 son los dos puntos finales del arco
  • Los puntos 2 y 3 son los cúbica de Bézier puntos de control, i.e son tangenciales al arco en cada extremo

Se parece a esto: Problem

Estoy tratando de encontrar la longitud de la línea etiquetada como 'x', que entiendo que es el Sagitta.

5voto

Peter Taylor Puntos 5221

A partir de la ecuación de una cúbica de Bézier, el punto medio de la curva es $\frac{1}{8}(P_1 + 3 P_2 + 3 P_3 + P_4)$. $x$ es la distancia desde el punto medio de a $\frac{1}{2}(P_1 + P_4)$, es decir,$|\frac{3}{8}(-P_1 + P_2 + P_3 - P_4)|$.

3voto

Andrew Puntos 140

En primer lugar, cúbico Béziers sólo se puede aproximar a los círculos.

De todos modos, obtener el punto medio de los puntos 1 y 4 (el de Bézier aplicación tiene hace mantener los puntos de control alrededor, ¿sí?), obtener la pendiente del segmento uniendo los puntos 1 y 2 ( $F$ ), y el segmento uniendo los puntos 3 y 4 ( $G$ ), obtener el punto de intersección de la recta perpendicular a $F$ en el punto 1 y la línea perpendicular a $G$ en el punto 4 (¿aún te acuerdas de cómo obtener la pendiente de la perpendicular?), determinar la distancia desde ese punto de intersección a cualquiera de los puntos 1 o 4 (el radio del círculo), y restar de que la distancia entre el punto de intersección con el punto medio de los puntos 1 y 4.


Por lo explícito, he aquí una menos verbal manera de poner la solución. Pongamos punto de $i$ a tiene coordenadas $(x_i,y_i)$ en lo que sigue:

  1. "obtener el punto medio de los puntos 1 y 4" $$(x_m,y_m)=\left(\frac{x_1+x_4}{2},\frac{y_1+y_4}{2}\right)$$

  2. "obtener la pendiente del segmento uniendo los puntos 1 y 2 ( $F$ ), y el segmento uniendo los puntos 3 y 4 (de $G$)" $$m_F=\frac{y_2-y_1}{x_2-x_1},\quad m_G=\frac{y_4-y_3}{x_4-x_3}$$

  3. "obtener el punto de intersección de la recta perpendicular a $F$ en el punto 1 y la línea perpendicular a $G$ en el punto 4", es decir, resolver $$\begin{align*} y_{int}-y_1&=-\frac{x_2-x_1}{y_2-y_1}(x_{int}-x_1) \\ y_{int}-y_4&=-\frac{x_4-x_3}{y_4-y_3}(x_{int}-x_4) \end{align*}$$ for $(x_{int},y_{int})$

  4. "determinar la distancia desde ese punto de intersección a cualquiera de los puntos 1 o 4"; usando el punto 1, por ejemplo, $$r=\sqrt{(x_{int}-x_1)^2+(y_{int}-y_1)^2}$$

  5. "restar de que la distancia entre el punto de intersección con el punto medio de los puntos 1 y 4."

$$\text{sagitta}=r-\sqrt{(x_{int}-x_m)^2+(y_{int}-y_m)^2}$$

El método es exacto para los círculos. Si ayuda, piense en esto como el equipo de la adaptación de la habitual brújula/regla método para encontrar el centro de un círculo.

1voto

jaq Puntos 81

No puedes simplemente usar la ecuación de la curva de Bézier (este es uno cúbico) y, a continuación, encontrar el punto medio? Parece fácil para encontrar las coordenadas de los cuatro puntos.

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