具有形状参数的新型广义混合三角贝齐尔样曲线(GHT_Bezier_curves) matlab实现

本文主要是介绍具有形状参数的新型广义混合三角贝齐尔样曲线(GHT_Bezier_curves) matlab实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

具有形状参数的新型广义混合三角贝齐尔样曲线

    • 一、n维 GHT-Bernstein 基函数
      • 1、定义
      • 2、性质:
    • 二、基函数的matlab程序实现
      • 1、程序:
      • 2.2 基函数图像
    • 三、n维GHT-Bézier曲线(GHT-Bézier Curves of Degree n)
      • 相应程序:
      • 相应结果:
      • 注:得到的曲线应该满足凸包性质,但是有几个参数得到的曲线不在控制多边形里面(如b图中红色曲线),程序检查了几遍没查出来原因,因为这篇文章就是借鉴一下想法,就不继续研究下去了。

       
       

参考文献:Geometric Modeling of Novel Generalized Hybrid Trigonometric Bézier-Like Curve with Shape Parameters and Its Applications
       
本博客是对上述参考文献的部分程序实现

一、n维 GHT-Bernstein 基函数

1、定义

在这里插入图片描述
       论文中给出的 q 2 , 2 ( θ ) q_{ 2,2}(θ) q2,2(θ)定义不对,不满足端点性质。需要修改一点。
       下面是我修改的定义,以及写出的三阶公式:

在这里插入图片描述

2、性质:

  1. 单位分解性。
  2. 正性。
  3. 对称性。
  4. 端点插值性。
    在这里插入图片描述
    在这里插入图片描述

二、基函数的matlab程序实现

1、程序:

function GHT_Bernstein
%  三阶GHT_Bernstein基函数图像
clear;clc;
% Gma = 1;        %Gma = γ
% v = 0.2;
% beta = 0;         %β
Gma = 0.5;                                   %  Gma = γ
beta = 0;                                    %  β
v = -0.5;
x = (0:0.01:1)';
y = F0_3(x,v,Gma);
y1 = F2_3(x,v,beta,Gma);
y2 = F1_3(x,v,beta,Gma);
y3 = F3_3(x,v,Gma);
plot(x,y,'y')
title('三阶GHT-Bernstein基函数')
hold on
plot(x,y1,'b')
hold on
plot(x,y2,'g')
hold on
plot(x,y3,'r')% 二阶GHT_Bernstein基函数图像  (可以直接在命令行使用)
Gma = 0.5;                                   %  Gma = γ
beta = 0;                                    %  β
v = -0.5;x = (0:0.01:1)';
y = F1_2(x,v,beta,Gma);
y1 = F2_2(x,beta,Gma);
y2 = F0_2(x,v,Gma);
figure(2)
plot(x,y,'y')
title('二阶GHT-Bernstein基函数')
hold on
plot(x,y1,'b')
hold on
plot(x,y2,'r')
endfunction g = F0_2(x,v,Gma)
g = (1-sin(0.5*pi*x)).*(1-v*sin(0.5*pi*x)).*exp(Gma*x);
endfunction g = F1_2(x,v,beta,Gma)
g = 1 - F0_2(x,v,Gma) - F2_2(x,beta,Gma);
endfunction g = F2_2(x,beta,Gma)
g = (1-cos(0.5*pi*x)).*(1-beta*cos(0.5*pi*x)).*exp((1-x)*Gma);
endfunction g = F0_3(x,v,Gma)
g = (1-x).*F0_2(x,v,Gma);
endfunction g = F1_3(x,v,beta,Gma)
g = (1-x).*F1_2(x,v,beta,Gma) + x.*F0_2(x,v,Gma);
endfunction g = F2_3(x,v,beta,Gma)
g = (1-x).*F2_2(x,v,Gma)+x.*F1_2(x,v,beta,Gma);
endfunction g = F3_3(x,v,Gma)
g =  x.*F2_2(x,v,Gma);
end

2.2 基函数图像

在这里插入图片描述
在这里插入图片描述

三、n维GHT-Bézier曲线(GHT-Bézier Curves of Degree n)

1
在这里插入图片描述
在这里插入图片描述

相应程序:

function [Px,Py,px,py] = GHT_Bezier_curves(v,beta,Gma)
px=[0,2,3,5];
py=[0,1,0,1];                              %  控制顶点(0,0),(2,1),(3,0),(5,1)x = (0:0.005:1)';
y0 = F0_3(x,v,Gma);
y1 = F1_3(x,v,beta,Gma);
y2 = F2_3(x,v,beta,Gma);
y3 = F3_3(x,v,Gma);Px = y0*px(1) + y1.*px(2) + y2*px(3) + y3.*px(4);
Py = y0*py(1) + y1.*py(2) + y2*py(3) + y3.*py(4);endfunction g = F0_2(x,v,Gma)
g = (1-sin(0.5*pi*x)).*(1-v*sin(0.5*pi*x)).*exp(Gma*x);
endfunction g = F1_2(x,v,beta,Gma)
g = 1 - F0_2(x,v,Gma) - F2_2(x,beta,Gma);
endfunction g = F2_2(x,beta,Gma)
g = (1-cos(0.5*pi*x)).*(1-beta*cos(0.5*pi*x)).*exp((1-x)*Gma);
endfunction g = F0_3(x,v,Gma)
g = (1-x).*F0_2(x,v,Gma);
endfunction g = F1_3(x,v,beta,Gma)
g = (1-x).*F1_2(x,v,beta,Gma) + x.*F0_2(x,v,Gma);
endfunction g = F2_3(x,v,beta,Gma)
g = (1-x).*F2_2(x,v,Gma)+x.*F1_2(x,v,beta,Gma);
endfunction g = F3_3(x,v,Gma)
g =  x.*F2_2(x,v,Gma);
end

将上述代码保存为函数,用下面代码调用实现:

clear;clc;
%调用GHT_Bezier_curves(v,beta,Gma)函数
%  论文Figure2 中的(a)图像的实现
Gma = 1;                                   %  Gma = γ
beta = 0;                                    %  β
v = 0.95;
[Px,Py,px,py] = GHT_Bezier_curves(v,beta,Gma);
figure(1)
plot(Px,Py,'r',px,py,'b',px,py,'mo')
xlabel('x-axis'), ylabel('y-axes');
title('figure2 (a)')
hold on
v = 0.5;
[Px,Py,px,py] = GHT_Bezier_curves(v,beta,Gma);
plot(Px,Py,'y',px,py,'b',px,py,'m*')
hold on
v = -0.1;
[Px,Py,px,py] = GHT_Bezier_curves(v,beta,Gma);
plot(Px,Py,'m',px,py,'b',px,py,'m*')
hold on
v = -0.6;
[Px,Py,px,py] = GHT_Bezier_curves(v,beta,Gma);
plot(Px,Py,'g',px,py,'b',px,py,'m*')
hold on%  论文Figure2 中的(b)图像的实现
Gma = 0.5;                                   %  Gma = γ
beta = 0;                                    %  β
v = -0.5;
[Px,Py,px,py] = GHT_Bezier_curves(v,beta,Gma);
figure(2)
plot(Px,Py,'r',px,py,'b',px,py,'mo')
xlabel('x-axis'), ylabel('y-axes');
title('figure2 (b)')
hold on
v = 0;
[Px,Py,px,py] = GHT_Bezier_curves(v,beta,Gma);
plot(Px,Py,'y',px,py,'b',px,py,'m*')
hold on
v = 0.5;
[Px,Py,px,py] = GHT_Bezier_curves(v,beta,Gma);
plot(Px,Py,'m',px,py,'b',px,py,'m*')
hold on
v = 1;
[Px,Py,px,py] = GHT_Bezier_curves(v,beta,Gma);
plot(Px,Py,'g',px,py,'b',px,py,'m*')
hold on%  论文Figure2 中的(d)图像的实现
Gma = 0;                                   %  Gma = γ
beta = 1;                                    %  β
v = 1;
[Px,Py,px,py] = GHT_Bezier_curves(v,beta,Gma);
figure(4)
plot(Px,Py,'r',px,py,'b',px,py,'mo')
xlabel('x-axis'), ylabel('y-axes');
title('figure2 (d)')
hold on
Gma = 0.5;   
[Px,Py,px,py] = GHT_Bezier_curves(v,beta,Gma);
plot(Px,Py,'y',px,py,'b',px,py,'m*')
hold on
Gma = -0.5;   
[Px,Py,px,py] = GHT_Bezier_curves(v,beta,Gma);
plot(Px,Py,'m',px,py,'b',px,py,'m*')
hold on
Gma = -1;   
[Px,Py,px,py] = GHT_Bezier_curves(v,beta,Gma);
plot(Px,Py,'g',px,py,'b',px,py,'m*')
hold on

相应结果:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注:得到的曲线应该满足凸包性质,但是有几个参数得到的曲线不在控制多边形里面(如b图中红色曲线),程序检查了几遍没查出来原因,因为这篇文章就是借鉴一下想法,就不继续研究下去了。

      
       
       

这篇关于具有形状参数的新型广义混合三角贝齐尔样曲线(GHT_Bezier_curves) matlab实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/248979

相关文章

C++对象布局及多态实现探索之内存布局(整理的很多链接)

本文通过观察对象的内存布局,跟踪函数调用的汇编代码。分析了C++对象内存的布局情况,虚函数的执行方式,以及虚继承,等等 文章链接:http://dev.yesky.com/254/2191254.shtml      论C/C++函数间动态内存的传递 (2005-07-30)   当你涉及到C/C++的核心编程的时候,你会无止境地与内存管理打交道。 文章链接:http://dev.yesky

通过SSH隧道实现通过远程服务器上外网

搭建隧道 autossh -M 0 -f -D 1080 -C -N user1@remotehost##验证隧道是否生效,查看1080端口是否启动netstat -tuln | grep 1080## 测试ssh 隧道是否生效curl -x socks5h://127.0.0.1:1080 -I http://www.github.com 将autossh 设置为服务,隧道开机启动

YOLOv8改进 | SPPF | 具有多尺度带孔卷积层的ASPP【CVPR2018】

💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 专栏目录 :《YOLOv8改进有效涨点》专栏介绍 & 专栏目录 | 目前已有40+篇内容,内含各种Head检测头、损失函数Loss、Backbone、Neck、NMS等创新点改进——点击即可跳转 Atrous Spatial Pyramid Pooling (ASPP) 是一种在深度学习框架中用于语义分割的网络结构,它旨

ABAP怎么把传入的参数刷新到内表里面呢?

1.在执行相关的功能操作之前,优先执行这一段代码,把输入的数据更新入内表里面 DATA: lo_guid TYPE REF TO cl_gui_alv_grid.CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'IMPORTINGe_grid = lo_guid.CALL METHOD lo_guid->check_changed_data.CALL M

时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测

时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测 目录 时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测基本介绍程序设计参考资料 基本介绍 MATLAB实现LSTM时间序列未来多步预测-递归预测。LSTM是一种含有LSTM区块(blocks)或其他的一种类神经网络,文献或其他资料中LSTM区块可能被描述成智能网络单元,因为

vue项目集成CanvasEditor实现Word在线编辑器

CanvasEditor实现Word在线编辑器 官网文档:https://hufe.club/canvas-editor-docs/guide/schema.html 源码地址:https://github.com/Hufe921/canvas-editor 前提声明: 由于CanvasEditor目前不支持vue、react 等框架开箱即用版,所以需要我们去Git下载源码,拿到其中两个主

android一键分享功能部分实现

为什么叫做部分实现呢,其实是我只实现一部分的分享。如新浪微博,那还有没去实现的是微信分享。还有一部分奇怪的问题:我QQ分享跟QQ空间的分享功能,我都没配置key那些都是原本集成就有的key也可以实现分享,谁清楚的麻烦详解下。 实现分享功能我们可以去www.mob.com这个网站集成。免费的,而且还有短信验证功能。等这分享研究完后就研究下短信验证功能。 开始实现步骤(新浪分享,以下是本人自己实现

基于Springboot + vue 的抗疫物质管理系统的设计与实现

目录 📚 前言 📑摘要 📑系统流程 📚 系统架构设计 📚 数据库设计 📚 系统功能的具体实现    💬 系统登录注册 系统登录 登录界面   用户添加  💬 抗疫列表展示模块     区域信息管理 添加物资详情 抗疫物资列表展示 抗疫物资申请 抗疫物资审核 ✒️ 源码实现 💖 源码获取 😁 联系方式 📚 前言 📑博客主页:

探索蓝牙协议的奥秘:用ESP32实现高质量蓝牙音频传输

蓝牙(Bluetooth)是一种短距离无线通信技术,广泛应用于各种电子设备之间的数据传输。自1994年由爱立信公司首次提出以来,蓝牙技术已经经历了多个版本的更新和改进。本文将详细介绍蓝牙协议,并通过一个具体的项目——使用ESP32实现蓝牙音频传输,来展示蓝牙协议的实际应用及其优点。 蓝牙协议概述 蓝牙协议栈 蓝牙协议栈是蓝牙技术的核心,定义了蓝牙设备之间如何进行通信。蓝牙协议

python实现最简单循环神经网络(RNNs)

Recurrent Neural Networks(RNNs) 的模型: 上图中红色部分是输入向量。文本、单词、数据都是输入,在网络里都以向量的形式进行表示。 绿色部分是隐藏向量。是加工处理过程。 蓝色部分是输出向量。 python代码表示如下: rnn = RNN()y = rnn.step(x) # x为输入向量,y为输出向量 RNNs神经网络由神经元组成, python