#include <_bezier.h>
Inheritance diagram for bezier_base< V, T >:

Public Types | |
| typedef V | value_type |
| typedef T | time_type |
Public Member Functions | |
| bezier_base () | |
| bezier_base (const value_type &a, const value_type &b, const value_type &c, const value_type &d, const time_type &r=0.0, const time_type &s=1.0) | |
| void | sync () |
| value_type | operator() (time_type t) const |
| void | set_rs (time_type new_r, time_type new_s) |
| void | set_r (time_type new_r) |
| void | set_s (time_type new_s) |
| const time_type & | get_r () const |
| const time_type & | get_s () const |
| time_type | get_dt () const |
| bool | intersect_hull (const bezier_base< value_type, time_type > &x) const |
| time_type | intersect (const bezier_base< value_type, time_type > &x, time_type near=0.0) const |
| Bezier curve intersection function. | |
| value_type & | operator[] (int i) |
| const value_type & | operator[] (int i) const |
Protected Attributes | |
| affine_combo< value_type, time_type > | affine_func |
Private Attributes | |
| value_type | a |
| value_type | b |
| value_type | c |
| value_type | d |
| time_type | r |
| time_type | s |
Definition at line 69 of file _bezier.h.
| typedef V bezier_base< V, T >::value_type |
| typedef T bezier_base< V, T >::time_type |
| bezier_base< V, T >::bezier_base | ( | ) | [inline] |
| bezier_base< V, T >::bezier_base | ( | const value_type & | a, | |
| const value_type & | b, | |||
| const value_type & | c, | |||
| const value_type & | d, | |||
| const time_type & | r = 0.0, |
|||
| const time_type & | s = 1.0 | |||
| ) | [inline] |
| void bezier_base< V, T >::sync | ( | ) | [inline] |
Reimplemented in hermite< V, T >.
Definition at line 89 of file _bezier.h.
Referenced by bezier_base< double, float >::bezier_base(), bezier_base< float, float >::bezier_base(), bezier_base< V, T >::bezier_base(), bezier< V, T >::subdivide(), and hermite< V, T >::sync().
| value_type bezier_base< V, T >::operator() | ( | time_type | t | ) | const [inline] |
Definition at line 94 of file _bezier.h.
References bezier_base< V, T >::a, bezier_base< V, T >::affine_func, bezier_base< V, T >::b, bezier_base< V, T >::c, bezier_base< V, T >::d, bezier_base< V, T >::r, and bezier_base< V, T >::s.
| void bezier_base< V, T >::set_rs | ( | time_type | new_r, | |
| time_type | new_s | |||
| ) | [inline] |
Definition at line 129 of file _bezier.h.
References bezier_base< V, T >::r, and bezier_base< V, T >::s.
| void bezier_base< V, T >::set_r | ( | time_type | new_r | ) | [inline] |
Definition at line 130 of file _bezier.h.
References bezier_base< V, T >::r.
Referenced by bezier< V, T >::subdivide().
| void bezier_base< V, T >::set_s | ( | time_type | new_s | ) | [inline] |
Definition at line 131 of file _bezier.h.
References bezier_base< V, T >::s.
Referenced by bezier< V, T >::subdivide().
| const time_type& bezier_base< V, T >::get_r | ( | ) | const [inline] |
Definition at line 132 of file _bezier.h.
References bezier_base< V, T >::r.
Referenced by bezier< V, T >::evaluate(), bezier< V, T >::length(), and bezier< V, T >::subdivide().
| const time_type& bezier_base< V, T >::get_s | ( | ) | const [inline] |
Definition at line 133 of file _bezier.h.
References bezier_base< V, T >::s.
Referenced by bezier< V, T >::length(), and bezier< V, T >::subdivide().
| time_type bezier_base< V, T >::get_dt | ( | ) | const [inline] |
Definition at line 134 of file _bezier.h.
References bezier_base< V, T >::r, and bezier_base< V, T >::s.
Referenced by bezier< V, T >::evaluate(), and bezier< V, T >::subdivide().
| bool bezier_base< V, T >::intersect_hull | ( | const bezier_base< value_type, time_type > & | x | ) | const [inline] |
| time_type bezier_base< V, T >::intersect | ( | const bezier_base< value_type, time_type > & | x, | |
| time_type | near = 0.0 | |||
| ) | const [inline] |
Bezier curve intersection function.
Calculates the time of intersection for the calling curve.
I still have not figured out a good generic method of doing this for a bi-infinite cubic bezier curve calculated with the DeCasteljau algorithm.
One method, although it does not work for the entire bi-infinite curve, is to iteratively intersect the hulls. However, we would only detect intersections that occur between R and S.
It is entirely possible that a new construct similar to the affine combination function will be necessary for this to work properly.
For now, this function is BROKEN. (although it works for the floating-point specializations, using newton's method)
| value_type& bezier_base< V, T >::operator[] | ( | int | i | ) | [inline] |
Definition at line 213 of file _bezier.h.
References bezier_base< V, T >::a.
Referenced by bezier< V, T >::find_closest(), and hermite< V, T >::sync().
| const value_type& bezier_base< V, T >::operator[] | ( | int | i | ) | const [inline] |
value_type bezier_base< V, T >::a [private] |
Definition at line 76 of file _bezier.h.
Referenced by bezier< V, T >::ControlPolygonFlatEnough(), bezier< V, T >::evaluate(), bezier_base< V, T >::operator()(), bezier_base< double, float >::operator[](), bezier_base< float, float >::operator[](), bezier_base< V, T >::operator[](), bezier< V, T >::subdivide(), bezier_base< double, float >::sync(), and bezier_base< float, float >::sync().
value_type bezier_base< V, T >::b [private] |
Definition at line 76 of file _bezier.h.
Referenced by bezier< V, T >::ControlPolygonFlatEnough(), bezier< V, T >::evaluate(), bezier_base< V, T >::operator()(), bezier< V, T >::subdivide(), bezier_base< double, float >::sync(), and bezier_base< float, float >::sync().
value_type bezier_base< V, T >::c [private] |
Definition at line 76 of file _bezier.h.
Referenced by bezier< V, T >::ControlPolygonFlatEnough(), bezier< V, T >::ConvertToBezierForm(), bezier< V, T >::evaluate(), bezier_base< V, T >::operator()(), bezier< V, T >::subdivide(), bezier_base< double, float >::sync(), and bezier_base< float, float >::sync().
value_type bezier_base< V, T >::d [private] |
Definition at line 76 of file _bezier.h.
Referenced by bezier< V, T >::ConvertToBezierForm(), bezier< V, T >::evaluate(), bezier_base< V, T >::operator()(), bezier< V, T >::subdivide(), bezier_base< double, float >::sync(), and bezier_base< float, float >::sync().
time_type bezier_base< V, T >::r [private] |
Definition at line 77 of file _bezier.h.
Referenced by bezier< V, T >::find_closest(), bezier_base< double, float >::get_dt(), bezier_base< float, float >::get_dt(), bezier_base< V, T >::get_dt(), bezier_base< double, float >::get_r(), bezier_base< float, float >::get_r(), bezier_base< V, T >::get_r(), bezier_base< double, float >::intersect(), bezier_base< float, float >::intersect(), bezier_base< double, float >::operator()(), bezier_base< float, float >::operator()(), bezier_base< V, T >::operator()(), bezier_base< double, float >::set_r(), bezier_base< float, float >::set_r(), bezier_base< V, T >::set_r(), bezier_base< double, float >::set_rs(), bezier_base< float, float >::set_rs(), bezier_base< V, T >::set_rs(), bezier_base< double, float >::set_s(), and bezier_base< float, float >::set_s().
time_type bezier_base< V, T >::s [private] |
Definition at line 77 of file _bezier.h.
Referenced by bezier< V, T >::find_closest(), bezier_base< double, float >::get_dt(), bezier_base< float, float >::get_dt(), bezier_base< V, T >::get_dt(), bezier_base< double, float >::get_s(), bezier_base< float, float >::get_s(), bezier_base< V, T >::get_s(), bezier_base< double, float >::intersect(), bezier_base< float, float >::intersect(), bezier_base< V, T >::operator()(), bezier_base< double, float >::set_r(), bezier_base< float, float >::set_r(), bezier_base< double, float >::set_rs(), bezier_base< float, float >::set_rs(), bezier_base< V, T >::set_rs(), bezier_base< double, float >::set_s(), bezier_base< float, float >::set_s(), and bezier_base< V, T >::set_s().
affine_combo<value_type,time_type> bezier_base< V, T >::affine_func [protected] |
Definition at line 80 of file _bezier.h.
Referenced by bezier< V, T >::evaluate(), bezier_base< V, T >::operator()(), and bezier< V, T >::subdivide().
1.5.2