`
阅读更多

http://bbs.9ria.com/viewthread.php?tid=103262&extra=page%3D1%26amp%3Borderby%3Ddateline%26amp%3Bfilter%3D2592000

 

最近做的项目要用到曲线方程,从c++扒出来的 曲线方程 里面 还有优化的地方 要用的朋友自己优化 去。  berzier.swf (1.98 KB) 

  1. /********************************
  2. * 项  目:Bezier
  3. * 包  名:
  4. 文件名:Bezier.as
  5. * 功  能:
  6. * 创建者:rui
  7. * 修改者:
  8. * 修改目的: 
  9. * 创建日期:2011-11-82010-11-15
  10. ********************************/
  11. package 
  12. {
  13.         import flash.geom.Point;
  14.         
  15.         public class Bezi
  16.         {
  17.                 public function Bezi()
  18.                 {
  19.                 }                
  20.                 /**
  21.                  * 在贝尔曲线上的点 
  22.                  * @param cp 对应的四个控制点
  23.                  * @param t         t為參數值,0 <= t <= 1
  24.                  * @return 
  25.                  * 
  26.                  */                
  27.                 private static function pointOnCubicBezier(cp:Vector.<Point>, t:Number ):Point
  28.                 {
  29.                         var  ax:Number, bx:Number, cx:Number;
  30.                         var  ay:Number, by:Number, cy:Number;
  31.                         var  tSquared:Number, tCubed:Number;
  32.                         var  result:Point = new Point();;
  33.                         
  34.                         // 计算对应的多项式系数点
  35.                         cx = 3.0 * (cp[1].x - cp[0].x);
  36.                         bx = 3.0 * (cp[2].x - cp[1].x) - cx;
  37.                         ax = cp[3].x - cp[0].x - cx - bx;
  38.                         
  39.                         cy = 3.0 * (cp[1].y - cp[0].y);
  40.                         by = 3.0 * (cp[2].y - cp[1].y) - cy;
  41.                         ay = cp[3].y - cp[0].y - cy - by;
  42.                         
  43.                         //对应参数t 对应的曲线点
  44.                         tSquared = t * t;
  45.                         tCubed = tSquared * t;
  46.                         
  47.                         result.x = (ax * tCubed) + (bx * tSquared) + (cx * t) + cp[0].x;
  48.                         result.y = (ay * tCubed) + (by * tSquared) + (cy * t) + cp[0].y;
  49.                         
  50.                         return result;
  51.                 }
  52.                 /**
  53.                  * 生成 贝尔曲线的对应 point
  54.                  * @param cp 生成曲线的对应的四个贝尔曲线控制点
  55.                  * @param pointSize 要生成多少个点
  56.                  * @return 
  57.                  * 
  58.                  */                
  59.                 public static function computeBezier(cp:Vector.<Point>,pointSize:int=10):Vector.<Point>
  60.                 {
  61.                         var   dt:Number;
  62.                         var   i:int;
  63.                         var   curve:Vector.<Point> = new Vector.<Point>();
  64.                         dt = 1.0 /(pointSize-1);
  65.                         for( i = 0; i < pointSize; i++)
  66.                         {                        
  67.                                 curve.push(pointOnCubicBezier(cp,dt*Number(i)));
  68.                         }
  69.                         return curve;
  70.                 }
  71.         }
  72. }
复制代码
分享到:
评论

相关推荐

    二次贝尔曲线实现的购物车轨迹曲线

    本项目以“二次贝尔曲线实现的购物车轨迹曲线”为主题,结合饿了么点餐页面的设计思路,利用二次贝塞尔曲线公式来创建动画效果,实现了左右两个RecyclerView的联动功能。以下将详细介绍这一技术实现的关键知识点。 ...

    三次Bezier曲线原理及实现代码

    ### 三次Bezier曲线原理及实现代码 #### 一、Bezier曲线简介 Bezier曲线是一种在计算机图形学中广泛应用的参数曲线,被广泛应用于图形设计、字体渲染以及计算机辅助设计等领域。这种曲线是由法国工程师皮埃尔·...

    易语言-贝尔曲线,计算模拟两点坐标间的曲线移动轨迹

    例如,一个二阶贝尔曲线(也称为二次曲线)的公式如下: \[ B(t) = (1-t)^2P_0 + 2(1-t)tP_1 + t^2P_2 \] 其中,\( P_0 \) 和 \( P_2 \) 是端点,\( P_1 \) 是中间的控制点,\( t \) 是参数,通常取值在0到1之间。...

    PS“贝赛尔曲线工具”详解

    PS“贝赛尔曲线工具”详解,详细讲解photoshop中钢笔工具的使用,学会如何制作路径。

    使用delphi演示贝塞尔曲线的绘制

    接着,可以调用Graphics.TPath.AddBezier方法,传入起点、两个控制点和终点的坐标,来添加一条三次贝塞尔曲线。最后,使用Graphics.TGraphics.DrawPath方法,指定画笔和颜色,将路径绘制到窗体上。 以下是一个简单...

    vc++实现贝塞尔曲线的绘制

    3. **三次贝塞尔曲线**:包含四个点,起点、终点以及两个控制点,可以形成更复杂的曲线形状,这是最常见的一种贝塞尔曲线类型。 4. **四次及以上贝塞尔曲线**:随着控制点的增加,可以创建更为复杂的曲线,但计算...

    贝尔曲线,计算模拟两点坐标间的曲线移动轨迹-易语言

    2. **二次贝尔曲线(二阶)**:由三个控制点P0, P1, P2定义,它在P0和P2之间形成一个平滑的曲线,P1点影响曲线的形状。 **二、贝尔曲线的数学表示** 贝尔曲线的数学表达式基于贝塞尔多项式,对于n阶曲线,其参数...

    4种气象要素重现期计算方法matlab代码

    例如,我们可能会说某地每50年出现一次特大洪水,这里的“50年”就是洪水的重现期。本资料包提供了四种不同的MATLAB代码,帮助用户进行气象要素重现期的计算。以下是这四种方法的详细介绍: 1. 皮尔逊III型分布(P3...

    最大降水量多年一遇计算方法及Matlab实现.pdf

    例如,当谈论“十年一遇”的暴雨时,意味着平均每十年会遭遇一次这样的暴雨。这个概念在城市建设和灾害防御规划中具有重要的社会和经济意义,能够帮助相关部门对可能出现的极端天气事件做出评估和准备。 2. 极值...

    ghostcat源码(附带实例)

    -二次贝尔法曲线,按长度切割和计算法线,光滑曲线拟合(过点或者不过点) -SWF解析器,从ByteArray中播放声音,直接控制AVM1的动画类容。 -丰富的文本缓动,部分文字Filter,渐变色文字,字符差异对比,ANSI转码,...

    Subdivision for Modeling and Animation

    本次课程“Subdivision for Modeling and Animation”是由SIGGRAPH组织的一次高级研讨会,旨在深入探讨表面细分算法及其在计算机图形学中的应用。该研讨会由来自纽约大学的Denis Zorin教授、加州理工学院的Peter Sch...

    3-技术、成本与直升机发展-杨开天.doc

    例如,贝尔直升机公司研发的贝尔209武装直升机,其成功不仅在于技术上的突破,更在于对市场需求的精准把握,从而开启了武装直升机的新纪元。在这一阶段,直升机的多样化功能得到开发,如民用航空、医疗救援、警用...

    《实用数学手册》作者:沈永欢 梁在中 许履瑚 蔡蒨蒨 出版时间: 1992年

    4·4 二次曲线 4·5 常用的平面曲线 4·6 平面、空间中的直线 4·7 二次曲面 第五章 线性代数学 5·1 行列式 5·2 矩阵 5·3 线性方程组 5·4 线性空间 5·5 线性变换 5·6 若尔当标准形 5·7 二次型 5·8 欧几里得...

    基于C语言模拟计算的粒子扰动机制分析.pdf

    - 第三步,重复上述过程K次,并统计不同入洞总数N对应的出现次数Y,通过这一统计分析过程得到目标粒子在干扰作用下的分布情况。 3. 干扰粒子对目标粒子分布影响的分析: 研究结果表明,当干扰粒子对目标粒子的...

    整形美容医院客户回访体系.doc

    三、宏脉回访曲线设置: 科室天数目的现场咨询上门成交小手术术后1提醒顾客来院换药3关心问候,告知顾客术后肿胀30关心问候90了解效果大手术术后3关心问候,告知顾客术后肿胀15问候30关心问候90了解效果120关心问候...

    java基础(1-3章,后续还未整理,随时更新)

    - **跨平台性:** Java的一个重要特点是其“一次编写,到处运行”的理念,即编写的Java程序无需修改即可在任何支持Java的平台上运行。 - **面向对象:** Java是一种纯面向对象的语言,支持封装、继承、多态等特性。 ...

    the fourier transform and application

    #### 3.4 贝尔曲线的钟声 - **高斯函数**:高斯函数作为典型卷积函数的介绍。 - **高斯卷积**:高斯函数与其他函数卷积的应用案例。 #### 3.5 附录:高斯积分的计算 - **积分方法**:计算高斯积分的具体步骤。 - ...

    java、c、c、vc、vc、vb的区别与联系.docx

    Java 设计的初衷是为了实现“一次编写,到处运行”的特性,这得益于其强大的跨平台能力。Java 分为三个主要平台: - **Java SE (Java Standard Edition)**:提供了一个基础平台,包括核心类库和支持工具。 - **Java ...

Global site tag (gtag.js) - Google Analytics