您是第: 个访问我网站的人!
站内搜索:
浏览信息 您当前的位置:首页 >> 浏览信息
贝塞尔曲线通用算法
【字体: 】   【时间:2019-01-13】  【作者:不學無數】  【关 闭】  【打 印
////////////////////////////////////////////////////////////////////////////////
    /// <summary>贝塞尔曲线通用算法</summary>
    /// <param>    
    /// @<- _control_pts 确定贝塞尔曲线的控制点集合
    /// @<- _density 密度值(0~1)
    /// @->_bezier 获取的贝塞尔曲线
    /// return: 形点数
    /// </param>
    ////////////////////////////////////////////////////////////////////////////////
    static int bezier( const vector< PointType >& _control_pts, double _density, vector< PointType>& _bezier )
    {
        int n = _control_pts.size() - 1 ;
        if ( n < 2)
        {
            return 0;
        }
        for ( double t = 0.0; t < 1.0; t+= _density )
        {
            PointType pt;
            pt.m_x = 0;
            pt.m_y = 0;

            for ( int i = 0; i <= n; i++ )
            {
                int fac_para = fac( n ) / ( fac( i) * fac( n - i ) );
                XYType x = _control_pts[i].m_x;
                XYType y = _control_pts[i].m_y;
                pt.m_x += fac_para * x * pow( 1-t, n - i ) * pow( t, i );
                pt.m_y += fac_para * y * pow( 1- t, n-i ) * pow( t, i );
            }
            _bezier.push_back( pt );
        }
        _bezier.push_back( *_control_pts.rbegin() );
        return _bezier.size();
    }
};

关闭页面】【页面顶部
本站所有资源未经许可不得转载复制,违者必究。
© Copyright 2020-2025 www.yuzhilin.com.cn All Right Reaserved. 不学无数之家 拥有所有版权
地址:中国·光谷 E-mail:zhilinyu@163.com  鄂ICP备20001861号 技术支持:不学无数之家