文章目录

  • 一、实现原理
    • 1.1、计算点到直线的距离——海伦公式
    • 1.2、弓高和弦长计算半径
  • 二、python实现曲率计算

最近需要对曲线的曲率做一个粗略的估计,在此记录下。其实计算曲率就是为了求这段弧长对应的半径,也就是说,我们把曲线看成圆的弧长就行,那么问题就简单了。

一、实现原理

1.1、计算点到直线的距离——海伦公式

如下图所示,要计算A到CB的长度。

设Δ\DeltaΔABC的三条边分别为a,b,c,那么海伦公式计算面积S如下:
S=p(p−a)(p−b)(p−c)其中:p=12(a+b+c)S=\sqrt{p(p-a)(p-b)(p-c)} \\ 其中: p=\frac{1}{2}(a+b+c) S=p(p−a)(p−b)(p−c)​其中:p=21​(a+b+c)
将p带入海伦公式,得:
S=14(a+b+c)(a+b−c)(a+c−b)(b+c−a)S=\frac{1}{4}\sqrt{(a+b+c)(a+b-c)(a+c-b)(b+c-a)} S=41​(a+b+c)(a+b−c)(a+c−b)(b+c−a)​
如下图所示,AD是A到直线BC的距离,即是AD是Δ\DeltaΔABC边BC上的高

S=a∗AD2S=\frac{a*AD}{2} S=2a∗AD​
即:
14(a+b+c)(a+b−c)(a+c−b)(b+c−a)=a∗AD2\frac{1}{4}\sqrt{(a+b+c)(a+b-c)(a+c-b)(b+c-a)}=\frac{a*AD}{2} 41​(a+b+c)(a+b−c)(a+c−b)(b+c−a)​=2a∗AD​

合并可以得:
AD=12a(a+b+c)(a+b−c)(a+c−b)(b+c−a)AD=\frac{1}{2a}\sqrt{(a+b+c)(a+b-c)(a+c-b)(b+c-a)} AD=2a1​(a+b+c)(a+b−c)(a+c−b)(b+c−a)​

1.2、弓高和弦长计算半径

如图所示,我们已知了弦长L和弓高H,需要求R。我们可以根据三角形得勾股定理求得。

对于直角三角形OPQ,OP=R-H,OQ=R,PQ=L2\frac{L}{2}2L​,那么计算如下:
R2=(L2)2+(R−H)2R2=L44+R2−2RH+H22RH=L44+H2R=L24+H22HR^{2}=(\frac{L}{2})^{2}+(R-H)^{2} \\ R^{2}= \frac{L^{4}}{4}+R^{2}-2RH+H^{2} \\ 2RH=\frac{L^{4}}{4}+H^{2} \\ R=\frac{\frac{L^{2}}{4}+H^{2}}{2H} R2=(2L​)2+(R−H)2R2=4L4​+R2−2RH+H22RH=4L4​+H2R=2H4L2​+H2​

二、python实现曲率计算

import numpy as np
def get_arc_curve(pts):'''获取弧度值:param pts::return:'''# 计算弦长start = np.array(pts[0])end = np.array(pts[len(pts) - 1])l_arc = np.sqrt(np.sum(np.power(end - start, 2)))# 计算弧上的点到直线的最大距离# 计算公式:\frac{1}{2a}\sqrt{(a+b+c)(a+b-c)(a+c-b)(b+c-a)}a = l_arcb = np.sqrt(np.sum(np.power(pts - start, 2), axis=1))c = np.sqrt(np.sum(np.power(pts - end, 2), axis=1))dist = np.sqrt((a + b + c) * (a + b - c) * (a + c - b) * (b + c - a)) / (2 * a)h = dist.max()# 计算曲率r = ((a * a) / 4 + h * h) / (2 * h)return rif __name__ == '__main__':x = np.linspace(1, 100, 99).astype(np.int64)y = (x ** 2)xy = list(zip(x, y))  # list of points in 2D spaceprint(get_arc_curve(xy))

参考连接:

有弦长弓高怎么算半径

【编程】快速计算点到直线距离,不用点斜式

OpenCV:简单计算曲线弧度-弓形弧度

基于python计算曲线的曲率相关推荐

  1. python做cae库,基于Python的CAE自动后处理开发

    以下文章来源于CAE数值优化轻量化,作者方永利 前面讲到了基于meta和hypergraph进行NVH分析(IPI.VTF.NTF)自动后处理,包括结果提取和自动出报告等功能. 基于META自动后处理 ...

  2. 【CV】OpenCV(基于Python)学习笔记

    以下内容中的页码均来自<OpenCV 4详解 : 基于Python> 目录 第2章 载入.显示与保存数据 2.2 图像的读取与显示 2.2.1 图像读取函数 cv.imread() 2.2 ...

  3. 基于Python的人工智能美颜系统

    基于Python的人工智能美颜系统使用PyQt5模块搭建可视化界面,使用Dlib模型(shape_predictor_68_face_landmarks.dat)实现人脸关键点检测和定位,人脸美颜(美 ...

  4. python深度神经网络量化_基于Python建立深度神经网络!你学会了嘛?

    原标题:基于Python建立深度神经网络!你学会了嘛? 图1 神经网络构造的例子(符号说明:上标[l]表示与第l层:上标(i)表示第i个例子:下标i表示矢量第i项) 单层神经网络 图2 单层神经网络示 ...

  5. python selenium脚本_怎样开始写第一个基于python的selenium脚本

    1.下载并安装python(http://www.python.org/geti/). 2.安装selenium(http://pypi.python.org/pypi/selenium)下载并解压缩 ...

  6. 【组队学习】【31期】基于Python的办公自动化

    基于Python的办公自动化 航路开辟者:牧小熊.刘雯静.张晓东.吴争光.隆军 领航员:六一 航海士:牧小熊.李显.刘羽中.王晓亮 基本信息 开源内容:https://github.com/dataw ...

  7. 【组队学习】曹志宾:基于Python的会员数据化运营

    分享人:曹志宾,Datawhale成员,香港科技大学硕士在读 分享内容: 案例描述与分析 前期准备与数据预处理 RFM模型使用与操作 Excel中的RFM分析 组队学习: 红星:基于Python的会员 ...

  8. 【组队学习】孙健坤:基于Python的会员数据化运营

    分享人:孙健坤,哈尔滨工业大学 分享内容: 什么是会员制? 什么是会员数据化运营? 如何进行会员数据化运营 组队学习: 基于Python的会员数据化运营 开源内容: https://github.co ...

  9. 【组队学习】【28期】基于Python的会员数据化运营

    基于Python的会员数据化运营 论坛版块: http://datawhale.club/c/team-learning/37-category/37 开源内容: https://github.com ...

最新文章

  1. windows下python2.7.14版本的安装
  2. python详细安装教程linux-python 在linux系统的安装教程
  3. [计算机网络] 【谢希仁】考前突击复习二、三、四章
  4. mysql高频面试题合集
  5. 010editor的破解
  6. 原型链面向对象----多态
  7. cad能自学成才吗_我在6个月内成为一名自学成才的开发人员,所以你能
  8. 亚马逊FBA相关术语介绍
  9. 计算机故障处理试题,模块五计算机故障诊断与排除 测试题
  10. Centos7 Cacti(仙人掌)
  11. facebook修改权限_如何在Facebook上更改您的名字
  12. 三维家可以导入别人的方案吗_怎么把su模型导入三维家
  13. 【蓝桥杯真题练习】STEMA科技素养练习题库 练习版004 持续更新中~
  14. FL Studio20.9水果个人工作室必备DAW编曲制作
  15. 18.10.9 实验吧----分道扬镳
  16. 注册表注册自定义协议
  17. 通过Webkit远程调试协议监听网页崩溃
  18. origin 三维坐标中 多条曲线 waterfall 瀑布图
  19. 万万没想到,用浏览器打开终端竟这么容易实现
  20. 车间电子看板,让生产线透明化

热门文章

  1. HP4100 控制面板的信息
  2. 实现某年某月某日是星期几
  3. 【android UI学习】LinearGradient实现歌词滚动
  4. D - 8 Puzzle on Graph题解
  5. 随机信号处理习题答案与往年考题
  6. 2017网易游戏测试工程师-实习招聘在线笔试题
  7. 如今电商时代,传统电商该如何破局? Smartbi教你几个分析方法
  8. oracle的Oem中设置联合主键,oracle添加联合主键,oracle联合主键
  9. fpga的硬件加速原理
  10. 如何在Windows中查询证书颁发机构已颁发的证书