空间曲线的曲率计算方法(附代码)
文章目录
- 一、空间曲线的曲率计算方法
- 二、空间曲线的曲率计算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('曲率半径')
空间曲线的曲率计算方法(附代码)相关推荐
- 曲率高斯滤波去噪python实现(附代码详解)
曲率高斯滤波去噪python实现(附代码详解) 曲率滤波的理论基础可以参考下曲率滤波的理论基础和应用,这篇博客介绍的思想完美的避开了一大堆数学公式,简直是我的福音,但还是要细看的,不然很容易忽略重点, ...
- 循环神经网络RNN 2—— attention注意力机制(附代码)
attention方法是一种注意力机制,很明显,是为了模仿人的观察和思维方式,将注意力集中到关键信息上,虽然还没有像人一样,完全忽略到不重要的信息,但是其效果毋庸置疑,本篇我们来总结注意力机制的不同方 ...
- 推荐系统入门(二):协同过滤(附代码)
推荐系统入门(二):协同过滤(附代码) 目录 推荐系统入门(二):协同过滤(附代码) 引言 1. 相似性度量方法 1.1 杰卡德(Jaccard)相似系数 1.2 余弦相似度 1.3 皮尔逊相关系数 ...
- 图像处理/计算机视觉/ python环境下如何用滤波器(/逆滤波/均值滤波/低通滤波/高通滤波)处理图片【附代码】
计算机视觉滤波器实操 基础知识 一. 计算机视觉技术中常见的几种滤波器 二.滤波器相关知识 应用一:算术均值.几何均值.谐波逆谐波 一.问题分析 二.结果图 三.代码附录 应用二:维纳滤波,逆滤波 一 ...
- 【第4期-智能驾驶汽车系列术语概念解析】第3节:基于三点参数方程的曲率计算方法
目录 前言 一.基于三点参数方程的曲率计算方法 二.实例介绍 1.MATLAB代码 2.结果分析 总结 前言 第2节中,我们介绍了基于三点求外接圆的曲率,这种方法是一种最为精确的.基于数学原理的计算方 ...
- 相位 unwrap 与 wrap 算法详解(附代码)
相位 unwrap 与 wrap 算法详解(附代码) 最近接手了一个项目,光通信方面的,我负责编写初测结果的数据处理算法,其中有一个算法叫做 unwrap 与 wrap,之前没有听说过.通过询问同事与 ...
- 曲线拟合——最小二乘拟合(附代码)
曲线拟合--最小二乘拟合(附代码) 曲线拟合 1 一元函数的最小二乘拟合 1.1 线性回归(直线的最小二乘拟合) 1.1.1 直线的最佳拟合方法 1.1.2 如何计算 1.1.3 误差量化分析 1.2 ...
- 深度学习掩膜_交叉新趋势|采用神经网络与深度学习来预报降水、温度等案例(附代码/数据/文献)...
欢迎订阅微信公众号:『气象学家』 阅读建议 随着人工智能的发展,拥有了越来越丰富的应用场景,气象行业也不例外,在突破传统预报方法的情况下,神经网络与深度学习来预报气象要素也取得了不错的效果,下面就给出 ...
- 推荐系统入门(五):GBDT+LR(附代码)
推荐系统入门(五):GBDT+LR(附代码) 目录 推荐系统入门(五):GBDT+LR(附代码) 引言 1. GBDT模型 2. LR模型 3. GBDT+LR模型 4. 编程实践 实战 思考 参考资 ...
最新文章
- expec不管异常 try_python3基础之异常处理(通俗易懂)
- .Net定时弹出窗口(c#)
- 制备pdms膜的方法_“轻若鸿毛”的新型高弹性石墨烯-PDMS传感器
- perl unload gbk oracle 数据库
- mysql测试题汇总_总结:SQL练习【SQL经典练习题】
- c++并发编程基础(一):并发、并行域多线程
- go初探 - 生成随机整数
- es5中数组方法unshift、splice、reduce使用
- 哪个相机可以拍gif动图_你见过最搞笑的gif是什么?那些搞笑的动图都是用什么gif制作app制作的?...
- 生成26个大小写字母和0-9的六位随机验证码(python3.X)
- java 获取视频时长
- Windows:文件系统FAT32、NTFS和exFAT
- SharePoint 模拟审批Nintex工作流
- 重心法-判断一点是否在三角形内
- 开发用于互操作性的应用程序_云标准:确保云应用互操作性的工具
- 网易云音乐分析之推荐算法
- StudyNotes_MachineLearning_2(吴恩达机器学习公开课)
- 对 Viper RGB 驱动多个缓冲区溢出漏洞的分析
- 男朋友转行 Java 失败,找不到工作
- VB作业之字母大小写的转换
热门文章
- 一个和二维泊松求和有关的公式(推导Ewald级数中有用,运用了2D泊松求和公式,傅里叶变换的位移性质)
- 视频安全之视频播放密码功能(设置观看密码功能教程)
- 把AI生成的数据喂给AI
- response里的setHeader用法
- excel做地图热力图_汇报更出彩使用Excel制作热力图
- datepick二格式 化时间_jQuery DatePicker dateFormat日期格式
- 美国Ivanpah太阳能发电站:飞经这里的鸟都被烧焦了
- 手机飞行模式到底有什么用?谁有谁的看法,但知道实用的人并不多
- 解决:服务正在启动 . RabbitMQ 服务无法启动。 系统出错。 发生系统错误 1067。 进程意外终止。
- 简单的字符驱动例子包括读写、装载等