1 votos

Cálculo de esta integral a lo largo de una curva de Bézier en código

Estoy haciendo un trabajo de código gráfico y necesito resolver esta integral en código:

$$ \int_{0}^{1} f(P(t)) dt $$

Dónde $P(t)$ es una curva de Bézier cuadrática o cúbica, y $f(p)$ ( $p$ es un punto) se define como:

$$ f(p) = \begin{cases} 1 & \text{if } 0 \le p_x \le 1, & 0 \le p_y \le 1 \\ 0 & \text{elsewhere} \end{cases} $$

Así que estamos tomando una integral a lo largo de la trayectoria de la curva de Bézier, pero sólo dentro de la región cuadrada $0 \le p_x \le 1, \text{ } 0 \le p_y \le 1$ ya que $f(p)$ es $0$ en todas partes. El código que necesita calcular esto no puede hacer suposiciones sobre las curvas de Bézier de entrada.

Entiendo que lo que estamos haciendo es básicamente "recortar" la curva a una región cuadrada, y necesitamos encontrar el rango del parámetro $t$ donde la curva se encuentra dentro de esa región (teniendo en cuenta el caso en que la curva se encuentra completamente fuera de la región). Pero no encuentro una forma generalizada de resolverlo. Si puedo observar la curva visualmente, me queda claro cómo encontrar el intervalo necesario de $t$ pero no consigo entender una técnica general que pueda aplicarse en código.

0voto

bubba Puntos 16773

Aproximar la curva de Bézier $P(t)$ mediante una polilínea $L(t)$ . Recortar la polilínea al cuadrado es fácil. Encontrará varios intervalos, $[a,b]$ donde $L(t)$ está dentro del cuadrado para $t \in [a,b]$ . Suma las longitudes de estos intervalos.

No has dicho nada sobre el grado de tus curvas de Bézier. Si son siempre cúbicas, puedes hacer el recorte directamente, sin la aproximación de polilíneas. Busca "Recorte Bézier".

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