第三次作业 三次Bezier曲线的绘制
- 格式:doc
- 大小:154.00 KB
- 文档页数:4
计算机科学与通信工程学院实验报告课程计算机图形学实验题目曲线拟合学生姓名学号专业班级指导教师日期成绩评定表曲线拟合1. 实验内容1. 绘制三次Bezier曲线(1)给定四个已知点P1—P4,以此作为控制顶点绘制一段三次Bezier曲线。
(2)给定四个已知点P1—P4,以此作为曲线上的点绘制一段三次Bezier曲线。
2. 绘制三次B样条曲线给定六个已知点P1—P6,以此作为控制顶点绘制一条三次B样条曲线。
2. 实验环境软硬件运行环境:Windows XP开发工具:visual studio 20083. 问题分析1. 绘制三次Bezier曲线Bezier曲线是用N+1个顶点(控制点)所构成的N根折线来定义一根N阶曲线。
本次实验中的三次Bezier曲线有4个顶点,设它们分别为P0,P1,P2,P3,那么对于曲线上各个点Pi(x,y)满足下列关系:P(t)=[(-P0+3P1-3P2+3P3)t3+(3P0-6P1+3P2)t2+(-3P0+3P2)t+(P0+4P1+P2)]/6X(t)=[(-X0+3X1-3X2+3X3)t3+(3X0-6X1+3X2)t2+(-3X0+3X2)t+(X0+4X1+X2)]/6Y(t)=[(-Y0+3Y1-3Y2+3Y3)t3+(3Y0-6Y1+3Y2)t2+(-3Y0+3Y2)t+(Y0+4Y1+Y2)]/6其中P0、P1、P2、P3为四个已知的点,坐标分别为(X0、Y0)、(X1、Y1)、(X1、Y2) 、(X3、Y3)。
所以只要确定控制点的坐标,该曲线可通过编程即可绘制出来。
2. 绘制三次B样条曲线三次B样条函数绘制曲线的光滑连接条件为:对于6个顶点,取P1、P2、P3、P4 4个顶点绘制在第一段三次样条曲线,再取P2、P3、P4、P5 这4个顶点绘制在第二段三次样条曲线,总计可绘制3段光滑连接的三次样条曲线。
4. 算法设计程序框架//DiamondView.hclass CDiamondView : public CView{ ……。
JS 三次方贝塞尔曲线什么是贝塞尔曲线?贝塞尔曲线是一种数学曲线,由法国数学家皮埃尔·贝塞尔在1962年提出。
它可以用于描述平滑曲线的路径,在计算机图形学中被广泛应用。
贝塞尔曲线的特点是可以通过控制点来调整曲线的形状。
通过改变控制点的位置和数量,我们可以创建出各种不同形状的曲线,包括直线、曲线和复杂的曲线路径。
贝塞尔曲线被广泛应用于计算机图形学、动画和用户界面设计等领域。
三次方贝塞尔曲线三次方贝塞尔曲线是一种由四个控制点定义的贝塞尔曲线。
它被称为三次方是因为它的方程式中包含三次方的项。
三次方贝塞尔曲线的方程式如下:B(t) = (1 - t)^3 * P0 + 3 * (1 - t)^2 * t * P1 + 3 * (1 - t) * t^2 * P2 + t^3 * P3其中,t是一个介于 0 和 1 之间的参数,P0、P1、P2和P3分别是四个控制点的坐标。
这个方程式可以解释为:曲线上的每个点都是由控制点通过一定的权重和参数t 来计算得出的。
如何绘制三次方贝塞尔曲线在 JavaScript 中,我们可以使用 Canvas API 来绘制三次方贝塞尔曲线。
下面是一个简单的示例代码:const canvas = document.getElementById('canvas');const ctx = canvas.getContext('2d');// 设置控制点坐标const P0 = { x: 50, y: 100 };const P1 = { x: 150, y: 50 };const P2 = { x: 250, y: 150 };const P3 = { x: 350, y: 100 };// 绘制贝塞尔曲线ctx.beginPath();ctx.moveTo(P0.x, P0.y);ctx.bezierCurveTo(P1.x, P1.y, P2.x, P2.y, P3.x, P3.y);ctx.stroke();在上面的代码中,我们首先获取了一个canvas元素,并通过getContext方法获取了一个 2D 绘图上下文对象ctx。
练习45 三次贝塞尔曲线一、练习具体要求本例制作二维图形三次贝塞尔曲线。
效果如图45-1所示。
执行本例实例后,将创建一个绘有三次贝塞尔曲线的帧。
本实例的知识点有:Graphics2D 类和Rectangular 类的应用,曲线绘制的方法。
二、程序及注释(1)编程思路: java2中Graphics2D 中绘图的第一步是用setColor(),setFont(),setPointMode ,setXORMODE()之类的方法制定绘图属性,第二步生成一个shape 接口的对象,指定要画的形体,第三步是绘图。
绘制形体是用三个Graphics2D 方法完成的。
Chip()方法将绘图区缩小到指定形体与当前剪接区的交接部分,影响后面的绘图操作。
Draw()方法用当前Stroke 绘制Shape 的外形。
Fill()方法用当前Point 模式填充Shape 。
CubicCurve2D 类生成三次曲线,他与其他曲线类不同,不是描述闭合形体,而是描述曲线。
曲线类用贝塞尔曲线定义曲线上的实际点。
生成曲线后,应用Draw()或Fill()方法,可以把起点和终点看成相连接的,从而得到闭合区域。
(2) 程序实现及注释://ExitableJFrame.javaimport javax.swing.*;public class ExitableJFrame extends JFrame{//构造函数public ExitableJFrame(){}//带窗口标题的构造函数public ExitableJFrame(String title){super(title);}//窗口的初始化本例知识点一句话讲解新学知识编写Graphics2D 类绘制图形使用CubicCurve2D 类绘制图形已学知识使用Graphics 类画屏幕图像使用String 类管理字符串protected void frameInit(){super.frameInit();setDefaultCloseOperation(EXIT_ON_CLOSE);}}//Cubic.javaimport java.awt.*;import java.awt.geom.*;public class Cubic extends ExitableJFrame{//画屏函数public void paint(Graphics g){//实例化Graphics2D类Graphics2D g2d = (Graphics2D)g;g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);//设置颜色g2d.setPaint(Color.blue);g2d.setStroke(new BasicStroke(3));//CubicCurve2DCubicCurve2D cubic = new CubicCurve2D.Float(10,80,60,30,110,130,160,80);g2d.draw(cubic);cubic = new CubicCurve2D.Float(60,205,150,120,20,120,110,205);g2d.fill(cubic);cubic = new CubicCurve2D.Float(160,130,210,30,260,30,310,130);g2d.fill(cubic);cubic = new CubicCurve2D.Float(160,130,260,230,210,230,310,130);g2d.fill(cubic);//设置颜色g.setColor(Color.black);//填充颜色g.fillRect(58,28,5,5);g.fillRect(108,128,5,5);g.fillRect(148,118,5,5);g.fillRect(18,118,5,5);g.fillRect(208,28,5,5);g.fillRect(258,28,5,5);g.fillRect(258,228,5,5);g.fillRect(208,228,5,5);}//主函数public static void main(String args[]){Frame f = new Cubic();f.setTitle("Cubic");f.setSize(350,350);f.show();}}三、练习效果(如图45-1所示)本实例代码编写完毕,分别存盘为:C: j2sdk1.4.0\javaprograms\ ExitableJFrame.java 和Cubic.java。
Bezier曲线原理及实现代码(c++)一、原理:贝塞尔曲线于1962年.由法国工程师皮埃尔·贝塞尔(Pierre Bézier)所广泛发表.他运用贝塞尔曲线来为汽车的主体进行设计。
贝塞尔曲线最初由Paul de Casteljau于1959年运用de Casteljau 算法开发.以稳定数值的方法求出贝塞尔曲线。
线性贝塞尔曲线给定点P0、P1.线性贝塞尔曲线只是一条两点之间的直线。
这条线由下式给出:且其等同于线性插值。
二次方贝塞尔曲线的路径由给定点 P0、P1、P2的函数 B(t) 追踪:。
TrueType字型就运用了以贝塞尔样条组成的二次贝塞尔曲线。
P0、P1、P2、P3四个点在平面或在三维空间中定义了三次方贝塞尔曲线。
曲线起始于 P0走向 P1.并从 P2的方向来到 P3。
一般不会经过 P1或 P2;这两个点只是在那里提供方向资讯。
P0和 P1之间的间距.决定了曲线在转而趋进 P3之前.走向 P2方向的“长度有多长”。
曲线的参数形式为:。
现代的成象系统.如PostScript、Asymptote和Metafont.运用了以贝塞尔样条组成的三次贝塞尔曲线.用来描绘曲线轮廓。
一般化P0、P1、…、P n.其贝塞尔曲线即。
例如:。
如上公式可如下递归表达:用表示由点 P0、P1、…、P n所决定的贝塞尔曲线。
则用平常话来说. 阶贝塞尔曲线之间的插值。
一些关于参数曲线的术语.有即多项式又称作n阶的伯恩斯坦基底多项式.定义 00 = 1。
点 P i称作贝塞尔曲线的控制点。
多边形以带有线的贝塞尔点连接而成.起始于 P0并以 P n 终止.称作贝塞尔多边形(或控制多边形)。
贝塞尔多边形的凸包(convex hull)包含有贝塞尔曲线。
线性贝塞尔曲线函数中的t 会经过由 P0至P1的 B(t) 所描述的曲线。
例如当t=0.25时.B(t) 即一条由点 P0至 P1路径的四分之一处。
就像由 0 至 1 的连续t.B(t) 描述一条由 P0至 P1的直线。
3次贝塞尔曲线算法流程下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。
文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor. I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!1. 确定控制点需要确定 4 个控制点,分别为 P0、P1、P2 和 P3。
作业三:三次Bezier曲线1. 设计要求:1.在程序窗口中建立坐标系2.输入控制点,绘制出三次Bezier曲线3.四个控制点间依次用细线连接4.在程序窗口显示四个控制点的位置并标出2. 设计思路:先在草稿纸上算出三次Bezier曲线的函数表达式: (0≤u≤1)=a×+b×+c×u+d其中a、b、c、d的值为:a=(-) + 3 × - 3 × +b=3× - 6 × + 3 ×c=(-3) × + 3 ×d=将、、、中的(x,y)坐标值分别代入a、b、c、d中得到、、、和、、、则:=×+×+×u+ (1)=×+×+×u+ (2)根据以上结果(1)和(2)编程求得当u取不同值时所得到的点P(u)。
再将各点用线连接起来即可拟合三次Bezier曲。
3. 设计过程:以下是用VB编三次Bezier曲线时的源代码:其中显示四个控制点的思路是将控制点在x和y方向的坐标值都增大1,然后再与控制点用粗实线连接起来。
这样一来在窗口中显示的即为一个较大的实点。
Function drawcs() '此模块为建立坐标系Dim k As IntegerPictDraw.DrawWidth = 1: PictDraw.FontSize = 9 '设置线宽和字体 PictDraw.Line (-400, 0)-(400, 0), RGB(100, 100, 100)PictDraw.Line (0, -300)-(0, 300), RGB(100, 100, 100)For k = (-360) To 360 Step 40PictDraw.Line (k, -5)-(k, 0): PictDraw.CurrentX = k - 20: PictDraw.CurrentY = 5: PictDraw.Print kNext kFor k = (-280) To -40 Step 40PictDraw.Line (5, k)-(0, k): PictDraw.CurrentX = -40: PictDraw.CurrentY = k - 10: PictDraw.Print (-1) * kNext kFor k = (40) To 280 Step 40PictDraw.Line (5, k)-(0, k): PictDraw.CurrentX = -40: PictDraw.CurrentY = k - 10: PictDraw.Print (-1) * kNext kEnd FunctionPrivate Sub Form_Load()PictDraw.AutoRedraw = TruePictDraw.ScaleWidth = 800PictDraw.ScaleHeight = 600Text1.Text = -300: Text2.Text = -250: Text3.Text = 300: Text4.Text = -250Text5.Text = -300: Text6.Text = 250: Text7.Text = 300: Text8.Text = 250 '作为初始值,便于测试drawcsEnd SubPrivate Sub cmdCancle_Click()PictDraw.Clsdrawcs '清除屏幕后,重建坐标系End SubPrivate Sub delet_Click() '此模块为清除输入框中的值 Text1.Text = ""Text2.Text = ""Text3.Text = ""Text4.Text = ""Text5.Text = ""Text6.Text = ""Text7.Text = ""Text8.Text = ""End SubPrivate Sub cmdDraw_Click() '此模块为画三次Bezier曲线Dim px(4) As Double '定义控制点的x坐标的数组Dim py(4) As Double '定义控制点的y坐标的数组Dim a1, b1, c1, d1 As Double '定义x系数Dim a2, b2, c2, d2 As Double '定义y系数Dim x, y, u As Double '定义曲线中的自变量u和变量x,y Dim i As IntegerIf (Not IsNumeric(Text1) Or Not IsNumeric(Text2) Or Not IsNumeric(Text3) Or Not IsNumeric(Text4) _Or Not IsNumeric(Text5) Or Not IsNumeric(Text6) Or Not IsNumeric(Text7) Or Not IsNumeric(Text8)) ThenText1.Text = "": Text2.Text = ""Text3.Text = "": Text4.Text = ""Text5.Text = "": Text6.Text = ""Text7.Text = "": Text8.Text = ""Text1.SetFocus '判断输入框中的字符是否为数字,如果为数字执行else开始画图Elsepx(0) = Text1.Text: py(0) = Text2.Textpx(1) = Text3.Text: py(1) = Text4.Textpx(2) = Text5.Text: py(2) = Text6.Textpx(3) = Text7.Text: py(3) = Text8.TextPictDraw.FontSize = 18 '设置字体,为显示输入的四个点设置字体大小PictDraw.CurrentX = px(0): PictDraw.CurrentY = (-1) * py(0): PictDraw.Print "P"; 0For i = 0 To 2PictDraw.DrawWidth = 1PictDraw.Line (px(i), (-1) * py(i))-(px(i + 1), (-1) * py(i + 1)), RGB(0, 0, 255): PictDraw.Print "P"; i + 1Next iFor i = 0 To 3PictDraw.DrawWidth = 7PictDraw.Line (px(i), (-1) * py(i))-(px(i) + 1, (-1) * py(i) - 1)Next ia1 = -px(0) + 3 * px(1) - 3 * px(2) + px(3) '计算x和y的参数 b1 = 3 * px(0) - 6 * px(1) + 3 * px(2)c1 = -3 * px(0) + 3 * px(1)d1 = px(0)a2 = -py(0) + 3 * py(1) - 3 * py(2) + py(3)b2 = 3 * py(0) - 6 * py(1) + 3 * py(2)c2 = -3 * py(0) + 3 * py(1)d2 = py(0)For u = 0 To 1 Step 0.001 '每当u增加0.001求一次x和y x = a1 * u * u * u + b1 * u * u + c1 * u + d1 '求x的值y = (-1) * (a2 * u * u * u + b2 * u * u + c2 * u + d2) '求y的值 If u = 0 ThenPictDraw.CurrentX = x '设置画线起点PictDraw.CurrentY = yElsePictDraw.DrawWidth = 2PictDraw.Line -(x, y), RGB(255, 0, 0) '连点成线End IfNext uEnd IfEnd SubPrivate Sub cmdEnd_Click() '退出窗口程序EndEnd Sub4. 设计截图:图四.三次Bezier曲线截图。
机械CAD大作业班级机械11007班学号201006498姓名郑准第一次作业第二次作业第三次作业总分目录第一次作业线图的程序化处理解题思路 (3)程序代码............................................................................................ 错误!未定义书签。
运行结果截图 ................................................................................... 错误!未定义书签。
小结..................................................................................................... 错误!未定义书签。
第二次作业轴承数据库的建立解题思路 (11)运行结果截图 (11)小结 (15)第三次作业三次BEZIER曲线的绘制解题思路............................................................................................ 错误!未定义书签。
程序代码............................................................................................ 错误!未定义书签。
运行结果截图 ................................................................................... 错误!未定义书签。
小结..................................................................................................... 错误!未定义书签。
集美大学计算机工程学院实验报告课程名称计算机图形学教程实验名称实验五、编程生成“三次贝塞尔”曲线实验类型设计型姓名学号日期12月12日地点成绩教师一、实验目的:一方面,让学生对自由曲线的生成算法有更深入的理解,特别是对于曲线的逼近,能够通过实验编程来验证书上所提供的算法思想:另一方面,在图形程序设计方法(如设计各种各样的图形)、绘图函数的使用以及C和C++语言编程环境、程序的调试和测试方面受到比较系统和严格的训练。
二、实验内容:运用所学的三次贝塞尔曲线生成的算法,根据以下数据点[x, y]:[50, 100] [80, 230] [100, 270] [140, 160] [180, 50] [240, 65] [270, 120] [330, 230] [380, 230] [430, 150]计算出结果,并实现三段贝塞尔在屏幕上显示的功能三、实验要求:(1)3段三次贝塞尔曲线在衔接点上要连续,曲线整体效果要光滑。
(2)整个图形轮廓要清晰,色彩要分明四、实验环境:1.PC,CPU:P4 2.0GHz以上,内存:512M,硬盘:40GB以上;2.操作系统:Microsoft Windows 2000 /2003/XP;3.软件:VC或JAVA等。
五、实验内容及完成情况:#include "graphics.h"#include "conio.h"#include "stdio.h"typedef struct{double x,y;} DPOINT; //定义结构体class Bezier //定义Bezier类{private:DPOINT* bP;int m_maxIndex;void drawFrame();void drawCurve();void drawCurve(int p0,int p1,int p2,int p3);public:Bezier(DPOINT* p,int len); //定义构造函数void draw();};Bezier::Bezier(DPOINT* p,int len) //构造函数的实现{this ->bP=p;m_maxIndex=len-1;}void Bezier::draw() //通过公有函数调用私有函数{drawFrame();drawCurve();}void Bezier::drawFrame() //其功能是绘制出多边形和各个端点{setcolor(12);for(int i=0;i<m_maxIndex;i++){line( bP[i].x, bP[i].y, bP[i+1].x, bP[i+1].y ); //绘制多边形circle(bP[i].x, bP[i].y,5); //绘制各个端点}circle(bP[m_maxIndex].x,bP[m_maxIndex].y,5);}void Bezier::drawCurve() //实现多段Bezier曲线绘制的功能{for(int i=0;i<=m_maxIndex-3;i+=3){drawCurve(i,i+1,i+2,i+3);}}void Bezier::drawCurve(int p0,int p1,int p2,int p3) //实现绘制某一段Bezier曲线的功能{double tmpx=0.0;double tmpy=0.0;double t=0.0;for(;t<=1.0;t+=0.001){tmpx=(-bP[p0].x+3*bP[p1].x-3*bP[p2].x+bP[p3].x)*t*t* t+(3*bP[p0].x-6*bP[p1].x+3*bP[p2].x)*t*t+(-3*bP[p0].x+ 3*bP[p1].x)*t+bP[p0].x;tmpy=(-bP[p0].y+3*bP[p1].y-3*bP[p2].y+bP[p3].y)*t*t* t+(3*bP[p0].y-6*bP[p1].y+3*bP[p2].y)*t*t+(-3*bP[p0].y+ 3*bP[p1].y)*t+bP[p0].y;putpixel(tmpx,tmpy,3);}}void main() //主函数的实现{int graphdriver=DETECT,graphmode;initgraph(&graphdriver,&graphmode,"E:\\tc3\\bgi");setbkcolor(0);outtextxy(10,20,"n\n\n\n\n\n\ jisuan1013 2010810070 chengaowei");DPOINT* p;p=new DPOINT[10];p[0].x=50.0;p[0].y=100.0;p[1].x=80.0;p[1].y=230.0;p[2].x=100.0;p[2].y=270.0;p[3].x=140.0;p[3].y=160.0;p[4].x=180.0;p[4].y=50.0;p[5].x=240.0;p[5].y=65.0;p[6].x=270.0;p[6].y=120.0;p[7].x=330.0;p[7].y=230.0;p[8].x=380.0;p[8].y=230.0;p[9].x=430.0;p[9].y=150.0;Bezier bzr(p,10);bzr.draw();delete p;getch();closegraph();}运行结果:六、实验总结:通过这次实验,让我对自由曲线的生成算法有更深入的理解,特别是对于曲线的逼近,能够通过实验编程来验证书上所提供的算法思想,在图形程序设计方法(如设计各种各样的图形)、绘图函数的使用以及C和C++语言编程环境、程序的调试和测试方面受到比较系统和严格的训练。
第三次作业三次Bezier曲线的绘制一.解题思路:
Bezier曲线是用N+1个顶点(控制点)所构成的N根折线来定义一根N阶曲线。
本次作业中的三次Bezier曲线有4个顶点,设它们分别为P0,P1,P2,P3,那么对于曲线上各个点Pi(x,y)满足下列关系:
x=x0*1-u)*(1-u)*(1-u)+x1 *3*u*(1-u)*(1-u)+x2 *3*u*u*(1-u)+x3 *t*t*t
y=y0*(1-u)*(1-u)*(1-t)+y1*3*u*(1-u)*(1-u)+y2*3*u*u*(1-u) +y3 *u*u*u
所以只要确定控制点的坐标,该曲线可通过编程即可绘制出来。
本题取的初始控制点为:p0(-600,100)、p1(-300,400)、p2(300,600)、p3(600,100)。
还可以通过输入不同的控制点画出不同的三次Bezier曲线。
程序中有绘制曲线,清空,清屏,退出四个按钮,其中点击绘制曲线按钮可根据控制点绘制出相应的曲线;点击清空按钮则可以将已绘制的曲线清除;点击清屏按钮可以将输入文本框中的数据清除,以方便输入新的数据;点击退出按钮则退出程序。
二.程序代码
Function f()
Picture1.FontSize = 9
Picture1.Scale (-900, 1000)-(900, -1000)
Picture1.Line (-800, 0)-(800, 0)
Picture1.Line (0, 800)-(0, -800)
For i = -7 To 7
Picture1.Line (100 * i, 0)-(100 * i, 20)
Picture1.CurrentX = i * 100 - 50: Picture1.CurrentY = -5: Picture1.Print i * 100 Next i
For i = -7 To -1
Picture1.Line (0, 100 * i)-(20, 100 * i)
Picture1.CurrentX = -100: Picture1.CurrentY = 100 * i + 20: Picture1.Print i * 100 Next i
For i = 1 To 7
Picture1.Line (0, 100 * i)-(20, 100 * i)
Picture1.CurrentX = -100: Picture1.CurrentY = 100 * i + 20: Picture1.Print i * 100 Next i
End Function
Private Sub Form_Load()
Picture1.AutoRedraw = True
Picture1.ScaleWidth = 900
Picture1.ScaleHeight = 900
f
Text1.Text = -600: Text2.Text = 100: Text3.Text = -300: Text4.Text = 400
Text5.Text = 300: Text6.Text = 600: Text7.Text = 600: Text8.Text = 100
End Sub
Private Sub command1_Click()
x0 = Text1.Text: y0 = Text2.Text
X1 = Text3.Text: Y1 = Text4.Text
X2 = Text5.Text: Y2 = Text6.Text
X3 = Text7.Text: Y3 = Text8.Text
Picture1.FontSize = 18
Picture1.CurrentX = 800: Picture1.CurrentY = -5: Picture1.Print "X"
Picture1.CurrentX = 10: Picture1.CurrentY = 810: Picture1.Print "Y"
For t = 0 To 1 Step 0.001
x = x0 * (1 - t) * (1 - t) * (1 - t) + X1 * 3 * t * (1 - t) * (1 - t) + X2 * 3 * t * t * (1 - t) + X3 * t * t * t
y = y0 * (1 - t) * (1 - t) * (1 - t) + Y1 * 3 * t * (1 - t) * (1 - t) + Y2 * 3 * t * t * (1 - t) + Y3 * t * t * t
Picture1.CurrentX = x0 + 10: Picture1.CurrentY = y0 + 10: Picture1.Print "p0" Picture1.CurrentX = X1 + 10: Picture1.CurrentY = Y1 + 10: Picture1.Print "p1" Picture1.CurrentX = X2 + 10: Picture1.CurrentY = Y2 + 10: Picture1.Print "p2" Picture1.CurrentX = X3 + 10: Picture1.CurrentY = Y3 + 10: Picture1.Print "p3" Picture1.DrawWidth = 1
Picture1.Line (x0, y0)-(X1, Y1), vbBlue
Picture1.Line (X1, Y1)-(X2, Y2), vbBlue Picture1.Line (X2, Y2)-(X3, Y3), vbBlue Picture1.DrawWidth = 2
Picture1.PSet (x, y), vbRed
Next t
End Sub
Private Sub Command2_Click()
Picture1.Cls
f
End Sub
Private Sub Command3_Click()
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
Text5.Text = ""
Text6.Text = ""
Text7.Text = ""
Text8.Text = ""
End Sub
Private Sub Command4_Click()
End
End Sub
三.运行结果截图
四.小结
通过此次作业,我对Bezier曲线有了一定的了解,同时也学会了如何用VB来绘制Bezier曲线,和其他一些类似的曲线,使我对VB 的使用有了更进一步的了解。