Home > Degrafa, Flex > Degrafa – Dynamic Knot Generation

Degrafa – Dynamic Knot Generation

December 29, 2008

Previous Bezier Spline examples have illustrated how to draw a spline directly with pre-generated data in MXML.  In some applications, it is desirable to define the Bezier Spline in MXML, but generate knots (control points) dynamically.

The following diagram shows our infamous arrow generated one segment at a time.

Bezier spline drawn one segment at at time

Bezier spline drawn one segment at at time

The demo allows one knot to be added or deleted (starting with the minimum of three) until the full set is defined.  You may optionally close the spline to complete the drawing.  Once the spline is closed, however, it is not recommended to remove and add knots because of the internal bookkeeping inside the Bezier Spline.

The control points are dynamically redrawn based on the internally generated propertyChange event, which also controls the spline redraw.  This should illustrate the basics of defining a spline in MXML and dynamically generating knots via script.  Download the MXML file here.

About these ads
  1. January 9, 2009 at 10:07 am

    Jim,

    What would be required to extend the Bezier spline so tension (or curvature) could be modified at each control point. Thus giving a person the ability to draw curves mixed with sharp angles.

    – Tom

  2. January 9, 2009 at 10:56 am

    If you want sharp angles mixed in with preserving continuity at other knots, it might be better to provide the ability to turn off the continuity matching at certain knots.

    The tension parameter affects ‘how far away’ the control points are along the tangent line, once the tangent direction is determined. It needs to be some nonzero value just to have a proper set of Bezier control points in the first place.

    Another possibility might be to create a more advanced spline that mixed linear segments in with Beziers. If you email me a sample set of points and how you might like to construct drawings with those points, I’ll see what I can come up with.

    regards,

    – jim

  3. January 12, 2009 at 12:07 pm

    Hi Jim,

    I think I was actually going to work on a component that allowed you to merge multiple geometries into one combined drawing path, that would probably accomplish what I was looking for.

    – Tom

  4. January 12, 2009 at 5:47 pm

    Tom:

    That sounds like a spline where you would allow discontinuity of derivative at some of the knots, like where you join a quad. Bezier with a cubic or a simple line segment with another cubic spline, etc.

    In the context of Degrafa, it might be best accomplished with another type of spline where the constituents would be lines, quad/cubic Beziers, and Bezier Splines.

    Something interesting to think about.

    regards,

    – jim

  5. April 25, 2009 at 6:50 am

    Jim ,

    This is realy great stuff i have seen and I realy apprecciate making such great work accessible for public .

    I m having issue with this knot generation its hanging my browser (ie +firefox) I have latest degfree but still same issue cud u suggest me anything

    sajid

  1. No trackbacks yet.
Comments are closed.
Follow

Get every new post delivered to your Inbox.

Join 1,333 other followers

%d bloggers like this: