三次样条曲线插补模拟

合集下载

三次样条曲线插补改进算法

三次样条曲线插补改进算法

三次样条曲线插补改进算法朱宁【摘要】重点研究了三次样条曲线的插补算法及其改进,解决了现有样条曲线插补算法存在的弓高难控制、加工存在安全隐患的问题.改进后的算法简单,适合现代有强大计算能力的计算机系统,低成本情况下能在低档数控机床上直接加工样条曲线.【期刊名称】《通信电源技术》【年(卷),期】2018(035)004【总页数】3页(P29-30,32)【关键词】三次曲线;插补;样条曲线【作者】朱宁【作者单位】徐州机电技师学院,江苏徐州 221000【正文语种】中文0 引言三次样条曲线是在生产实践中产生和发展起来的。

在CAD/CAM技术还没有得到广泛应用时,技术人员绘制飞机、船舶和汽车上的复杂轮廓曲线都是借助于样条通过手工来完成[1]。

绘制样条曲线时,先选定好支点位置,然后在另一端放上重物或压铁使其作自由弹性弯曲,获得的曲线即所需要的样条曲线。

1 三次样条曲线函数的一般插补算法1.1 三次样条曲线函数的一般定义已知n个点P1(x1,y1),P2(x2,y2),…,Pn(xn,yn),且x1<x2…<xn,若函数S(x)满足条件:(1)曲线通过所有的型值点,即S(xi)=yi(i=1,2,…n);(2)S(x)在[xi,xn]区间上有连续的一阶和二阶导数;(3)S(x)在每一个子区间[xi,xi+1]上都是三次多项式,即每一个子区间内有Si(x)=Ai+Bi(x-xi)+Ci(xxi)2+Di(x-xi)3,(i=1,2,…n-1)。

则称S(x)为[xi,xn]上以xi(i=1,2,…n)为结点的三次样条函数。

1.2 三次样条曲线的常见插补运算令t为弦长参数,x=x(t),y=y(t)。

可以看出:对应于n个型值点(xi,yi)(i=1,2,…n)有n个弦长参数t i(i=1,2,…n),如图1所示。

图1 弦长参数示意图令t1=0,t2=[(x2-x1)2+(y2-y1)2]1/2,…,tn=[(xn-x1)2+(yn-y1)2]1/2。

三次三角插值样条曲线的数控插补计算方法

三次三角插值样条曲线的数控插补计算方法

关键词
数据采样插补,三次三角插值样条曲线,刀具运动轨迹,轨迹空间
1. 引言
在数控加工中,经常遇到如飞机的的机翼、汽车流线型覆盖件成形模具型腔、汽轮机叶片等许多复 杂外形型面的零件。面对这类曲线曲面的描述通常采用的方法是 NURBS 方法,它既能表示自由曲线曲 面,又能表示一些规则的二次曲线曲面。但 NURBS 曲线的参数表达式比较复杂,插补运算量大,且由 型值点逆求控制点的反求运算较难实现,不易于实现直接插补。为此,本课题组在文献[1]中提出了一种 新型样条曲线——可调形三次三角插值样条曲线,这种样条曲线的插值样条表达式中含有三角函数多项 式,通过选择合适的控制点和形状可调参数,该插值样条可以精确表示直线、圆弧、椭圆以及自由曲线 等常见工程曲线。由于该使用的三次三角插值样条避免了使用有理的数学表达形式,故其表达式比较简 洁,所需的计算量也相对较小,并且能够实现实时插补,这很好的为插值曲线及曲面的设计,提供了一 种全新的理论方法。 本文针对该三次三角样条曲线提出了一种新的插补计算方法,该法有效地提高了加工精度和加工过 程的可靠性。其插补思想是:使用若干顺序连接的微小直线段逼近用户程序给定的插值样条曲线轮廓。 将直线段映射到参变量空间,得到参变量的增量值,再通过控制参变量 u,求取对应的轨迹空间中的映 射点,最终得到插补点的坐标值。以此不断重复直到插补终点,可得到整个离散化插补轨迹。
Mechanical Engineering and Technology 机械工程与技术, 2015, 4, 151-158 Published Online June 2015 in Hans. /journal/met /10.12677/met.2015.42016
扬州大学机械工程学院,江苏 扬州 Email: ydzhangyihan@

珩磨机运动控制卡的三次B样条曲线插补算法

珩磨机运动控制卡的三次B样条曲线插补算法
( 兰 州理 工大 学数 字制造 技术 与应用 省部共 建教 育部 重点 实验 室 , ① I 甘肃 兰 州 70 5 ; 30 0 ② 兰州理 工大 学机 电工程 学院 , 甘肃 兰 州 70 5 ; 30 0 ③ 兰州工 业化设备 有 限公 司 , 肃 兰州 705 ) 甘 300
摘 要: 数控 珩磨 机在 加工 复杂 曲线 曲面 时 , 制 系统通 常 以 T 3 0 2 1 控 MS 2 F 8 2芯 片 为核 心 , 设计 D P运 动 控 S 制卡的定 时器 控制 中断控 制伺 服 电动机 来完成 插补 。介 绍 了一 种利 用 D P运 动控 制 卡进 行 三次 B S 样 条 曲线 的插 补方 法 , 方 法不仅可 以缩 短插 补 时间 , 该 也可 以通 过 控 制运 动控 制 卡 定 时器 中 断来 调
e a l h ws t a ,t e i t r oa in a g rt m o n y me tt e c nr lr q ie n s,b ta s es x mp e s o h t h n e p lt lo ih n to l e h o to e u r me t o u lo me t t e r q ie e t fh g p e n ih p e ii n i tr o ai n h e u rm n s o i h s e d a d h g r c so n e lto . p K e wor : Mo in Co to ; a me I tr oa in; r e B S ln r e;n e p lto i m ei y ds to n r l Re lTi n e l t p o Th e p i e Cu v I tr oai n Art h tc
Z N nu  ̄ , U C iig Z N e g ③, H N u h a ③,G N u ① HA G Wajn H hbn ①, HA G F n ② Z A G G o u ② O G Jn ( e a oa r o Dg a Mauatr gT cn l ya dA pi t n T eMiir ①K yL brt y f ii l n fc i eh oo n p l a o , h ns o t un g ci t y

基于运动控制卡的三次B样条曲线插补的分析及实现的开题报告

基于运动控制卡的三次B样条曲线插补的分析及实现的开题报告

基于运动控制卡的三次B样条曲线插补的分析及实
现的开题报告
一、研究背景与意义
在工业自动化领域中,运动控制系统被广泛应用,主要用于控制各
种形式的机械运动。

在机械运动过程中,控制曲线是至关重要的,准确
的曲线可以确保机器的高稳定性和精准度。

三次B样条曲线插补是一种
非常有效的实现曲线控制的方法,适用于许多领域,包括计算机图形学、制造业、航空航天等。

本文旨在基于运动控制卡的三次B样条曲线插补的实现,对运动控
制系统进行分析和研究。

通过对该方法的研究,可以提高运动控制系统
的控制精度和稳定性,为实际工程应用提供支持。

二、研究内容
1. 三次B样条曲线插值的原理及算法研究
2. 基于运动控制卡的三次B样条曲线插补算法实现
3. 设计并实现控制系统硬件及软件
4. 系统中的关键参数实验测试及性能评估
三、研究计划
1. 第一阶段(1月~3月):对三次B样条曲线插值算法进行研究,并结合实际场景进行改进和优化。

2. 第二阶段(4月~6月):在理论研究的基础上,设计并实现基于运动控制卡的控制系统,包括硬件设计和软件编程。

3. 第三阶段(7月~8月):系统测试和性能评估。

4. 第四阶段(9月~10月):撰写论文及终稿。

四、研究预期成果
通过本论文的研究,预期可以实现基于运动控制卡的三次B样条曲线插补算法,将其应用于机械运动的轨迹控制中。

该方法可以有效提高控制精度和稳定性,具有广阔的应用前景。

同时,本文的研究方法也可为其他运动控制算法的研究提供借鉴。

DEM重采样中双三次样条曲线插值方法的应用

DEM重采样中双三次样条曲线插值方法的应用

DEM重采样中双三次样条曲线插值⽅法的应⽤DEM重采样(Resample)可⽣成与原始格⽹不同空间分辨率的格⽹DEM,产⽣的结果运⽤在匹配遥感图象分辨率以⽣成三维地形场景,及建⽴细节层次模型(LOD)等⽅⾯。

在重采样的过程中,插值计算的⽅法有最近邻域、距离反转加权、双线性、B样条曲线和双三次样条曲线(Bicubic Spline Interpolation)等。

本⽂详细介绍最后⼀种⽅法。

1)在⽤户设置新的分辨率(即基础单元格⽹⼤⼩发⽣变化)后,插值⽣成的结果格⽹与原始格⽹保持不变的是,最⼩和最⼤XYZ轴数值,⽽单元⼤⼩变化导致格⽹的⾏数与列数重新计算。

2)对结果格⽹初始化后,逐⾏列进⾏每个单元的循环,仅仅差每个单元位置处的Z轴数值,此时以位置为参数(在两个格⽹之间是保持不变的),寻找原始格⽹此处的Z轴数值,此刻可在原始格⽹此位置的邻域运⽤各种插值算法确定这个未知数值。

3)接下来的⼯作,⾸先找到最接近此位置的单元格,然后确定此单元格邻域4X4的范围内16个元素的Z轴数值,以此位置与单元格的距离差和16个邻域数值为参数,采⽤双三次样条曲线插值⽅法计算未知数值。

double CGV3dDEMGrid::GetValAtPosBiCubicSpline(double dx, double dy, double z_xy[4][4]){double a0, a2, a3, b1, b2, b3, c[4];for(int i=0; i<4; i++){a0 = z_xy[0][i] - z_xy[1][i];a2 = z_xy[2][i] - z_xy[1][i];a3 = z_xy[3][i] - z_xy[1][i];b1 = -a0 / 3.0 + a2 - a3 / 6.0; //求解系数b2 = a0 / 2.0 + a2 / 2.0;b3 = -a0 / 6.0 - a2 / 2.0 + a3 / 6.0;c[i] = z_xy[1][i] + b1 * dx + b2 * dx*dx + b3 * dx*dx*dx; //记录系数}a0 = c[0] - c[1];a2 = c[2] - c[1];a3 = c[3] - c[1];b1 = -a0 / 3.0 + a2 - a3 / 6.0; //求解系数b2 = a0 / 2.0 + a2 / 2.0;b3 = -a0 / 6.0 - a2 / 2.0 + a3 / 6.0;return( c[1] + b1 * dy + b2 * dy*dy + b3 * dy*dy*dy );}附图:图1 10⽶分辨率重采样结果图图2 原始数据显⽰图(5⽶分辨率)图3 2.5⽶分辨率重采样结果图。

三次B样条曲线插补算法的VC实现

三次B样条曲线插补算法的VC实现

三次B 样条曲线插补算法的VC 实现孔凡国,郝尚华,钟廷志(五邑大学 机电系,广东 江门 529020)摘要:结合三次B 样条曲线的数学性质,理论分析了三次B 样条曲线的插补过程,推导出了三次B 样条曲线的插补运算公式。

在对三次B 样条曲线进行研究的基础上,介绍三次B 样条曲线插补算法实现方法,并在VC 环境中对B 样条曲线的插补过程进行了实现,实现了数控插补的动态运算。

关键词:三次B 样条;插补;VCVC Implement of the Cubic B-spline curveInterpolationKONG Fan-guo ,HAO Shang-hua ,ZHONG Ting-zhi(Department of Mechatronics ,Wuyi University ,Jiangmen 529020,China ) Abstract :Combined with mathematics characters of the cubic B-spline curve, the interpolation process of the cubic B-spline curve is analyzed and calculation interpolation formula is deduced. Finally the cubic B-spline curve interpolation operator is programmed under the platform of VC to realize dynamic simulation.Keyword :cubic B-spline ;interpolation ;VC在数控加工中用一小段直线或圆弧去拟合实际曲线,这种拟合方法就是“插补”。

它实质上是根据有限的信息完成“数据密化”的工作。

插补的计算方法和计算精度影响到整个数控系统的精度和效率,因此插补算法对整个数控系统的性能指标至关重要,可以说插补是整个数控系统控制软件的核心。

数学数值分析三次样条插值PPT课件

数学数值分析三次样条插值PPT课件
第2页/共40页
2.8.1 三次样条函数
定义 给定区间[a,b]的一个划分 a=x0<x1<…<xn=b, yi=f (xi) (i=0,1,…,n),如果函数S(x)满足: (1) S(xi )=yi (i=0,1,…,n); (2) 在每个小区间[xi, xi+1] (i=0,1,...,n-1)上是次数不超
S上且( xS与)(x相)的(邻x表节达x点j式的1 )为2两[hh个jj3转2角( x有关x j,)]故y j称为三h转j=x角j+方1-x程j 。
(
x
x
j
)2[hj 2( hj3
x
x j1 )] y j1
(x
x j1 )2 ( x h2j
xj)
mj
(x
x j )2( x h2j
x j1 )
m j1
则方程组化为:
2 1 2 2 2
m1 g1 1 f0
m2
g2
n2 2 n2 mn2 gn2
n1 2 mn1 gn1 n1 fn
第10页/共40页
2、已知 S( x0 ) f0, S( xn ) fn
2m0
m1
3
f
[x0 ,
x1 ]
h0 2
f0
第18页/共40页
S(
x)
M
j
(
x j1 6hj
x)3
M
j1
(x
x 6hj
j
)3
(
y
j
M jh2j 6
)
x
j1 hj
x
(
y
j1
M
j1h2j 6
)
x
x hj

基于三次样条插值的木料抛光机轨迹优化

基于三次样条插值的木料抛光机轨迹优化

基于三次样条插值的木料抛光机轨迹优化【摘要】本文基于三次样条插值,研究了木料抛光机轨迹的优化方法。

首先介绍了三次样条插值原理,然后深入探讨了木料抛光机轨迹优化的意义和方法。

接着详细介绍了优化方法,并设计了实验进行结果分析。

在技术应用方面,本文探讨了优化后的木料抛光机轨迹在实际生产中的应用情况。

总结了本文的研究成果,展望了未来可能的发展方向,并得出了结论。

通过本研究,可以更好地优化木料抛光机轨迹,提高生产效率,降低成本,具有一定的实用性和推广价值。

【关键词】三次样条插值、木料抛光机、轨迹优化、优化方法、实验设计、结果分析、技术应用、研究成果、未来展望、结论。

1. 引言1.1 研究背景木料抛光是木工行业中常见的一项工艺,通过抛光可以提高木料表面的光泽度和光滑度,使其更具观赏性和质感。

在传统的木料抛光过程中,木料抛光机的轨迹设计往往存在不够优化的问题,导致抛光效果不均匀或者浪费时间和材料。

对木料抛光机轨迹进行优化成为了一个重要课题。

随着数值计算和优化算法的发展,基于三次样条插值的方法逐渐成为了一种有效的轨迹优化手段。

三次样条插值可以在给定的数据点上拟合出一条平滑的曲线,通过优化这条曲线可以实现木料抛光机轨迹的优化。

本研究将基于三次样条插值的方法,对木料抛光机的轨迹进行优化,提高抛光效果和效率。

通过对比传统方法和优化后的方法的实验结果,可以验证该方法的有效性和实用性。

1.2 问题陈述木料抛光机在木工行业中扮演着重要的角色,其轨迹优化对机器性能和加工效率具有重要意义。

在木料抛光过程中,存在着轨迹不连续、运动轨迹过于复杂等问题,导致加工精度和效率不高。

如何实现木料抛光机轨迹的优化成为当前研究的重点之一。

1. 目前木料抛光机在加工过程中存在轨迹不连续的问题,造成加工效率低下。

2. 运动轨迹复杂导致木料抛光机在加工过程中出现偏差,影响产品的质量。

3. 缺乏有效的优化方法,无法充分利用木料抛光机的性能,限制了其应用范围和效果。

三次B样条曲线插补技术修正算法

三次B样条曲线插补技术修正算法
摘 要: 提 出一种 修正 的插 补算 法 , 理 论上 分析 了三次 B样 条 曲线 递 推公 式 的泰 勒展 开 式 一 阶、 两 阶 求导 在
插 补周期 一 定的情 况下 插补 增 量只 与插 补速 度 有 关 。 通 过改 变插 补增 量就 可 实例 在 MA T L AB 7 . 0上 验 证 该 算 法是 正 确 的 , 可 以提 高 插 补运 算 效 率 , 节 约 计算 时 间 , 实现 样条 曲线 的快速 插 补 。 关键词 : C NC 系统 三次 B样条 曲线 插 补算 法
o f E d u c a t i o n , L a n z h o u U n i v .o f T e c h . , L a n z h o u 7 3 0 0 5 0 , C H N)
Abs t r a c t :A ix f e d i n t e r p o l a t i o n a l g o it r h m wa s p r e s e n t e d i n t h i s p a pe r .A t h e o r e t i c a l a n a l y s i s o f t h e t h r e e B s pl i n e c u r v e r e c ur s i v e f o r mu l a o f Ta y l o r d e v e l o pme n t o f ir f s t -o r d e r ,d e iv r a t i o n o f t wo o r d e r i n t h e i n t e po r l a t i o n c y c l e u n d e r t h e c o n d i t i o n o f c e r t a i n i n t e po r l a t i o n i n c r e me n t o n l y a n d i n t e r p o l a t i o n s p e e d.Th e a r t i c l e a — c h i e v e d t h e p u po r s e o f c o r r e c t i n g t he t h r e e B s p l i n e C H I V e o f i n t e po r l a t i o n by c ha ng i n g t h e i n t e po r l a t i o n i n c r e me n t s .Th e a l g o r i t h m i s c o re c t t h r o u g h s p e c i ic f e x a mp l e s i n Ma t l a b 7. 0 v e if r ie s .I t c a n b o t h i m— p r o v e t h e i n t e po r l a t i o n o p e r a t i o n e f f i c i e nc y a n d s a v e t he c a l c u l a t i o n t i me,wh i c h r e a l i z e t h e s p l i n e c ur v e

参数三次插值样条曲线

参数三次插值样条曲线


边界条件: 给定 点P1 和Pn的一阶导数 给定 点P1 和Pn的二阶导数 造型中的实际方法,头尾增加两个虚拟点, 使所有型值点成为内点(例如采用自然边 界条件)。

优缺点:
优点:三次多项式在使用的灵活性和计算速度上
提供一个合理的平衡方案,与高次多项式比较, 运算较少且较稳定,与低次多项式比则在曲线拟 合上更灵活。
n=2时,有3个控制点p0、p1和p2,Bezier多项式是 二次多项式:
p (t ) Pk BENk , 2 (t )
k 0 2 (1 t ) 2 P0 2t (1 t ) P t P2 1 2 ( P2 2 P P ) t 2( P 1 0 1 P 0 )t P 0 2
向量方程: P(u)=au3 +bu2 +cu +d, (0≤u≤ 1) 曲线矩阵方程: a P(u)= [u3 u2 u 1] b 以0,1代入,求出边界条件
Pk-1 Pk Pk+1 Pk+2 c d

求解多项式系数
a b c d 其中: Mc = -t 2-t t-2 t 2t t-3 3-2t -t -t 0 t 0 0 1 0 0 是Cardinal矩阵 Pk-1 Pk Pk+1 Pk+2 Pk-1 Pk Pk+1 Pk+2 Pk-1 Pk Pk+1 Pk+2
2 3 p(t ) Pk BENk ,3 (t ) (1 t )3 P0 3t (1 t ) 2 P 3 t ( 1 t ) P t P3 1 2 k 0 3
BEN0,3 (t ) P 0 BEN 1,3 (t ) P 1 BEN2,3 (t ) P 2 BEN3,3 (t ) P 3

珩磨机运动控制卡的三次B样条曲线插补算法

珩磨机运动控制卡的三次B样条曲线插补算法

珩磨机运动控制卡的三次B样条曲线插补算法张万军;胡赤兵;张峰;张国华;龚俊【摘要】Numerical control honing machine in machining of the complex curve and the curved surface, control system usually with TMS320F2812 chip as the core, the design of DSP motion control card timer interrupt control servo motor to complete interpolation. This paper introduces a method using DSP motion control card for three B spline curve interpolation methods, this method can not only shorten the interpolation time, also can be controlled by motion control card interrupt timer to adjust interpolation. The last example shows that, the interpolation algorithm not only meet the control requirements, but also meets the requirements of high speed and high precision interpolation.%数控珩磨机在加工复杂曲线曲面时,控制系统通常以TMS320F2812芯片为核心,设计DSP运动控制卡的定时器控制中断控制伺服电动机来完成插补.介绍了一种利用DSP运动控制卡进行三次B样条曲线的插补方法,该方法不仅可以缩短插补时间,也可以通过控制运动控制卡定时器中断来调整插补轨迹.最后实例表明,该插补算法不仅满足运动控制的要求,而且也满足了高速高精度插补的要求.【期刊名称】《制造技术与机床》【年(卷),期】2012(000)008【总页数】3页(P80-82)【关键词】运动控制;实时插补;三次B样条曲线;插补算法【作者】张万军;胡赤兵;张峰;张国华;龚俊【作者单位】兰州理工大学机电工程学院,甘肃兰州730050;兰州工业化设备有限公司,甘肃兰州730050;兰州理工大学数字制造技术与应用省部共建教育部重点实验室,甘肃兰州730050;兰州理工大学机电工程学院,甘肃兰州730050;兰州工业化设备有限公司,甘肃兰州730050;兰州理工大学机电工程学院,甘肃兰州730050;兰州工业化设备有限公司,甘肃兰州730050;兰州理工大学数字制造技术与应用省部共建教育部重点实验室,甘肃兰州730050【正文语种】中文【中图分类】TP391.44在数控珩磨机加工中,经常会遇到如飞机机翼、飞机叶轮等许多具有复杂外形轮廓的零件。

基于三次样条插值的木料抛光机轨迹优化

基于三次样条插值的木料抛光机轨迹优化

基于三次样条插值的木料抛光机轨迹优化抛光是对木料进行表面处理的一项重要工艺,其主要目的是让木料表面得到光泽、光滑和均匀,提高其美观度和质量。

而木料抛光机作为现代抛光工艺的核心设备,主要负责实现木料表面的抛光处理。

然而,目前木料抛光机在轨迹规划方面存在一些问题,例如存在轨迹重复、不连续等问题,导致抛光效果不佳。

因此,本文基于三次样条插值理论,对木料抛光机轨迹进行优化,以提高抛光效果。

1三次样条插值理论三次样条插值是一种常用的曲线拟合方法,其基本思想是在每个插值节点处连续性好且深入插值算法中的“不振荡性质”。

通过这种方法,可以用一个三次多项式逐段连接每个节点,从而构造出一条光滑的曲线。

三次样条插值通常分为两种情况:自然边界条件和周期性边界条件,其中自然边界条件要求插值函数的一阶导数在端点处为零,而周期性边界条件则要求插值函数在给定区间上周期性连续。

2木料抛光机轨迹设计对于木料抛光机来说,其轨迹设计主要涉及到两个方面:一是木料进料的轨迹设计,二是抛光刀轨迹设计。

对于木料进料轨迹设计,常用的方法是采用等间距径向轴向进料,即每隔一段时间将木料沿轴向方向移动一个固定的距离,在径向方向上保持一定大小,直至木料全部进入抛光区域。

而抛光刀轨迹设计,则需要根据木料表面的实际形状和抛光要求,设计出一条光滑且满足一定规律的曲线,以保证抛光效果的均匀和一致。

基于三次样条插值理论,可以对木料抛光机轨迹进行优化。

具体而言,可以采取如下步骤:(1)收集木料表面数据:首先需要采用高精度的测量设备,对原始木料进行表面数据采集,得到一个或多个点云数据。

(2)提取轨迹点:根据采集到的点云数据,需要进行数据处理和优化,提取出一些较为重要的点,作为轨迹优化的基础。

(3)三次样条插值:在得到优化后的轨迹点之后,就可以采用三次样条插值算法,将轨迹点之间的路径通过三次多项式进行逐段连接,得到一条光滑的轨迹。

(4)轨迹调整:对于得到的轨迹,还需要进行调整和优化,使得轨迹满足抛光要求,尤其是在木料弯曲或凸起处的轨迹调整更为重要。

三次NURBS样条曲线插补加工螺旋转子建模与加工研究

三次NURBS样条曲线插补加工螺旋转子建模与加工研究

o h e ia oo n y li HWe tc mp r s p e iin e rr b t e h u i p i e i t r oa ft e h lc lr t rSe d c co d C l .I o a e r cso ro ewe n t e c b c s ln n e l ‘ p
ThI de工艺与检测 enga s c0ynTf o
三 次 NU B S样 条 曲线 插 补 加 工 R 螺 旋转 子 建 模 与 加 工 研究
余 道 洋 韩 江 夏 链
( 肥 工业大 学机械 与汽车 工程 学院 , 徽 合肥 2 0 0 ) 合 安 3 0 9 摘 要 : 出在 螺旋 转子 加工 制造 过程 中 , 用 三次 N R S样 条 曲线插 补 替 代通 常的 微 直线 段插 补 ; 立 提 采 U B 建 了螺旋 转子 端面摆 线 段三次 NU B R S样条 曲线 方程 。在 P o E软件 上 比较 了三 次 样 条插 补 曲线 和 r/ 理 论摆 线之 间 的精 度误 差 。最后 通过 在 立 式加 工 中心上 比较 了 采用 三次 N B UR效 率 , 采用 三次 NU B R S样条 插补加 工 取得 了理想 的效 果。 关键 词 : 次 N R S样 条 曲线 三 U B
中 图分 类 号 : H14 T 6
微 直线 段
摆线
N - 效率 r
文献标 识码 : A
Mo eig a d ma hnn e e r h o u i NURB pie c re d l n c iig r s a c f bc n c S s l uv n
螺 旋转 子流 量计是 2 0世 纪 9 0年代 末新 推 出的 一 种 新 型流量计 , 具 有 如下 优 点 : 平 衡 良好 , 动及 它 动 振 噪声小 , 体积 小 , 量容 量 大 ; 产生 脉 冲 ; 计 不 转子 表面无 负荷 , 旋 转 过 程 中不 产 生 磨 损 , 用 寿 命 大 大 延 在 使 长 j 。螺 旋转 子是其 中最 关键 的零 件 , 端 面 轮 廓齿 其 形 截 面如 图 1所示 。 螺旋 转子 端 面轮廓 曲线 由 3段 曲线 组成 : 开线 、 渐 摆 线和 圆弧 。 圆弧 可 以 由数控 系统 圆弧 插 补来 实 现 ,

CNC系统中三次参数样条曲线的插补算法

CNC系统中三次参数样条曲线的插补算法

CNC系统中三次参数样条曲线的插补算法
叶伯生;杨叔子
【期刊名称】《华中理工大学学报》
【年(卷),期】1996(24)9
【摘要】根据三次参数样条曲线的矢量表示方法,导出了一种CNC系统中样条曲线的实时插补算法,该算法不仅精度高,理论上可使所用插补点都落在曲线上,而且计算量不大,插补速度快,插补轮廓步长由允许弓高误差及编程速度决定,理论分析和表明,这种算法能获得加工要求的插补精度,其插补速度能满足CNC系统的实时性要求。

【总页数】3页(P9-11)
【作者】叶伯生;杨叔子
【作者单位】机械科学与工程学院;机械科学与工程学院
【正文语种】中文
【中图分类】TG659
【相关文献】
1.适于高速加工的五次参数样条曲线插补及其速度生成算法的研究 [J], 郑金兴;张铭钧;孟庆鑫
2.面向数控系统的五次参数样条曲线插补和前瞻性速度生成算法研究与实现 [J], 任参;刘少君;黄道平
C系统参数曲线的快速插补算法 [J], 蒋君侠
4.三次参数样条曲线恒线速插补的研究 [J], 李勇波;裴雪丰
C系统中三次B-样条曲线的高速插补方法研究 [J], 叶伯生;杨叔子
因版权原因,仅展示原文概要,查看原文内容请购买。

三次样条插值和曲线拟合–LonelyNights

三次样条插值和曲线拟合–LonelyNights

三次样条插值和曲线拟合–LonelyNights很多东西不在手上用着就容易忘,尤其是书本知识。

就弄这么个类别,叫作“书到用时方恨少”,来记录这些知识。

曲线拟合是一个“数值计算“中的一个基本内容。

在实际的项目中,使用拟合的目的就是从有限个点得到一条平滑曲线。

曲线本身也是由点构成的,所以如何从有限个点得到曲线上的其它点,就是插值所关注的内容。

插值的方法有很多,把这些个点逐个用直线段连起来也是一种插值。

样条插值是一种工业设计中常用的、得到平滑曲线的一种插值方法,三次样条又是其中用的较为广泛的一种。

Google 三次样条插值可以看得到不少材料,这里就不罗列公式了,直接看看在代码里,我们怎么做。

首先我们需要各个点的坐标,以x,y表示。

const int len =[_points count];float x[len];float y[len];for(int i =0; i < len; i++){CGPoint p =[[_points objectAtIndex:i] CGPointValue];x[i]= p.x;y[i]= p.y;}取变量x,y从算法中可以得知,我们的目标是样条插值函数,这是一个分段函数,x最高次数为三次,在各个点二次连续可导以保证最终函数曲线的光滑性。

我们每两个点求一个三次函数,我们有n个点,那么这里就需要4(n-1)个方程。

目前我们有n个点的坐标,有n-2个连接点,有n个函数两次连续可导,这里有n+n-2+2*(n-2)共4n-6个方程,还差两个条件。

这里一般有三种处理方法,最方便的,也是我们这里使用的是自然三次样条,也就是在首尾两个点上二次导为0。

具体计算不在此列举了,根据算法构建一个方程组求一组中间值sx,左边是一个三对角矩阵。

float h[len];float u[len];float lam[len];for(int i =0; i < len-1; i++){h[i]= x[i+1]- x[i];}u[0]=0;lam[0]=1;for(int i =1; i <(len -1); i++){u[i]= h[i-1]/(h[i]+ h[i-1]);lam[i]= h[i]/(h[i]+ h[i-1]);}float a[len];float b[len];float c[len];float m[len][len];for(int i =0; i < len; i++){for(int j =0; j < len; j++){m[i][j]=0;}if(i ==0){m[i][0]=2;m[i][1]=1;b[0]=2;c[0]=1;}else if(i ==(len -1)) {m[i][len -2]=1;m[i][len -1]=2;a[len-1]=1;b[len-1]=2;}else{m[i][i-1]= lam[i];m[i][i]=2;m[i][i+1]= u[i];a[i]= lam[i];b[i]=2;c[i]= u[i];}}求三对角矩阵,自下而上对角线上的参数是a,b,c当然需要得到方程组右边的值float g[len];g[0]=3*(y[1]- y[0])/h[0];g[len-1]=3*(y[len -1]- y[len -2])/h[len -2];for(int i =1; i < len -1; i++){g[i]=3*((lam[i]*(y[i]-y[i-1])/h[i-1])+u[i]*(y[i+1]-y[i])/h[i]);}下面就是求解这个方程组了,对于三对角矩阵,使用追赶法//< Solve the Equationsfloat p[len];float q[len];p[0]= b[0];for(int i =0; i < len -1; i++){q[i]= c[i]/p[i];}for(int i =1; i < len; i++){p[i]= b[i]- a[i]*q[i-1];}float su[len];float sq[len];float sx[len];su[0]= c[0]/b[0];sq[0]= g[0]/b[0];for(int i =1; i < len -1; i++){su[i]= c[i]/(b[i]- su[i-1]*a[i]);}for(int i =1; i < len; i++){sq[i]=(g[i]- sq[i-1]*a[i])/(b[i]- su[i-1]*a[i]);}sx[len-1]= sq[len-1];for(int i = len -2; i >=0; i--){sx[i]= sq[i]- su[i]*sx[i+1];}求得了参数,现在就得到分段插值函数了。

三次样条插值法原理

三次样条插值法原理

三次样条插值法原理
1.数据准备:首先需要准备一组给定的数据点,这些数据点一般是用来描述曲线的离散点。

2.分段拟合:将整个曲线分成若干小段,在每个小段内利用三次多项式进行拟合。

首先需要选择一个插值函数,常用的有自然边界条件和固定边界条件。

自然边界条件要求在两个端点处的二阶导数为0,固定边界条件要求曲线在两个端点处预先给定斜率。

3. 插值多项式:在每个小段内,采用三次多项式进行拟合。

三次多项式的形式为:S(x) = a0 + a1(x-xi) + a2(x-xi)^2 + a3(x-xi)^3,其中a0、a1、a2、a3是待求的系数,xi是小段的起点。

4.网格生成:通过如B样条和调和插值等技术生成均匀网格,用于计算插补值。

5.网格递推:利用已知的数据点和边界条件,通过求解线性方程组,递推求解出每个局部区间内的系数。

6.连续性要求:在相邻小段之间,需要保持连续性。

这可以通过要求相邻小段的一阶导数和二阶导数相等来实现。

7.插值计算:利用求解出的系数,在每个小段内计算得出插值曲线上的点。

然而,三次样条插值法也存在一些限制和问题。

首先,它要求给定的数据点必须是离散的,无法处理连续的数据流。

其次,曲线的拟合结果完全依赖于给定的数据点。

如果数据点有误差或者不均匀分布,可能会导致插值曲线的误差。

综上所述,三次样条插值法是一种常用的曲线插值方法,通过拟合三次多项式,得到一条平滑的曲线。

它可以应用于各种插值问题,如图像处理、数值分析等领域。

在使用时,需要注意数据点的准确性和分布情况,以获得较好的插值效果。

三次样条插值的方法和思路 -回复

三次样条插值的方法和思路 -回复

三次样条插值的方法和思路-回复三次样条插值是一种常用的插值方法,它可以在已知的离散数据点上构造出一条光滑的曲线。

这种方法被广泛应用在曲线拟合、图像处理、数据分析等领域。

本文将介绍三次样条插值的方法和思路,并详细阐述每个步骤。

第一步是确定插值段数。

在进行三次样条插值时,首先需要将已知数据点划分成若干个插值段。

插值段越多,插值曲线越接近原始数据,但也会使插值算法复杂度增加。

因此,在确定插值段数时需要权衡精度和计算效率。

第二步是计算每个插值段的系数。

对于每个插值段,我们需要计算出一个三次曲线,该曲线会通过该段的两个端点。

具体的计算方法是,假设有n 个插值点,则有n-1个插值段,每个插值段的系数需要通过以下步骤计算:1. 计算边界条件:这是三次样条插值的关键一步。

我们需要根据已知数据点的性质,来确定边界条件是自然边界、固定边界还是其他类型的边界。

自然边界要求二阶导数在两个端点处为0,即S''(x_0) = S''(x_n) = 0。

固定边界要求插值曲线通过端点的给定导数值,即S'(x_0) = d_0、S'(x_n) = d_n。

2. 构建三对角矩阵:三次样条插值的求解过程可以转化为解线性方程组的问题。

为了解这个方程组,我们需要构建一个三对角矩阵。

其中的对角线元素是2,上下对角线元素是1。

3. 计算方程组的右侧:方程组的右侧是一个n-1维的向量,每个元素对应插值段的边界条件。

对于自然边界,右侧元素都是0;对于固定边界,则通过求解给定的导数值得到。

4. 解线性方程组:将三对角矩阵与右侧向量相乘,即可得到每个插值段的系数。

第三步是构造插值曲线。

在前两步中,我们计算得到了每个插值段的系数。

现在,我们需要将这些系数整合起来,构造出整个插值曲线。

具体的构造方法为,对于第i个插值段,其插值函数可表示为:S_i(x) = a_i + b_i(x - x_i) + c_i(x - x_i)^2 + d_i(x - x_i)^3其中x_i和x_{i+1}为插值段的端点,a_i、b_i、c_i、d_i为第i个插值段的系数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

主程序M文件(King.m):function varargout = King(varargin)% KING MATLAB code for King.fig% KING, by itself, creates a new KING or raises the existing% singleton*.%% H = KING returns the handle to a new KING or the handle to% the existing singleton*.%% KING('CALLBACK',hObject,eventData,handles,...) calls the local% function named CALLBACK in KING.M with the given input arguments. %% KING('Property','Value',...) creates a new KING or raises the% existing singleton*. Starting from the left, property value pairs are% applied to the GUI before King_OpeningFcn gets called. An% unrecognized property name or invalid value makes property application % stop. All inputs are passed to King_OpeningFcn via varargin.%% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)".%% See also: GUIDE, GUIDATA, GUIHANDLES% Edit the above text to modify the response to help King% Last Modified by GUIDE v2.5 06-May-2013 21:39:33% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @King_OpeningFcn, ...'gui_OutputFcn', @King_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback', []);if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); elsegui_mainfcn(gui_State, varargin{:});end% End initialization code - DO NOT EDITfunction str = format_time(t) %时间格式调整函数hrs = floor(t/3600);min = floor(t/60 - 60*hrs);sec = t - 60*(min + 60*hrs);if hrs < 10h = sprintf('0%1.0f:', hrs);elseh = sprintf('%1.0f:', hrs);endif min < 10m = sprintf('0%1.0f:', min);elsem = sprintf('%1.0f:', min);endif sec < 9.9995s = sprintf('0%1.3f', sec);elses = sprintf('%1.3f', sec);endstr = [h m s];% --- Executes just before King is made visible.function King_OpeningFcn(hObject, eventdata, handles, varargin)% This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% varargin command line arguments to King (see VARARGIN)% Choose default command line output for timehandles.output = hObject;% Update handles structureguidata(hObject, handles);% UIWAIT makes time wait for user response (see UIRESUME)uiwait(handles.figure1);% --- Outputs from this function are returned to the command line.function varargout = King_OutputFcn(hObject, eventdata, handles)% varargout cell array for returning output args (see VARARGOUT);% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global Timer% Get default command line output from handles structurevarargout{1} = handles.output;stop(Timer);delete(handles.figure1);function editT_Callback(hObject, eventdata, handles)% hObject handle to editT (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of editT as text% str2double(get(hObject,'String')) returns contents of editT as a double input = str2num(get(hObject,'String'));%输入插补周期Tguidata(hObject,handles);% --- Executes during object creation, after setting all properties. function editT_CreateFcn(hObject, eventdata, handles)% hObject handle to editT (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end% --- Executes on button press in pushbuttoncontrol.function pushbuttoncontrol_Callback(hObject, eventdata, handles)% hObject handle to pushbuttoncontrol (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA) global x;global y;global n;global xn;global yn;global m;global xi;global yiif ~get(handles.togglebuttonsave,'value')%按下保存图像则不清空hold offendJoker;x=getappdata(0,'XA');y=getappdata(0,'YA');n=max(size(x));%控制点个数plot(x,y,'o',x,y);hold ongrid ond=sqrt((x(1)-x(n))^2+(y(1)-y(n))^2);if d>0.01 %开曲线增加端点x(n+2)=x(n);y(n+2)=y(n);for i=n+1:-1:2x(i)=x(i-1);y(i)=y(i-1);endelse%闭曲线增加端点íx(n+2)=x(n);y(n+2)=y(n);for i=n+1:-1:2x(i)=x(i-1);y(i)=y(i-1);endx(1)=x(n);y(1)=y(n);endglobal j;j=1;global u;u=0.05;xn=[];yn=[];xi=0;yi=0;m=1;%初始化数据global TIMETIME=0;global ntnt = str2double(get(handles.editT,'String'));%插补时间global TimerTimer= timer('Period',nt,'ExecutionMode','FixedRate','TimerFcn',{@timercallback,handles});% --- Executes on button press in pushbuttonstart.function pushbuttonstart_Callback(hObject, eventdata, handles)% hObject handle to pushbuttonstart (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global Timerglobal xn;global yn;global m;global nt;global tglobal TIMEa=0;tic;while a==0%画曲线循环t = toc;str = format_time(TIME+t );set(handles.text4, 'String', str);%时间显示pause(nt);hold onxnn=[xn(m),xn(m+1)];ynn=[yn(m),yn(m+1)];plot(xnn,ynn);%画一个点hold onif m==max(size(xn))%插补完毕跳出循环·break;else m=m+1;endif get(handles.pushbuttonstop,'value')%停止键按下终止插补m=m-1;a=1;t = toc;str = format_time(TIME+t );set(handles.text4, 'String', str);TIME=TIME+t;endend% --- Executes on button press in pushbuttonstop.function pushbuttonstop_Callback(hObject, eventdata, handles)% hObject handle to pushbuttonstop (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)stop(Timer);% --- Executes on button press in pushbutton4.function pushbutton4_Callback(hObject, eventdata, handles)% hObject handle to pushbutton4 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)close;%关闭function editF_Callback(hObject, eventdata, handles)% hObject handle to editF (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of editF as text% str2double(get(hObject,'String')) returns contents of editF as a double input = str2num(get(hObject,'String'));%输入插补速度Fguidata(hObject,handles);% --- Executes during object creation, after setting all properties.function editF_CreateFcn(hObject, eventdata, handles)% hObject handle to editF (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end% --- Executes when user attempts to close figure1.function figure1_CloseRequestFcn(hObject, eventdata, handles)% hObject handle to figure1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% Hint: delete(hObject) closes the figureuiresume;function timercallback(obj, event, handles)T=str2num(get(handles.editT,'String'));F=str2num(get(handles.editF,'String'));L=F*T/60;...global x;global y;global n;global xi;global yi;global j;global xn;global ynglobal u;if j<n,a3=(-x(j)+3*x(j+1)-3*x(j+2)+x(j+3))/2;a2=(2*x(j)-5*x(j+1)+4*x(j+2)-x(j+3))/2;a1=(-x(j)+x(j+2))/2;a0=x(j+1);b3=(-y(j)+3*y(j+1)-3*y(j+2)+y(j+3))/2;b2=(2*y(j)-5*y(j+1)+4*y(j+2)-y(j+3))/2;b1=(-y(j)+y(j+2))/2;b0=y(j+1);c0=a1^2+b1^2;c1=4*a1*a2+4*b1*b2;c2=4*a2^2+4*b2^2+6*a1*a3+6*b1*b3;c3=12*(a2*a3+b2*b3);c4=9*a3^2+9*b3^2;if j==1&&u==0.05,xi=a3*u^3+a2*u^2+a1*u+a0;yi=b3*u^3+b2*u^2+b1*u+b0;plot(xi,yi);endif u<1,z=(c4*u^4+c3*u^3+c2*u^2+c1*u+c0)^(1/2.0);detu=L/z;uz=u+detu;detx=3*a3*detu*u^2+(3*a3*detu^2+2*a2*detu)*u+(a3*detu^3+a2*detu^2+a1*detu);dety=3*b3*detu*u^2+(3*b3*detu^2+2*b2*detu)*u+(b3*detu^3+b2*detu^2+b1*detu);xz=xi+detx;yz=yi+dety;xn=[xn,xz];yn=[yn,yz];%计算好的插补点存入数组xn,ynu=uz;xi=xz;yi=yz;else j=j+1;u=0.01;endend% --- Executes on button press in pushbutton5.function pushbutton5_Callback(hObject, eventdata, handles)% hObject handle to pushbutton5 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global Timercla(handles.axes1);set(handles.editT, 'String', '');set(handles.editF, 'String', '');clear all;stop(Timer);%清空数据和曲线function []=sanciytchzh(x,y,Tp,Fp)%画曲线函数global n;L=Fp*Tp/60;...jp=1;u=0.01;xnp=[];ynp=[];while jp<n,a3=(-x(jp)+3*x(jp+1)-3*x(jp+2)+x(jp+3))/2;a2=(2*x(jp)-5*x(jp+1)+4*x(jp+2)-x(jp+3))/2;a1=(-x(jp)+x(jp+2))/2;a0=x(jp+1);b3=(-y(jp)+3*y(jp+1)-3*y(jp+2)+y(jp+3))/2;b2=(2*y(jp)-5*y(jp+1)+4*y(jp+2)-y(jp+3))/2;b1=(-y(jp)+y(jp+2))/2;b0=y(jp+1);c0=a1^2+b1^2;c1=4*a1*a2+4*b1*b2;c2=4*a2^2+4*b2^2+6*a1*a3+6*b1*b3;c3=12*(a2*a3+b2*b3);c4=9*a3^2+9*b3^2;if jp==1&&u==0.01,xi=a3*u^3+a2*u^2+a1*u+a0;yi=b3*u^3+b2*u^2+b1*u+b0;plot(xi,yi);endif u<1,z=(c4*u^4+c3*u^3+c2*u^2+c1*u+c0)^(1/2.0);detu=L/z;uz=u+detu;detx=3*a3*detu*u^2+(3*a3*detu^2+2*a2*detu)*u+(a3*detu^3+a2*detu^2+a1*detu);dety=3*b3*detu*u^2+(3*b3*detu^2+2*b2*detu)*u+(b3*detu^3+b2*detu^2+b1*detu);xz=xi+detx;yz=yi+dety;xnp=[xnp,xz];ynp=[ynp,yz];plot(xnp,ynp,'m');u=uz;xi=xz;yi=yz;else jp=jp+1;u=0.01;endend% --- Executes on button press in pushbutton6.function pushbutton6_Callback(hObject, eventdata, handles)% hObject handle to pushbutton6 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global x;global y;Tp=str2num(get(handles.editT,'String'));Fp=str2num(get(handles.editF,'String'));sanciytchzh(x, y,Tp,Fp);% --- Executes on button press in togglebuttonsave.function togglebuttonsave_Callback(hObject, eventdata, handles)% hObject handle to togglebuttonsave (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hint: get(hObject,'Value') returns toggle state of togglebuttonsave主程序GUI界面(King.fig)输入控制点M文件(Joker.m)function varargout = Joker(varargin)% JOKER MATLAB code for Joker.fig% JOKER, by itself, creates a new JOKER or raises the existing% singleton*.%% H = JOKER returns the handle to a new JOKER or the handle to% the existing singleton*.%% JOKER('CALLBACK',hObject,eventData,handles,...) calls the local% function named CALLBACK in JOKER.M with the given input arguments. %% JOKER('Property','Value',...) creates a new JOKER or raises the% existing singleton*. Starting from the left, property value pairs are% applied to the GUI before Joker_OpeningFcn gets called. An% unrecognized property name or invalid value makes property application % stop. All inputs are passed to Joker_OpeningFcn via varargin.%% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one% instance to run (singleton)".%% See also: GUIDE, GUIDATA, GUIHANDLES% Edit the above text to modify the response to help Joker% Last Modified by GUIDE v2.5 02-May-2013 20:19:13% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @Joker_OpeningFcn, ...'gui_OutputFcn', @Joker_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback', []);if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); elsegui_mainfcn(gui_State, varargin{:});end% End initialization code - DO NOT EDIT% --- Executes just before Joker is made visible.function Joker_OpeningFcn(hObject, eventdata, handles, varargin)% This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to Joker (see VARARGIN)% Choose default command line output for Jokerhandles.output = hObject;% Update handles structureguidata(hObject, handles);uiwait(handles.figureJoker);% UIWAIT makes Joker wait for user response (see UIRESUME)% uiwait(handles.figureJoker);% --- Outputs from this function are returned to the command line.function varargout = Joker_OutputFcn(hObject, eventdata, handles)% varargout cell array for returning output args (see VARARGOUT);% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Get default command line output from handles structurevarargout{1} = handles.output;delete(handles.figureJoker);function editX_Callback(hObject, eventdata, handles)% hObject handle to editX (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of editX as text% str2double(get(hObject,'String')) returns contents of editX as a double input = str2num(get(hObject,'String'));guidata(hObject,handles);% --- Executes during object creation, after setting all properties.function editX_CreateFcn(hObject, eventdata, handles)% hObject handle to editX (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction editY_Callback(hObject, eventdata, handles)% hObject handle to editY (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of editY as text% str2double(get(hObject,'String')) returns contents of editY as a double input = str2num(get(hObject,'String'));guidata(hObject,handles);% --- Executes during object creation, after setting all properties.function editY_CreateFcn(hObject, eventdata, handles)% hObject handle to editY (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end% --- Executes on button press in pushbutton1.function pushbutton1_Callback(hObject, eventdata, handles)% hObject handle to pushbutton1 (see GCBO)% handles structure with handles and user data (see GUIDATA)global XA;global YA;Xa=str2num(get(handles.editX,'String'));Ya=str2num(get(handles.editY,'String'));XA=[XA,Xa];YA=[YA,Ya];set(handles.text4, 'String', num2str(XA));set(handles.text5, 'String', num2str(YA));set(handles.editX, 'String', '');set(handles.editY, 'String', '');% --- Executes on button press in pushbutton2.function pushbutton2_Callback(hObject, eventdata, handles)% hObject handle to pushbutton2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)set(handles.editX, 'String', '');set(handles.editY, 'String', '');% --- Executes on button press in pushbutton3.function pushbutton3_Callback(hObject, eventdata, handles)% hObject handle to pushbutton3 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global XA;global YA;setappdata(0,'XA',XA); %保存数据到0句柄,即保存到matlab主程序,相当于全局变量setappdata(0,'YA',YA);uiresume(handles.figureJoker);% --- Executes on button press in pushbutton5.function pushbutton5_Callback(hObject, eventdata, handles)% hObject handle to pushbutton5 (see GCBO)% handles structure with handles and user data (see GUIDATA) set(handles.text4, 'String', '');set(handles.text5, 'String', '');clear all;输入控制点GUI界面(Joker.fig)。

相关文档
最新文档