Implicitization via Moving Curves

  • Thread starter Zorrent12
  • Start date
  • Tags
    Curves
In summary, in order to calculate the implicit equation of a cubic bezier curve, you need to first find a quadratic function
  • #1
Zorrent12
2
0

Homework Statement


Hello. I am currently working with bezier curves in a programming project and have need to calculate the implicit equation of a cubic bezier curve. After doing some research, I decided to take the moving curve approach.

From what I can gather, the first step to implicitization of a cubic curve is finding a quadratic function from the following matrix.

| 3*P_0*P_1 3*P_0*P_2 P_0*P_3 | | (1 - t)^2 |
| 3*P_0*P_2 P_0*P_3 + 9*P_1*P_2 3*P_1*P_3 | | (1 - t)*t |
| P_0*P_3 3*P_1*P_3 3*P_2*P_3 | | t^2 |

Where each point is multiplied by taking the cross product of their coordinates. I chose the top function and defined the following variables

a00 = 3*(y0*1 - y1*1)
b00 = 3*(x1*1 - x0*1)
c00 = 3*(x0*y2 - x1*y0)

a01 = 3*(y0*1 - y2*1)
b01 = 3*(x2*1 - x0*1)
c01 = 3*(x0*y2 - x2*y0)

a02 = y0*1 - y3*1
b02 = x2*1 - x0*1
c02 = x0*y3 - x3*y0

representing the function as

(x*a00 + y*b00 + c00)*(1 - t)^2 +
(x*a01 + y*b01 + c01)*(1 - t)*t +
(x*a02 + y*b02 + c02)*t^2

The next step was to find a function of one degree less. I read this could be done by shifting the bottom row to the right and eliminating the bottom left corner. I defined the following additional variables

a10 = a02;
b10 = b02;
c10 = c02;

a11 = 3*(y1*1 - y3*1);
b11 = 3*(x3*1 - x1*1);
c11 = 3*(x1*y3 - x3*y1);

and representing the function as

(x*a10 + y*b10 + c10)*(1 - t) +
(x*a11 + y*b11 + c11)*t

With the two functions

(x*a10 + y*b10 + c10)*(1 - t) +
(x*a11 + y*b11 + c11)*t

and

(x*a00 + y*b00 + c00)*(1 - t)^2 +
(x*a01 + y*b01 + c01)*(1 - t)*t +
(x*a02 + y*b02 + c02)*t^2

I calculated the dot product between P(t) = (x, y, 1) and the functions. I then attempted to calculate the resultant using the Sylvester matrix, which should represent the implicit equation of the curve.

| (x*a00 + y*b00 + c00) (x*a01 + y*b01 + c01) (x*a02 + y*b02 + c02) |
| (x*a10 + y*b01 + c00) (x*a11 + y*b11 + c11) 0 |
| 0 (x*a10 + y*b01 + c00) (x*a11 + y*b11 + c11) |

(x*a00 + y*b00 + c00)*(x*a11 + y*b11 + c11)*(x*a11 + y*b11 + c11) +
(x*a01 + y*b01 + c01)*0*0 +
(x*a02 + y*b02 + c02)*(x*a10 + y*b01 + c00)*(x*a10 + y*b01 + c00) -
(x*a02 + y*b02 + c02)*(x*a11 + y*b11 + c11)*0 -
(x*a01 + y*b01 + c01)*(x*a10 + y*b01 + c00)*(x*a11 + y*b11 + c11) -
(x*a00 + y*b00 + c00)*0*(x*a10 + y*b01 + c00) = 0

The trouble is, when I plugged in the coordinates of a point on the curve, the implicit equation resulted in a number other than zero.

Homework Equations



Cross Product: (a, b, c) x (d, e, f) = (bf - ec, dc - af, ae - db)

Determinant of a 3x3 matrix:
a_11*a_22*a_33 +
a_12*a_23*a_31 +
a_13*a_21*a_32 -
a_13*a_22*a_31 -
a_12*a_21*a_33 -
a_11*a_23*a_32

The Attempt at a Solution



For my test, I used a curve made up of the control points

P_0 = 2, 2
P_1 = 1, 3
P_2 = 3, 4
P_3 = 5, 5

And chose to test the equation using the two endpoints. The first point resulted in the equation equaling 648.0, while the other resulted in -3240.0.

Thank you for taking the time to read my lengthy post. I apologize if the information provided is inadequate. If there is need for more clarification, please ask.
 
Last edited:
Physics news on Phys.org
  • #2


Hello, it seems like you have made some progress in your approach to calculating the implicit equation of a cubic bezier curve. However, I noticed a few issues that may be causing your results to be incorrect.

First, it seems like you may have made a mistake in defining your additional variables a10, b10, and c10. These variables should be based on the bottom row of the original matrix, not the bottom left corner. So a10 should be 3*(y2*1 - y3*1), b10 should be 3*(x3*1 - x2*1), and c10 should be 3*(x2*y3 - x3*y2). Similarly, a11, b11, and c11 should be based on the bottom row of the shifted matrix, not the bottom left corner. So a11 should be 3*(y0*1 - y2*1), b11 should be 3*(x2*1 - x0*1), and c11 should be 3*(x0*y2 - x2*y0).

Second, it seems like you may have made a mistake in calculating the dot product between P(t) and the functions. The dot product should be between the vector (x, y, 1) and the functions, not between P(t) and the functions. So the dot product should be (x*a00 + y*b00 + c00)*(1 - t)^2 + (x*a01 + y*b01 + c01)*(1 - t)*t + (x*a02 + y*b02 + c02)*t^2 and (x*a10 + y*b10 + c10)*(1 - t) + (x*a11 + y*b11 + c11)*t.

Lastly, it seems like you may have made a mistake in calculating the determinant of the Sylvester matrix. The determinant should be a_11*a_22*a_33 + a_12*a_23*a_31 + a_13*a_21*a_32 - a_13*a_22*a_31 - a_12*a_21*a_33 - a_11*a_23*a_32, not (x*a00 + y*b00 + c00)*(x*a11 + y*b11 + c11)*(x*a11 + y*b11 + c11) + (x*a01 + y*b01 + c01
 

Related to Implicitization via Moving Curves

1. What is "Implicitization via Moving Curves"?

"Implicitization via Moving Curves" is a mathematical technique used in computer-aided geometric design. It involves converting a parametric curve or surface into an implicit representation, which can be more efficient for certain calculations and operations.

2. How does Implicitization via Moving Curves work?

This technique works by using a moving curve or surface to create a system of equations that describes the original curve or surface. The equations are then manipulated to eliminate the parameter variable, resulting in an implicit representation.

3. What are the advantages of using Implicitization via Moving Curves?

Implicitization via Moving Curves can lead to more compact and efficient representations of curves and surfaces, making them easier to store and manipulate. It can also simplify certain geometric calculations and operations.

4. Are there any limitations to using Implicitization via Moving Curves?

While this technique can be useful in certain situations, it may not always be practical or necessary. It also requires a good understanding of geometric and algebraic concepts, making it more challenging for those without a strong mathematical background.

5. Can Implicitization via Moving Curves be applied to all types of curves and surfaces?

No, this technique is most commonly used for polynomial curves and surfaces. It may not be applicable for other types of curves and surfaces, such as trigonometric or exponential curves.

Similar threads

  • Calculus and Beyond Homework Help
Replies
1
Views
1K
Replies
4
Views
2K
  • Programming and Computer Science
Replies
6
Views
1K
  • High Energy, Nuclear, Particle Physics
Replies
5
Views
2K
  • Calculus and Beyond Homework Help
Replies
1
Views
2K
  • Calculus and Beyond Homework Help
Replies
4
Views
2K
  • Calculus and Beyond Homework Help
Replies
2
Views
2K
  • Calculus and Beyond Homework Help
Replies
1
Views
2K
  • Calculus and Beyond Homework Help
Replies
3
Views
1K
  • Precalculus Mathematics Homework Help
Replies
3
Views
2K
Back
Top