文档库 最新最全的文档下载
当前位置:文档库 › 获取贝塞尔曲线每个点坐标

获取贝塞尔曲线每个点坐标

获取贝塞尔曲线每个点坐标
获取贝塞尔曲线每个点坐标

获取贝塞尔曲线的每个点的坐标

第一次尝试:

方法:通过研究贝塞尔曲线代码,找出曲线的坐标;

结果:失败

原因:源代码调用的是windows API来绘制贝塞尔曲线,得不到曲线上的每个点的坐标

第二次尝试:

方法:通过获取GetPath函数来获取曲线的坐标

结果:失败

原因:GetPath只是获取画布(cavus)上绘图函数绘图用的点的坐标

没有获取到曲线上所有点的坐标

第三次尝试:

方法:通过研究屏幕上线条的颜色来获取曲线每个点的坐标结果:成功获取贝塞尔曲线的坐标

第四次尝试:

方法:研究canvus.PolyBezier的源代码

第五次尝试:

方法:自己编写PolyBezier()方法

结果:

原因:

VC实现贝塞尔曲线绘制

VC实现贝塞尔曲线绘制 摘要:本文主要通过对Bezier曲线的几何图形的进一步理解,探讨其具体的控制方法,结合具体绘制实际分析理论描述对控制点计算理解的偏差,统一了认识;结合曲线绘制函数PolyBezier()具体的要求,实现VC环境下简单的曲线绘制方法研究。 关键词:贝塞尔曲线;PolyBezier;曲线连续性 1贝塞尔曲线描述 贝赛尔曲线的每一个顶点都有两个控制点,用于控制在该顶点两侧的曲线的弧度。所以本函数的顶点数组的记录方式是:控制点+顶点+控制点+控制点+顶点+控制点+……。所以两个顶点之间的曲线是由两个顶点以及两个顶

点之间的控制点来决定的。一条贝塞尔样条由4个定义点定义:两个端点和两个控制点。 2曲线的绘制方法 2.1PolyBezier函数 PolyBezier函数用于画贝赛尔样条曲线,原型:BOOL PolyBezier(HDC,hdc,CONST POINT *lppt,DWORD cPoints);参数:hdc:指定的设备环境句柄。Lppt:POINT结构数组的指针,包括了样条端点和控制点的坐标、其顺序是起点的坐标、起点的控制点的坐标、终点的控制点的坐标和终点的坐标。cPoints:指明数组中的点的个数。本文中绘制曲线主要用到这个函数。 2.2一阶连续性 图1所示为一段Bezier曲线经过p0、p1两个端点,要绘制经过它们的曲线需要再确定k1、K2两个控制点,这条曲线最终是由p0、k1、k2、p1四个点决定。图2为经过p0、p1(p2)、p3的一段连续曲线,可以看出,它是由p0-p1及p2-p3两段曲线组成,连续的贝塞尔曲线会把前一个终止点当作起始点:即p1=p2。 要绘制如图2所示曲线,关键在于确定k0、k1、k2、k3四个控制点方法,一般是根据两段曲线连续(即一阶连续性:两个相邻曲线段在交点处有相同的一阶导数)条件来得出。总的来说,就是k0p0 连线即为曲线在p0处切线,k1p1连

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

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)包含有贝塞尔曲线。

贝塞尔曲线和B样条曲线(优质参考)

§4.3 贝塞尔曲线和B 样条曲线 在前面讨论的抛物样条和三次参数样条曲线,他们的共同特点是:生成的曲线通过所有给定的型值点。我们称之为“点点通过”。但在实际工作中,往往给出的型值点并不是十分精确,有的点仅仅是出于外观上的考虑。在这样的前提下,用精确的插值方法去一点点地插值运算就很不合算;另外,局部修改某些型值点,希望涉及到曲线的范围越小越好,这也是评价一种拟合方法好坏的指标之一。 针对以上要求,法国人Bezier 提出了一种参数曲线表示方法,称之为贝塞尔曲线。后来又经Gorgon, Riesenfeld 和Forrest 等人加以发展成为B 样条曲线。 一、 贝塞尔曲线 贝塞尔曲线是通过一组多边折线的各顶点来定义。在各顶点中,曲线经过第一点和最后一点,其余各点则定义曲线的导数、阶次和形状。第一条和最后一条则表示曲线起点和终点的切线方向。 1.数学表达式 n+1个顶点定义一个n 次贝塞尔曲线,其表达式为: )()(0,t B p t p n i n i i ∑== 10≤≤t ),...,2,1,0(n i p i =为各顶点的位置向量,)(,t B n i 为伯恩斯坦基函数 i n i n i t t n i n t B ---= )1()! 1(!! )(, 2.二次贝塞尔曲线 需要3个顶点,即210,,p p p ,将其代入曲线表达式: 2,222,112,00)(B p B p B p t p ++=

220202,021)1() 1()! 02(!0! 2t t t t t B +-=-=--= - 21212,122)1(2)1()! 12(!1! 2t t t t t t B -=-=--= - 22222,2)1()! 22(!2! 2t t t B =--= - 221202)22()21()(p t p t t p t t t p +-++-= [ ] ?? ?? ? ???????????????--=2102 0010221211p p p t t 10≤≤t 2102)21(2)1(2)(tp p t p t t p +-+-=' )(222)0(0110p p p p p -=+-=' 0)0(p p = )(222)1(1221p p p p p -=+-=' 2)1(p p = 当2 1 = t 时: 21021041214141)412212()412121(21p p p p p p p ++=+?-?++?-=?? ? ?? )](2 1 [21201p p p ++= 02210212)2121(2)121(221p p p p p p -=?+?-+-=?? ? ??'

5800简单全线坐标计算程序

5800全线任意坐标计算程序 1. 正算主程序(ZHCX) (不运行) 8→DimZ 1÷P→Z[4 ]:(P-R)÷(2HPR)→D: 180÷π→E “Z=”?Z:”YJJ=”?A:Abs(S-O)→W 0.26→Z[1 ]: 0.74→B: 0.02→K: 0.82→Z[3 ]: 1-Z[3 ]→F:1-K→Z[2 ] U+W(Z[1 ]cos(G+QEKW(Z[4 ]+KWD))+Bcos(G+Z[3 ]QEW(Z[4 ]+ Z[3 ]WD))+Bcos(G+QEFW (Z[4 ]+FWD))+ Z[1 ]cos(G+ Z[2 ]QEW(Z[4 ]+ Z[2 ]WD)))→X: V+W(Z[1 ] sin (G+QEKW(Z[4 ]+KWD))+B sin(G+ Z[3 ]QEW(Z[4 ]+ Z[3 ]WD))+B sin(G+QEFW (Z[4 ]+FWD))+ Z[1 ] sin(G+ Z[2 ]QEW(Z[4 ]+ Z[2 ]WD)))→Y: G+QEW(Z[4 ]+WD)→F:X+Zcos(F+A)→X:Y+Zsin(F+A)→Y:If F≧360:Then F-360→F:IfEnd ”X=”:X→X◢ ”Y=”:Y→Y◢ If F﹤0:Then F+360→F:IfEnd ”QX FWJ=”:F▼DMS◢ “C=1=>XX: C=2=>XZ”: ”C=”?C: ”QHJU=”?L: If C=1:Then Goto 1:Else Goto 2: IfEnd 可以计算斜交斜做或斜交正做的桥涵坐标 Lbi 1 X+L cos(F)→X:Y+Lsin(F)→Y: Goto 3 Lbi 2 X+L cos(F+A-90)→X:Y+Lsin(F+A-90)→Y: Goto 3 Lbi 3 “QH-X=”: X →X◢ “QH-Y=”: Y →Y◢ Prog “FY” 2 . 参数子程序(直接运行) M(主线) 一条线路一个名称 “S=”?S If S≦线元终点:Then 线元起点X值→U: 线元起点Y值→V:线元起点切线方位角→G:线元起点桩号→O:线元长度→H:线元起点半径→P:线元终点半径→R:(左偏-1,或右偏 1)→Q:Goto 1:IfEnd … … If S≦线元终点:Then 线元起点X值→U: 线元起点Y值→V:线元起点切线方位角→G:线元起点桩号→O:线元长度→H:线元起点半径→P:线元终点半径→R:(左偏-1,或右偏 1)→Q:Goto 1:IfEnd Lbi 1 Prog “ZBJS” 3. 放样程序(FY)(不运行) “X0=”?M:“Y0=”?N Pol((X-M, Y-N)

菜鸟学习Cocos2d-x 3.x——浅谈动作Action

菜鸟学习Cocos2d-x 3.x——浅谈动作Action 动作类概述 一款游戏,设计的再NB的游戏,如果都是一堆静态的图片,没有任何动作,那也只能“呵呵”了。动作体系对于一款游戏的成功与否,有着非常重要的影响。所以,这篇文章就对Cocos2d-x中的动作进行总结。先来看看Cocos2d-x中的与动作相关的类。 与动作相关的类图如下图所示:现在就对这些类进行简单的介绍,在后续的小节中还会进行详细的分析的。 ?Ref和Clonable:这里不说,在总结Cocos2d-x内存管理的时候再进行详细总结; ?Action:所有动作的父类,定义了公共的操作; ?FiniteTimeAction:瞬时动作和延时动作的父类,可以定义动作的时间变化; ?Follow:跟随节点的动作; ?Speed:改变一个动作的时间,比如实现慢动作回放或者快进; ?ActionInstant:瞬间完成动作,中间没有任何动画效果; ?ActionInterval:动作会在指定的时间内完成,中间会有动画效果; ?FlipX:X轴方向翻转; ?MoveTo:移动动作; ?…… 下面就对上面说的这些类进行通过实际的代码进行总结。 Action类的主要成员函数 以下是Action类的主要成员函数: /** * 返回一个新的Action对象,表示原动作的相反的动作 */

virtual Action* reverse()const=0; // 如果动作已经完成了,就返回true virtualbool isDone()const; // 在动作开始之前被调用,设置动作作用的对象 virtualvoid startWithTarget(Node*target); /** * 在动作完成以后会被调用,它会设置"target"对象为空 * 注:请永远不要手动调用该函数,而是调用对应的"target->stopAction(a ction);" */ virtualvoid stop(); /** * 每帧都会调用的方法,如果你需要在每帧控制动作,则需要重写,时间间隔为动作间隔时间 * 最好不要重写该函数,除非你真的知道怎么做 */ virtualvoid step(float dt); /** * 每一帧都会调用一次该函数,参数time取值为0和1之间的任意值,例如:

道路逐桩坐标计算

道路逐桩坐标计算[可读数据库文件(.mdb),或读文本文件(.txt或.dat) 附件(点击下载): ;;; by yshf ;;;道路逐桩坐标计算[可读数据库文件(.mdb),或读文本文件(.txt或.dat)] ;;;1. 根据“道路设计参数文件”[.txt或.dat(文本文件), ;;; 或者.mdb(Access 2000 数据库)] ”中的平面曲线线元参数、 ;;; 道路纵断面参数成批地计算所求点坐标和相应中线点的设计高程, ;;; 并在Auto CAD中绘制出逐桩坐标表。 ;;; ;;;2. 必须将下载的文件“zbjgchjsb1.fas”存到“E:\\算例文件夹”中, ;;; 如存入其它地方,则程序不会进行计算。 ;;; ;;;3. 运行环境为:Auto CAD 2000以上版,Access 2000以上版数据库。 ;;; ;;;4. 计算前,先准备数据: ;;; (一)平面曲线 ;;; 平面曲线按线元法将各线元要素录入到Access 2000以上版数据 ;;; 库的“道路平面曲线线元参数表”中,或者录入到文本文件(.txt或 ;;; .dat)。当曲线左偏时,其线元长度输入负值;右偏及直线时其线元 ;;; 长度输入正值。 ;;; 起点切线方位是以度.分分秒秒的形式录入的,例如57°09′13.32″ ;;; 录入为57.091332。 ;;; ;;; (二)平曲线曲率半径约定如下: ;;; (1).当线元为直线时,其起点、止点的曲率半径为无穷大,以10的45次;;; 代替。 ;;; (2).当线元为圆曲线时,无论其起点、止点与什么线元相接,其曲率半;;; 径均等于圆弧的半径。 ;;; (3).当线元为完整缓和曲线时,起点与直线相接时,曲率半径为无穷大,;;; 以10的45次代替;与圆曲线相接时,曲率半径等于圆曲线的半径。止点与直;;; 线相接时,曲率半径为无穷大,以10的45次代替;与圆曲线相接时,曲率半;;; 径等于圆曲线的半径。 ;;; (4) 当线元为非完整缓和曲线时,起点与直线相接时,曲率半径等于设计;;; 规定的值;与圆曲线相接时,曲率半径等于圆曲线的半径。止点与直线相接;;; 时,曲率半径等于设计规定的值;与圆曲线相接时,曲率半径等于圆曲线的;;; 半径。 ;;; ;;; (三)竖曲线 ;;; 竖曲线按变坡点里程、变坡点高程、竖曲线半径的方式录入到 ;;; “道路纵断面参数表”中,在变坡点未设有竖曲线的,其竖曲线半径 ;;; 输入0。 ;;; ;;; (四)注意事项

线元法万能坐标计算程序

线元法万能坐标计算程序(适用于CASIO fx-9750GⅡ计算器) 论文https://www.wendangku.net/doc/5a9755922.html,/:本论文仅供学习交流使用,本站仅作合理转载,原作者可来邮要求删除论 文。 摘要:我国公路建设事业正处于一个高速发展的时期,在公路工程施工过程中,施工技术人员经常要使用全站仪、水准仪进行施工放样、高程测量,在测量过程中,手工计算速度慢,失误率高,工作效率极低。利用CASIO fx-9750GⅡ编程函数计算器强大的内存(可诸存63000个字符)和编程功能,编写各种计算程序,能够在2秒钟内计算出施工放样、桩点坐标等施工过程中的各项数据资料,同时也使我们有更多的时间去挑战更富有创造性的工作。 关键词:坐标放线线元测量程序 1、前言 本程序采用Gauss-Legendre(高斯-勒让德)五节点公式作内核,计算速度(太约2秒)适中,计算精度很高。在此之前,本人曾用过以下公式作内核:①积分公式simpson法②双重循环复化高斯2节点③高斯-勒让德3节点④求和公式复化simpson法⑤双重循环复化simpson法⑥高斯-勒让德4节点,⑦高斯-勒让德5节点,经过测试③计算最快,⑦代码稍长但计算速度只比③⑥稍慢,精度最高,可满足线元长小于1/2πD 的所有线形的精度要求。⑦作内核分别计算圆曲线长1/4πD、1/2πD、3/4πD、πD处的精度,1/4πD时偏差为0.001mm,1/2πD时偏差为0.55m m,3/4πD时偏差为31.63mm,πD时偏差为968mm,偏差按半径倍数增大,如线元长大于1/2πD(1/2圆周长)时,可将其拆分二个或多个线元单位,以确计算保精度。 2、程序特点 事先将所有的平曲线交点的线元要素诸存到计算器内,测量时只输桩号、边距等程序会自动寻找各类要素,一气呵成地完成施工测量任务,中途不需人工转换各类要素数据,本程序可诸存几百条线路的要素数据,计算时可按需选择线路编号进行测量。测量时不需查阅及携带图纸,仅一台CASIO fx-9750GⅡ编程函数计算器即可。 本程序含一个主程序:3XYF,五个子程序:GL(公式内核)、QD(线路选择)、XL(线路要素判断)、GF(坐标反算)、File 1 (要素存放的串列工作簿)。可以根据曲线段——直线、圆曲线、缓和曲线(完整或非完整型)的线元要素(起点坐标、起点里程、起点切线方位角、终点里程、起点曲率半径、止点曲率半径)及里程边距或坐标,对该线元段范围内任意里程中边桩坐标进行正反算。 3、计算公式及原理 如图:BC 间为一曲线元,曲线元上任一点的曲率随至B 点的弧长作线性变化。设起点B 的曲率为KA ,终点C 的曲率为KB ,R 为曲线半径。±表示曲线元的偏向,当曲线元左偏时取负号,当曲线元右偏时取正号,直线段以1的45次方代替(即半径无穷大)。 式中:αΑ=起始方位角l =p 点到B的距离lS=曲线总长αp=p 点切线方位角 R1=R5=0.118463442528095 ,R2 = R4 = 0.239314335249683 , R3 = 0.28444444444444 V1=1-V5= 0.046910070 ,V 2= 1-V4 = 1 0.2307653449 V3= 0.5 利用上面公式及CASIO fx-9750GⅡ编程函数计算器可编写下列计算程序。 4、程序清单 (1)、3XYF(主程序) "1→XY2→FS"?→V:V=1=>Goto 1:V=2=>Goto 2↙(选择计算功能) Lbl 1:File 1:”XLn”?→S:Prog “QD”↙(选择线路)

贝塞尔曲线

贝塞尔曲线 20世纪70年代,雷诺汽车公司的Pierre Bezier 和雪铁龙汽车公司的Paul de Casteljau 各自独立地推导出了CAD/CAM 中广泛应用的贝塞尔曲线,这些参数多项式是一类逼近样条。 与贝塞尔曲线紧密相关的是伯恩斯坦多项式,这里将Bernstein 多项式记作,()i n B x ,该多项式定义如下: ,()(1),01i n n i i n B x x x x i -??=-≤≤ ??? (1.1) 其中i=0,1,2,…n 。 在Mathematica 中构造该函数可以使用语句: Bernstein[x_,i_,n_]:=ExpandAll[Binomial[n,i]?x^i ?(1?x)^(n ?i)] Casteljau 最开始是使用递归方法隐式地定义的,该递推关系如下: 0,0,,11,1()1 ()(1)()()i n i n i n B x B x x B x xB x ---==-+ (1.2) 其中i=1,2,3,…n-1。 通常,n 阶伯恩斯坦多项式一共有(n+1)个,例如四阶的伯恩斯坦多项式为: 234 0,4234 1,4234 2,434 3,444,4()1464()412124()6126()44()B x x x x x B x x x x x B x x x x B x x x B x x =-+-+=-+-=-+=-= (1.3) 除此之外,还有其他一些性质: 非负性 多项式在[0,1]上是非负的,这个结论是显然的,对于四阶伯恩斯坦多项式,函数图形如下: 规范性

,0()1n i n i B x ==∑ (1.4) 原因很简单,对于二项式: 0()n n i n i i n x y x y i -=??+= ???∑ (1.5) 令x=x ,y=1-x ,代入得证。 导数 ,1,1,1()(()())i n i n i n d B x n B x B x dx ---=- (1.6) 基 n 阶伯恩斯坦多项式组成阶数小于等于n 的所有多项式的一个基空间。 根据该性质,所有n 阶多项式都可以被n 阶伯恩斯坦多项式线性表示。如果给定一个控制点集P ,其中P i =(x i ,y i ),则贝塞尔曲线被定义为: ,0()()n i i n i P x PB x ==∑ (1.7) 该公式中的控制点是表示平面中的x 和y 坐标的有序对。x 坐标和y 坐标可单独由该式推导出。 例如求控制点(1,2)、(2,-3)、(3,1)、(4,-2)所表出的贝塞尔曲线,则: 0,31,32,33,30,31,32,33,31*()2*()3*()4*()2*()3*()1*()2*() Px B t B t B t B t Py B t B t B t B t =+++=-+- (1.8) 展开有: 2321521361710Py t Px t t t t =++≤=-≤-其中 (1.9) 在Mathematica 中绘制图形命令: ls = ListLinePlot[{{1, 2}, {2, -3}, {3, 1}, {4, -2}}, Axes -> False]; g = ParametricPlot[{1 + 3 t, 2 - 15 t + 27 t^2 - 16 t^3}, {t, 0, 1}]; Show[ls, g] 绘制图形如下:

jsplumb介绍

jsPlumb介绍 ShenBY 沈本义(qq:1617309239)2011-11-07 以下jsPlumb介绍基于jsPlubm1.3.3版本,并且基础库是用jQuery1.3.x或以上,与其他版本基础库或jsPlumb的比较或后期版本升级,本文档不做介绍。 本人英文水平有限,有疑惑请自行到官网对照翻译。 摘要 Jsplumb是Jquery的一个插件,它能够让你用动态的或静态的链接来连接html界面上行的元素,并且从1.1.0版本开始,提供用鼠标拖动来链接。目前该插件支持三个javascript 库,有Jquery、MooToos、Yui3,jsplumb代码是开源的,并且是麻省理工学院许可,由google 进行代码托管。 官方示例:https://www.wendangku.net/doc/5a9755922.html,/jsPlumb/html/demo.html 代码地址:https://www.wendangku.net/doc/5a9755922.html,/p/jsplumb/ Jsplumb介绍地址:https://www.wendangku.net/doc/5a9755922.html,/ JsPlumb允许您使用SVG、Canvas 或者VML链接屏幕上的元素,这些取决于您使用的浏览器的能力。 浏览器的兼容性 jsPlumb 1.3.3 已经在以下浏览器测试: IE 6 on Windows XP IE 7 on Windows XP IE 8 on Windows XP Firefox 3.5.8 on Windows XP IE 9 on Windows 7 Chrome 12 on Windows 7 Firefox 3.5.8 on Windows 7 Firefox 3.6.3 on Ubuntu 10.04 Chrome on Ubuntu 10.04 Safari 4 on Mac Tiger Safari 4 on Windows Vista Safari 5.0.5 on Windows 7 Opera 10.54 on Windows XP

C语言实现生成贝塞尔曲线(代码)

在C环境下编程实现:由4个控制点生成3次贝塞尔曲线 #include #include int zuhe(int n,int k) { int i,s1,s2; s1=1; s2=1; if(k==0) return 1; for(i=n;i>=n-k+1;i--) s1=s1*i; for(i=k;i>=2;i--) s2=s2*i; return s1/s2; } float fang(float n,int k) { if(k==0) return 1; return pow(n,k); } float benkn(int n,int k,float t) { return zuhe(n,k)*fang(t,k)*fang(1-t,n-k); } void main() { float t[11]={0},x[4],y[4],x1[11],y1[11],s=0.0; int i; for(i=1;i<11;i++) {s=s+0.1;t[i]=s;} printf("please input x value:\n"); for(i=0;i<4;i++) scanf("%f",x+i); printf("please input x value:\n"); for(i=0;i<4;i++) scanf("%f",y+i); for(i=0;i<11;i++) { x1[i]=x[0]*benkn(3,0,t[i])+x[1]*benkn(3,1,t[i])+x[2]*benkn(3,2,t[i])+x[3]*benkn(3,3,t[i]); y1[i]=y[0]*benkn(3,0,t[i])+y[1]*benkn(3,1,t[i])+y[2]*benkn(3,2,t[i])+y[3]*benkn(3,3,t[i]); } printf("%f,%f,%f,%f\n",x[0],x[1],x[2],x[3]); printf("%f,%f,%f,%f\n",y[0],y[1],y[2],y[3]); for(i=0;i<11;i++) {

fx-4800P缓和曲线和圆曲线坐标正反算程序(正确版)

缓和曲线和圆曲线坐标正反算程序主程序“TYQXJS” Lb1 0↙→(EXE) {NUVOGHPRQ}:“1.SZ=>XY”: “2.xy=>SZ”: N:U“QDX”:V“QDY”:O“QDLC”:G“FWJ”: H“LS”:P“RO”:R“RN”:Q“ZP=-1,YP=+1,ZZ=0” :C=1÷P:D=(P-R)÷(2HPR):E=180÷π:N=1=>Goto 1:≠=>Goto 2◣↙Lb1 1:{SZ}:SZ:W= Abs(S-O): Prog“1”: X“XS”=X◢ Y“YS”=Y◢ F“FS”=F-90◢ Goto 3↙ Lb1 2:{XY}:XY:I=X:J=Y: Prog“2”:S“S”=O+W◢ Z“Z”=Z◢ Goto 3↙ Lb1 3↙ {DE}:E“QX-JJ,Z-1,Y+1”:D“BZ-JL”↙ F=F+E↙ X=X+D Cos F◢ Y=Y+D Sin F◢ {DE}:D“BZ-JJ”:E“JJ,Z-1,Y+1”↙ F=F+E↙

X=X+D Cos F◢ Y=Y+D Sin F◢ Goto 0 子程序1:“1” A=0.1739274226:B=0.3260725774:K=0.0694318442:L=0.3300094782:F=1 -L:M=1-K:X=U+W(ACos(G+QEKW(C+KWD))+BCos(G+QELW(C+LWD))+BCos(G+Q EFW(C+FWD))+ACos(G+QEMW(C+MWD))):Y=V+W(ASin(G+QEKW(C+KWD))+BSin (G+QELW(C+LWD))+BSin(G+QEFW(C+FWD))+ASin(G+QEMW(C+MWD))):F=G+QE W(C+WD)+90:X=X+Z Cos F:Y=Y+Z Sin F 子程序2: “2” T=G-90:W=Abs((Y-V)Cos T-(X-U)Sin T):Z=0: Lb1 0:Prog“1”:L=T+QEW(C+WD):Z=(J-Y)Cos L-(I-X)Sin L:Abs Z<1E-6=>Goto 1: ≠=>W=W+Z:Goto 0◣↙(E为:4800P键盘的EXE键) Lb1 1:Z=0Prog“1”:Z=(J-Y)÷Sin F◣ 注:第一缓和曲线起点半径输入无穷大(10 45),终点输入圆曲线半径;第二缓和曲线起点半径输入圆曲线半径,终点半径输入无穷大(10 45);圆曲线输入给出的起点和终点半径;直线段则都输入无穷大(10 45)。 其中起点切线方位角用此程序计算。 ◣(代替空心) 坐标正算 程序“ZBZS” Lb1 0↙ X“HSX”:Y“HSY”:U“CZX”:V“CZY”↙ X-U≥0=>Goto 1: ≠=>Goto 2◣↙

三次贝塞尔曲线

练习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.java import javax.swing.*; public class ExitableJFrame extends JFrame{ //构造函数 public ExitableJFrame(){ } //带窗口标题的构造函数 public ExitableJFrame(String title){ super(title); } //窗口的初始化 本例 知识 点 一句话讲解新学 知识编写Graphics2D 类 绘制图形使用CubicCurve2D 类 绘制图形已学 知识使用Graphics 类 画屏幕图像使用String 类管理字符串

多媒体应用基础复习题

《多媒体应用技术基础》复习习题 一、单选题 1、以下不属于多媒体动态图像文件格式的是______。 A:A VI B:A VS C:MPG D:BMP 2、可方便实现图像的移动,缩放和旋转等变换的是______。 A:模拟视频 B:数字视频 C:矢量图 D:位图 3、以下选项中不属于存储媒体的是______。 A:硬盘 B:光盘 C:键盘 D:软盘 4、以下的采样频率中哪个是目前音频卡所不支持的______。 A:44kHz B:22kHz C:100kHz D:11kHz 5、在数字音频信息获取与处理过程中,下述顺序哪个是正确的______。 A:采样、A/D变换、压缩、存储、解压缩、D/A变换 B:A/D变换、采样、压缩、存储、解压缩、D/A变换 C:采样、D/A变换、压缩、存储、解压缩、A/D变换 D:采样、压缩、A/D变换、存储、解压缩、D/A变换 6、Windows媒体播放器能播放的声音文件有______。 ①W A V ②MP3 ③WMA ④MIDI ⑤A VI A:①②③④ B:②③④ C:①②③ D:全部 7、当利用扫描仪输入图像数据时,扫描仪可以把所扫描的照片转化为______。A:三维图 B:矢量图

C:矢量图形 D:位图图像 8、视频卡的种类繁多,主要包括____。 ①视频压缩卡②视频合成卡③视频捕捉卡④视频转换卡 A:①②③ B:①② C:仅③ D:全部 9、下列选项不属于Windows自带的多媒体应用程序的是______。 A:Winamp B:写字板 C:媒体播放器 D:画图 10、将舞台上的对象转换为元件的步骤是:______ A:1.选定舞台上的元素,并将选定元素拖到库面板上;2.单击"修改> 转换为元件",打开转换为元件对话框;3.填写转换为元件对话框,并点击确定 B:1. 单击"修改> 转换为元件",打开转换为元件对话框;2.选定舞台上的元素;3.填写转换为元件对话框,并点击确定 C:1.选定舞台上的元素;2.单击"修改> 转换为元件",打开转换为元件对话框;3.填写转换为元件对话框,并点击确定 D:1.单击"修改> 转换为元件",打开转换为元件对话框;2.选定舞台上的元素,并将选定元素拖到库面板上;3.填写转换为元件对话框,并点击确定 11、假设舞台上有同一个元件的两个实例,如果将其中一个的颜色改为#FF0000,大小改为原来的200%,那么另外一个实例将会发生什么变化?______ A:没有变化 B:大小也变为原来的200%,但颜色不变 C:颜色变为#FF0000,大小变为原来的200% D:颜色也变为#FF0000,但大小不变 12、以下关于按钮元件时间轴的叙述,正确的是:______ A:按钮元件时间轴上的帧都可以被赋予帧动作脚本 B:按钮元件中包含了4帧,分别是弹起、按下、移过和点击帧 C:按钮元件的时间轴与主电影的时间轴是一样的,而且它会通过跳转到不同的帧来响应鼠标指针的移动和动作 D:按钮元件的时间轴里只能包含4帧的内容 13、色彩深度是指在一个图像中什么的数量:______ A:饱和度 B:颜色 C:亮度

通过逐桩坐标计算曲线要素

通过逐桩坐标表推算曲线要素(CAD篇) 摘要:现在从事工程行业的都流行使用AutoCAD进行绘制图形,为了更好的利用这个绘图工具来绘制线路曲线要素,本文将讲解如何通过设计院提供的逐桩坐标表推算未知曲线要素。 关键词:AutoCAD 技巧曲线要素 说明:AutoCAD已经成为国际上广为流行的绘图工具。具有良好的用户界面,通过交互 菜单或命令行方式便可以进行各种操作。它的多文档设计环境,让非计算机专业人员也能很快地学会使用。在不断实践的过程中更好地掌握它的各种应用和开发技巧,从而不断提高工作效率。 如何提高CAD速率? 通常在开始绘图的时候一些人由于对工具命令不熟悉直接使用工具栏等查找命令,这样对制图的效率会大打折扣从而导致绘图的速率缓慢,提高制图的方法需要掌握CAD的快捷命令,孰能生巧的记住,然后择优选用其中的一些常用的绘图命令,把繁琐的长命令转化为简单的命令使用,其次需要多练习绘图的方式与方法才会提高绘图水平。 推算原理: 通过逐桩坐标表(含曲线五大桩)然后利用Excel生成展点命令在AutoCAD中进行坐标展点,再通过工具或命令绘制进行查询曲线长、切线长、外失距、交点坐标、交点里程、曲线半径、方位角、转角等。 准备工作: 1、逐桩坐标表X、Y(含曲线五大桩) 2、AutoCAD绘图软件 演示版本为:AutoCAD 2007 示例文件:某高速铁路逐桩坐标表 演示范围:DK07+586.707~DK12+126.03(由于该交点属于大转角则演示明显)

操作流程:坐标展点→绘制半径→绘制切线长→查询方位角→查询转角→查询交点坐标→查询交点里程→查询外失距→绘制缓和曲线。(请注意逐桩坐标表中所提供的ZH、HY、QZ、YH、HZ等说明) 准备操作如下: 1、打开“逐桩坐标表”并复制(里程桩号、坐标X、坐标Y)数据到“曲线坐标计算程序VBA 4.6”的“交点法正算”表格中,效果图如下: 逐桩坐标表见(本文附件)下载地址附后!

曲线之美(一)贝塞尔曲线

曲线之美(一)贝塞尔曲线 收藏 在图形图像编程时,我们常常需要根据一系列已知点坐标来确定一条光滑曲线。其中有些曲线需要严格地通过所有的已知点,而有些曲线却不一定需要。在后者中,比较有代表性的一类曲线是贝塞尔曲线(Bézier Splines)。 网友们可能注意到,贝塞尔曲线广泛地应用于很多图形图像软件中,例如Flash、Illstrator、CoralDRAW和Photoshop等等。什么是贝塞尔曲线呢?你先来看看这个: 哼~一条很普通的曲线,好像真的无法给我们带来什么特殊感觉哦~那把这条曲线和绘制它所根据的点重叠地放在一起再瞧瞧吧: Hoho,原来呀~贝塞尔曲线就是这样的一条曲线,它是依据四个位置任意的点坐标绘制出的一条光滑曲线。我们不妨把这四对已知点坐标依次定义成(x0,y0)、(x1,y1)、(x2,y2)和(x3,y3)。贝塞尔曲线必定通过首尾两个点,称为端点;中间两个点虽然未必要通过,但却起到牵制曲线形状路径的作用,称作控制点。 在历史上,研究贝塞尔曲线的人最初是按照已知曲线参数方程来确定四个点的思路设计出这种矢量曲线绘制法。涕淌为了向大家介绍贝塞尔曲线的公式,也故意把问题的已知和所求颠倒了一下位置:如果已知一条曲线的参数方程,系数都已知,并且两个方程里都含有一个参数t,它的值介于0、1之间,表现形式如下所示: x(t) = ax * t ^ 3 + bx * t ^ 2 + cx * t + x0 y(t) = ay * t ^ 3 + by * t ^ 2 + cy * t + y0 由于这条曲线的起点(x0,y0)是已知的,我们可以用以下的公式来求得剩余三个点的坐标: x1 = x0 + cx / 3 x2 = x1 + ( cx + bx ) / 3 x3 = x0 + cx + bx + ax

坐标计算方法

已知:①缓和曲线上任一点离ZH点的长度:l ②圆曲线的半径:R ③缓和曲线的长度:l0 ④转向角系数:K(1或-1) ⑤过ZH点的切线方位角:α ⑥点ZH的坐标:xZ,yZ 计算过程: 说明:当曲线为左转向时,K=1,为右转向时,K=-1,公式中n的取值如下: 当计算第二缓和曲线上的点坐标时,则: l为到点HZ的长度 α为过点HZ的切线方位角再加上180° K值与计算第一缓和曲线时相反 xZ,yZ为点HZ的坐标 切线角计算公式:

已知:①圆曲线上任一点离ZH点的长度:l ②圆曲线的半径:R ③缓和曲线的长度:l0 ④转向角系数:K(1或-1) ⑤过ZH点的切线方位角:α ⑥点ZH的坐标:xZ,yZ 计算过程: 说明:当曲线为左转向时,K=1,为右转向时,K=-1,公式中n的取值如下: 当只知道HZ点的坐标时,则: l为到点HZ的长度 α为过点HZ的切线方位角再加上180° K值与知道ZH点坐标时相反

xZ,yZ为点HZ的坐标 三、曲线要素计算公式 公式中各符号说明: l——任意点到起点的曲线长度(或缓曲上任意点到缓曲起点的长度)l1——第一缓和曲线长度 l2——第二缓和曲线长度 l0——对应的缓和曲线长度 R——圆曲线半径 R1——曲线起点处的半径 R2——曲线终点处的半径

P1——曲线起点处的曲率 P2——曲线终点处的曲率 α——曲线转角值 四、竖曲线上高程计算 已知:①第一坡度:i1(上坡为“+”,下坡为“-”) ②第二坡度:i2(上坡为“+”,下坡为“-”) ③变坡点桩号:SZ ④变坡点高程:HZ ⑤竖曲线的切线长度:T ⑥待求点桩号:S 计算过程: 五、超高缓和过渡段的横坡计算

cdr贝塞尔曲线完全介绍

这篇教程像飞特的cdr爱好者们介绍cdr贝塞尔曲线的功能作用和使用方法,希望飞特的朋友们喜欢这篇教程。“贝塞尔工具” 是所有绘图类软件中最为重要的工具之一。“贝塞尔工具”可以创建比手绘工具更为精确的直线和对称流畅的曲线。对于大多数用户而言,“贝塞尔工具”提供了最佳的绘图控制和最高的绘图准确度。为使广大图形软件初学用户能了解“贝塞尔工具”的应用,本人这里以coreldraw这款软件为例,详细地剖析“贝塞尔工具”的使用方法。“贝塞尔”是coreldraw中的称谓,在photoshop、illustrator、indesign、quarkxpress等软件中,称之为“钢笔工具”,虽然名称不一样,但作用是一致的,大家可以触类旁通,参照了解。1、绘制线段利用“贝塞尔工具”绘制线段的方式和“手绘工具”一样,能绘制直线、斜线。按住ctrl键即限制水平、垂直或呈角度绘制线段,不同的是“贝塞尔工具”可以连续地绘制多段线段。以图01为例:先在屏幕某个位置单击鼠标以指定起始点,然后将鼠标移向(不必要按住不放)红圈1处单击指定第一个线段的终止点(在绘制多段线时,此终止点同时也为下一线段的起始点),然后继续将鼠标移向经圈2处单击,完成第二线段的绘制;以此类推, 鼠标不断地在新的位置点击,就不断地产生新的线段。图片如下: fev te编注:更多cdr教程讨论和作业提交请到飞特论坛coredraw交流区:https://www.wendangku.net/doc/5a9755922.html,/forum-53-1.html 如果是绘制封闭的对象,“贝塞尔工具”的绘制过程是:如图02所示,在红圈1处单击鼠标以指定起始点,然后移动鼠标在红圈2处单击,即绘制出一条线段;保持工具不变,继续将鼠标移向红圈3、红圈4、红圈5处单击,最后移向红圈1处,在起始点上单击鼠标完成闭合操作,一个多边形就完成了。图片如下: 2、认识贝塞尔曲线“贝塞尔曲线”由节点连接而成的线段组成的直线或曲线,每个节点都有控制点,允许修改线条的形状。贝塞尔曲线由一个或多个直线段或曲线段组成,如图03,以节点标记路径段的端点。在曲线段上,每个选中的节点显示一条或两条方向线,方向线以方向点结束。方向线和方向点的位置决定曲线段的大小和形状,移动这些因素将改变曲线的形状。图片如下:

缓和曲线上任意点坐标计算程序

第一缓和曲线加圆曲线上任意点坐标计算程序:L1:U=U"X0":V=V"Y0":F"FANG"=F:E=E"LEFT-1":LbI 0 L2:{B}:{D}:{P} L3:L=AbS(B-A"ZHD") L 4: L5:X=L-LX Y5/(40R2S2) L6:Y= LX Y3/(6RS)- LX Y7/(336RX Y3SX Y3):G=90L2/(∏RS) L GOtO 2 7: L8:LbI 1 L9:L=L-S L10:O=90S/(∏R)+90L/(∏R) L11:M=2(Rsin(90L/∏/R)) L12:X=S-SX Y3/(40R2)+Mcos O L13:Y=S2/(6R)+MsinO:G=90S/(∏R)+180L/(∏R) L GOtO 2 14: L15:LbI 2 L16:W=tan-1(Y/X):Q=√(X2+Y2) L 17: L E=1=>G=-G 18: L19:X[1]=U+Qcos(F+W)+Dcos(F+G+P)◢ L20:Y[1]=V+Qsin(W+F)+Dsin(F+G+P)◢ L21:GOtO 0

注、○1、XO—为起点X坐标 EXE ○2、YO—为起点Y坐标 EXE ○3、F?—方位角 EXE ○4、LEFT-1?—左偏取1右偏取0 EXE ○5、B?—所求坐标点里程(起点输0时为到起点长度)EXE ○6、ZHD?—为直缓点里程或直圆点里程(起点可以输0)EXE ○7、S?—缓和曲线长、圆曲线时输为0 EXE ○8、R?—半径EXE ○9、D?—中桩到边桩长度EXE ○10、P?—左右方向与中线切线交角、法线方向时左-90右+90 EXE ○11、上述每一步输完后必须确认、结果显示字后转到B进行循环操作。

相关文档