文章目录

  • 一、空间曲线的曲率计算方法
  • 二、空间曲线的曲率计算matlab代码

一、空间曲线的曲率计算方法

  方法一,参考张学东的论文《空间曲线的曲率计算方法》:

  方法二,参考博文:空间曲线的弧长与曲率

二、空间曲线的曲率计算matlab代码

%{Function: calculate_curvature_of_spatial_curve
Description: 计算空间曲线的曲率
Input: 速度向量v,加速度向量a
Output: 空间曲线的曲率k,求解结果状态sta(sta = 0表示求解失败,sta = 1表示求解成功)
Author: Marc Pony(marc_pony@163.com)
%}
function [k, sta] = calculate_curvature_of_spatial_curve(v, a)normV = norm(v, 2);
normA = norm(a, 2);
dotVA = dot(v, a);
temp = (normA * normV - dotVA) * (normA * normV + dotVA);
if temp >= 0.0 && normV > epsk = sqrt(temp) / normV / normV / normV;sta = 1;
elsek = 0.0;sta = 0;
end
end
%{Function: calculate_curvature_of_spatial_curve2
Description: 计算空间曲线的曲率
Input: 速度向量v,加速度向量a
Output: 空间曲线的曲率k,求解结果状态sta(sta = 0表示求解失败,sta = 1表示求解成功)
Author: Marc Pony(marc_pony@163.com)
%}
function [k, sta] = calculate_curvature_of_spatial_curve2(v, a)normV = norm(v, 2);
if normV > epsk = norm(cross(v, a), 2) / normV / normV / normV;sta = 1;
elsek = 0.0;sta = 0;
endend
clc
clear
close all%三次Bezier曲线C(u) = (1-u)^3 * P0 + 3*u*(1-u)^2*P1 + 3*u^2*(1-u)*P2 + u^3*P3
%                  = (3*P1 - P0 - 3*P2 + P3)*u^3 + (3*P0 - 6*P1 + 3*P2)*u^2 + (3*P1 - 3*P0)*u + P0syms P0 P1 P2 P3 u
collect(expand((1-u)^3 * P0 + 3*u*(1-u)^2*P1 + 3*u^2*(1-u)*P2 + u^3*P3 ))P0 = [0, 0, 0];
P1 = [10, 30, 0];
P2 = [20, 5, 0];
P3 = [30, 30, 0];n = 300;
u = linspace(0, 1, n);
k = zeros(n, 1);
k2 = zeros(n, 1);
sta = zeros(n, 1);
sta2 = zeros(n, 1);
p = zeros(n, 3);
v = zeros(n, 3);
a = zeros(n, 3);
for i = 1 : np(i, :) = (3*P1 - P0 - 3*P2 + P3)*u(i)^3 + (3*P0 - 6*P1 + 3*P2)*u(i)^2 + (3*P1 - 3*P0)*u(i) + P0;v(i, :) = 3 * (3*P1 - P0 - 3*P2 + P3)*u(i)^2 + 2*(3*P0 - 6*P1 + 3*P2)*u(i) + (3*P1 - 3*P0);a(i, :) = 6 * (3*P1 - P0 - 3*P2 + P3)*u(i) + 2*(3*P0 - 6*P1 + 3*P2);[k(i), sta(i)] = calculate_curvature_of_spatial_curve(v(i, :), a(i, :));[k2(i), sta2(i)] = calculate_curvature_of_spatial_curve2(v(i, :), a(i, :));
end
error = sum(abs(k-k2))R = 1./ k;  %曲率半径figure
subplot(3, 1, 1)
plot3(p(:, 1), p(:, 2), p(:, 3), '-')
hold on
plot3([P0(1), P1(1), P2(1), P3(1)],[P0(2), P1(2), P2(2), P3(2)],[P0(3), P1(3), P2(3), P3(3)], 'o-')
ylabel('Bezier曲线')
view([0 0 1])
subplot(3, 1, 2)
plot(u, k, '-')
ylabel('曲率')
subplot(3, 1, 3)
plot(u, R, '-')
ylabel('曲率半径')

空间曲线的曲率计算方法(附代码)相关推荐

  1. 曲率高斯滤波去噪python实现(附代码详解)

    曲率高斯滤波去噪python实现(附代码详解) 曲率滤波的理论基础可以参考下曲率滤波的理论基础和应用,这篇博客介绍的思想完美的避开了一大堆数学公式,简直是我的福音,但还是要细看的,不然很容易忽略重点, ...

  2. 循环神经网络RNN 2—— attention注意力机制(附代码)

    attention方法是一种注意力机制,很明显,是为了模仿人的观察和思维方式,将注意力集中到关键信息上,虽然还没有像人一样,完全忽略到不重要的信息,但是其效果毋庸置疑,本篇我们来总结注意力机制的不同方 ...

  3. 推荐系统入门(二):协同过滤(附代码)

    推荐系统入门(二):协同过滤(附代码) 目录 推荐系统入门(二):协同过滤(附代码) 引言 1. 相似性度量方法 1.1 杰卡德(Jaccard)相似系数 1.2 余弦相似度 1.3 皮尔逊相关系数 ...

  4. 图像处理/计算机视觉/ python环境下如何用滤波器(/逆滤波/均值滤波/低通滤波/高通滤波)处理图片【附代码】

    计算机视觉滤波器实操 基础知识 一. 计算机视觉技术中常见的几种滤波器 二.滤波器相关知识 应用一:算术均值.几何均值.谐波逆谐波 一.问题分析 二.结果图 三.代码附录 应用二:维纳滤波,逆滤波 一 ...

  5. 【第4期-智能驾驶汽车系列术语概念解析】第3节:基于三点参数方程的曲率计算方法

    目录 前言 一.基于三点参数方程的曲率计算方法 二.实例介绍 1.MATLAB代码 2.结果分析 总结 前言 第2节中,我们介绍了基于三点求外接圆的曲率,这种方法是一种最为精确的.基于数学原理的计算方 ...

  6. 相位 unwrap 与 wrap 算法详解(附代码)

    相位 unwrap 与 wrap 算法详解(附代码) 最近接手了一个项目,光通信方面的,我负责编写初测结果的数据处理算法,其中有一个算法叫做 unwrap 与 wrap,之前没有听说过.通过询问同事与 ...

  7. 曲线拟合——最小二乘拟合(附代码)

    曲线拟合--最小二乘拟合(附代码) 曲线拟合 1 一元函数的最小二乘拟合 1.1 线性回归(直线的最小二乘拟合) 1.1.1 直线的最佳拟合方法 1.1.2 如何计算 1.1.3 误差量化分析 1.2 ...

  8. 深度学习掩膜_交叉新趋势|采用神经网络与深度学习来预报降水、温度等案例(附代码/数据/文献)...

    欢迎订阅微信公众号:『气象学家』 阅读建议 随着人工智能的发展,拥有了越来越丰富的应用场景,气象行业也不例外,在突破传统预报方法的情况下,神经网络与深度学习来预报气象要素也取得了不错的效果,下面就给出 ...

  9. 推荐系统入门(五):GBDT+LR(附代码)

    推荐系统入门(五):GBDT+LR(附代码) 目录 推荐系统入门(五):GBDT+LR(附代码) 引言 1. GBDT模型 2. LR模型 3. GBDT+LR模型 4. 编程实践 实战 思考 参考资 ...

最新文章

  1. expec不管异常 try_python3基础之异常处理(通俗易懂)
  2. .Net定时弹出窗口(c#)
  3. 制备pdms膜的方法_“轻若鸿毛”的新型高弹性石墨烯-PDMS传感器
  4. perl unload gbk oracle 数据库
  5. mysql测试题汇总_总结:SQL练习【SQL经典练习题】
  6. c++并发编程基础(一):并发、并行域多线程
  7. go初探 - 生成随机整数
  8. es5中数组方法unshift、splice、reduce使用
  9. 哪个相机可以拍gif动图_你见过最搞笑的gif是什么?那些搞笑的动图都是用什么gif制作app制作的?...
  10. 生成26个大小写字母和0-9的六位随机验证码(python3.X)
  11. java 获取视频时长
  12. Windows:文件系统FAT32、NTFS和exFAT
  13. SharePoint 模拟审批Nintex工作流
  14. 重心法-判断一点是否在三角形内
  15. 开发用于互操作性的应用程序_云标准:确保云应用互操作性的工具
  16. 网易云音乐分析之推荐算法
  17. StudyNotes_MachineLearning_2(吴恩达机器学习公开课)
  18. 对 Viper RGB 驱动多个缓冲区溢出漏洞的分析
  19. 男朋友转行 Java 失败,找不到工作
  20. VB作业之字母大小写的转换

热门文章

  1. 一个和二维泊松求和有关的公式(推导Ewald级数中有用,运用了2D泊松求和公式,傅里叶变换的位移性质)
  2. 视频安全之视频播放密码功能(设置观看密码功能教程)
  3. 把AI生成的数据喂给AI
  4. response里的setHeader用法
  5. excel做地图热力图_汇报更出彩使用Excel制作热力图
  6. datepick二格式 化时间_jQuery DatePicker dateFormat日期格式
  7. 美国Ivanpah太阳能发电站:飞经这里的鸟都被烧焦了
  8. 手机飞行模式到底有什么用?谁有谁的看法,但知道实用的人并不多
  9. 解决:服务正在启动 . RabbitMQ 服务无法启动。 系统出错。 发生系统错误 1067。 进程意外终止。
  10. 简单的字符驱动例子包括读写、装载等