Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Bezier Plotting problem

  1. May 17, 2007 #1

    Hello math gurus,

    I'm using Bezier curves in my Perl application to chart currency trading data.
    Having no formal math training, I've framed my questions in a modeling context.
    I want to step along the major axis (on integer boundaries), and calculate real
    values on the minor axis. I'm plotting in relative space, like PostScript's
    "rcurveto" function. The example code fragments are in (pseudo) Perl with
    scalar($) and termination(;) characters removed.

    Control Points:
    x1 = 70 y1 = 0
    x2 = 100 y2 = 20
    3 = 100 y3 = 50

    Initialize Curve:
    cX = (3 * x1)
    cY = (3 * y1)
    bX = ((3 * (x2 - x1)) - cX)
    bY = ((3 * (y2 - y1)) - cY)
    aX = (x3 - cX - bX)
    aY = (y3 - cY - bY)

    Plot Point:
    t1 = t t2 = (t1 * t1) t3 = (t1 * t2)
    pX = ((aX * $t3) + (bX * $t2) + ($cX * t1))
    pY = ((aY * $t3) + (bY * $t2) + ($cY * t1))

    Octant Change:
    T: 0.65429213786 X: 88.830577627 Y: 22.884879224

    Octant 0 Point:
    T: 0.28268189551 X: 50.000000000 Y: 4.568654814

    Octant 1 Point:
    T: 0.88425060334 X: 98.778678931 Y: 40.000000000

    In Octant 0, I want to use X integers (0 to 88) to find t (e.g. 0.28268189551
    from 50) to generate Y reals (e.g. 4.568654814 from 0.28268189551). In Octant 1,
    I want to use Y integers (23 to 50) to find t (e.g. 0.88425060334 from 40) to
    generate X reals (e.g. 98.778678931 from 0.88425060334).

    My three part question is:

    1) Can the (aX, bX, cX, aY, bY, cY) initialization values be used in the solution,
    or will separate initialization values be required for X stepping and Y stepping.

    2) Are the X and Y stepping solutions (that find t) similar to the structure of
    finding X and Y with t?

    Find t with x: t1 = pX ... process ...
    Find y with t: ((aY * $t3) + (bY * $t2) + ($cY * t1))

    3) How will the solution calculate the following values from X = 50 in Octant 0
    and Y = 40 in Octant 1:

    T: 0.28268189551 X: 50.000000000 Y: 4.568654814

    The only way I'll be able to understand a solution is if I can plug it into some
    Perl code. Explanations in pseudo code or C fragments should also work.

    Thanks (in advance, for anyone willing to help me with this).
     
    Last edited: May 17, 2007
  2. jcsd
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Can you help with the solution or looking for help too?
Draft saved Draft deleted