Processing math: 100%

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 18(P1+3P2+3P3+P4). x es la distancia desde el punto medio de a 12(P1+P4), es decir,|38(P1+P2+P3P4)|.

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 (xi,yi) en lo que sigue:

  1. "obtener el punto medio de los puntos 1 y 4" (xm,ym)=(x1+x42,y1+y42)

  2. "obtener la pendiente del segmento uniendo los puntos 1 y 2 ( F ), y el segmento uniendo los puntos 3 y 4 (de G)" mF=y2y1x2x1,mG=y4y3x4x3

  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 yinty1=x2x1y2y1(xintx1)yinty4=x4x3y4y3(xintx4) for (xint,yint)

  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=(xintx1)2+(yinty1)2

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

sagitta=r(xintxm)2+(yintym)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