`
CrackRen
  • 浏览: 170394 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Bezier曲线简单实现

 
阅读更多

关键的公式,此公式不能画出匀速曲线

		// completedPercent为当前所想得到位置的百分比0.0f-1.0f
		// 根据贝塞尔曲线函数,求得取得此时的x,y坐标
		pt.x = (1-completedPercent)*(1-completedPercent)*x1 +2*(1-completedPercent)*completedPercent*x2 + completedPercent*completedPercent*x3;
		pt.y = (1-completedPercent)*(1-completedPercent)*y1 +2*(1-completedPercent)*completedPercent*y2 + completedPercent*completedPercent*y3;

 

实例:

void CTrackGetterView::DrawBezier(CDC *pDC)
{
	//CTrackGetterDoc* pDoc = GetDocument();
	//CRect rect;
	int x1 = 18;	// 点1
	int y1 = 446;

	int x2 = 144;	// 点2
	int y2 = 270;

	int x3 = 284;	// 点3
	int y3 = 382;

	POINT pt;
	COLORREF rbg = RGB(255, 0, 0);

	for (float completedPercent=0.0f; completedPercent<=1.0f; completedPercent+=0.01f)
	{
		//根据贝塞尔曲线函数,求得取得此时的x,y坐标
		pt.x = (1-completedPercent)*(1-completedPercent)*x1 +2*(1-completedPercent)*completedPercent*x2 + completedPercent*completedPercent*x3;
		pt.y = (1-completedPercent)*(1-completedPercent)*y1 +2*(1-completedPercent)*completedPercent*y2 + completedPercent*completedPercent*y3;
			
		pDC->SetPixel(pt, rbg);
	}
	
}

 如图:


 

 

 

  • 大小: 4.7 KB
分享到:
评论

相关推荐

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

    本文介绍了Bezier曲线的基本原理,包括线性、二次和三次Bezier曲线的定义及其参数化表示方式,并给出了一个简单的C++实现示例。Bezier曲线因其平滑性和易于控制的特点,在图形设计和计算机图形学中具有广泛的应用。

    Bezier曲线(任意次数)程序实现(可用鼠标选点并拖动控制点实时改变Bezier曲线形状)

    Bezier曲线的性质使其非常适合于动画和图形设计,因为它允许通过简单地移动控制点来直观地调整曲线的形状。 该程序实现了Bezier曲线的任意次数级,这意味着它不仅可以处理二阶(线性)和三阶(二次)Bezier曲线,还...

    Bezier曲线MFC实现源代码

    Bezier曲线由一系列控制点定义,其中最简单的是二阶(线性)Bezier曲线,由两个控制点决定。更复杂的Bezier曲线,如三阶或四阶,可以通过将多个二阶Bezier曲线进行线性组合来构建。Bezier曲线的关键在于Bernstein...

    二次Bezier曲线源代码

    这可能涉及到Bezier曲线的递归算法,如De Casteljau算法,它可以将复杂的Bezier曲线分解为一系列简单的线段,从而方便计算和绘制。 总结来说,这个项目涵盖了计算机图形学中的Bezier曲线概念、图形用户界面编程、...

    绘制bezier曲线

    VB(Visual Basic)是微软公司推出的一种编程语言,它允许开发者利用其简单易用的特性来实现各种图形绘制功能,包括绘制Bezier曲线。 Bezier曲线是由法国工程师Pierre Bezier于1962年提出的,它是一种基于控制点的...

    图形学各种曲线--Bezier曲线,B-样条曲线,Hermit曲线

    本文将详细探讨三种常见的曲线类型:Bezier曲线、B-样条(B-Spline)曲线以及Hermit曲线,它们在C++编程环境中的实现方法。 **Bezier曲线** 是一种基于控制点的参数化曲线,最早由法国工程师Pierre Bézier引入。在...

    MFC bezier曲线

    本实验是基于C++6.0编程环境,利用Microsoft Foundation Classes (MFC) 类库实现的一个单界面程序,用于展示Bezier曲线的绘制。 Bezier曲线的基本概念源于法国工程师Pierre Bézier,它通过一组控制点来定义。这些...

    Bezier曲线与B样条曲线

    然而,Bezier曲线的计算效率通常更高,且其数学结构简单,易于理解和实现。 在实际应用中,选择Bezier曲线还是B样条曲线取决于具体需求。例如,在需要快速绘制简单曲线或需要精确控制单个点时,Bezier曲线可能是更...

    n次Bezier曲线. c

    递归细分的过程中,每一段Bezier曲线都可以进一步细分为两段更小的Bezier曲线,直到达到足够简单的程度以便直接绘制。 #### Bernstein多项式 Bernstein多项式是构成Bezier曲线的基础。对于n次Bezier曲线,...

    用vc++实现Bezier曲线

    最简单的Bezier曲线是一阶(线性)的,由两个控制点决定;二阶(二次)Bezier曲线由三个控制点决定,以此类推。对于高阶曲线,可以通过分解成多个低阶曲线来计算和绘制。 在描述中提到,用户需要输入曲线的点数,这...

    Bezier_unity3d_Bezier曲线_

    二阶Bezier曲线是最简单的形式,它由三个点决定:起点、终点以及一个控制点。通过调整控制点的位置,可以改变曲线的弯曲程度和方向。 在BezierUtils.cs文件中,通常会包含以下内容: 1. **BezierCurve类**:这个类...

    Bezier曲线的绘制程序

    最简单的情况是一阶(线性)Bezier曲线,由两个控制点定义;二阶(二次)Bezier曲线则需要三个控制点,以此类推。 绘制Bezier曲线通常涉及De Casteljau算法或直接使用Bézier多项式公式。De Casteljau算法是一种...

    de Casteljau算法绘制Bezier曲线

    在这里,我们将深入探讨de Casteljau算法及其在绘制Bezier曲线中的应用。 首先,让我们理解什么是贝塞尔曲线。贝塞尔曲线由一组控制点定义,其中最简单的是二阶(直线)和三阶(三次)贝塞尔曲线。对于n阶曲线,...

    基于QT绘制可交互的Bezier曲线(仅供学习)

    本项目是基于QT框架实现的一个简单版本,允许用户交互地绘制Bezier曲线。QT是一个跨平台的C++库,提供了丰富的图形用户界面(GUI)开发功能。 Bezier曲线的基本概念源于法国工程师Pierre Bézier,它通过一组控制点...

    计算机图形学 Bezier曲线

    一条简单的Bezier曲线由至少两个控制点构成,对于n个控制点的Bezier曲线,我们称之为n阶Bezier曲线。对于二阶Bezier曲线(也称为二次Bezier曲线),其数学表达式是通过线性插值来计算的,公式为: B(t) = (1-t)^2 *...

    Bezier曲线的实现

    最简单的Bezier曲线是一阶贝塞尔曲线,仅包含两个控制点,而更复杂的曲线可能包含四个或更多的控制点。 4. **OpenGL顶点着色器**:在OpenGL中,我们通常会在顶点着色器中计算Bezier曲线上的点。顶点着色器是一个可...

    vc++实现的bezier曲线绘制和分割程序

    在给定的“vc++实现的bezier曲线绘制和分割程序”中,我们可以深入探讨以下几个关键知识点: 1. **Bezier曲线的基本概念**: Bezier曲线由法国工程师Pierre Bézier在1962年提出,它是一种参数化的曲线,通过控制...

    bezier曲线的绘制和b样条曲线的绘制

    绘制Bezier曲线通常采用De Casteljau算法,这是一种逐级分解的过程,将曲线分割成更简单的线段,直到得到足够的细分点,然后连接这些点即可画出曲线。该算法的优点是易于实现,并且避免了复杂数值计算。 接着,我们...

    VB实现Bezier曲线.rar

    在二维空间中,一个简单的Bezier曲线通常涉及四个控制点,即起点、终点以及两个引导点。通过改变这些控制点的位置,我们可以自由地调整曲线的形状和路径。 deCasteljau算法: deCasteljau算法是计算Bezier曲线的一...

Global site tag (gtag.js) - Google Analytics