ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 216|回复: 4

[分享] 贝塞尔曲线计算摸索过程

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-10-16 12:12 | 显示全部楼层 |阅读模式
之前一直想给PPT加一个像CAD一样的沿曲线路径阵列的功能,但是一直没敢动手,PPT里面的曲线都是三阶贝塞尔曲线,看看公式就一大堆,尤其是反算长度,没有函数,要用数值积分法,想想大量的运算,执行的效率,就暂时放弃了。后面又开始无聊了,找事情做做,就又准备啃啃这个贝塞尔曲线了。搞了几天,在网上翻了大量的贝塞尔曲线的介绍,了解了画是很简单的,但是要反算长度还是有些麻烦的,看了很多帖子,问了AI(没啥用),自己实践了一番,还是基本搞清楚了。

曲线阵列.gif

分享一点经验:
三阶贝塞尔曲线,参考网上的办法,就是点公式转换为t的参数公式通过积分求得长度的。
写出积分前的函数公式,这个其实比较简单,参考:https://blog.csdn.net/LuDanTongXue/article/details/117000752,这个贴里面有公式,我自己也算了一遍,公式没问题。
数值积分,采用龙贝格积分法,参考:https://www.cnblogs.com/duye/p/9118957.html,这个博客里面有龙贝格积分的程序步骤,当然我并没Copy他的程序,只是参考了步骤。(这里需要注意的收敛精度,我在PPT里面给到0.001时,程序是会很慢的,后面调到0.1就好很多了,PPT的单位磅,0.1磅的偏差在屏幕上都不到1个像素,所以,基本精度再高意义不大了)
利用上面的思路,既然可以计算曲线长度了,指定一个长度要返回点,就得试算了。我采用对t进行的二分法逼近,精度也在0.1左右。这个是我自己的想法,目前看起来10几个点在曲线上好像也挺快,不知道多了会不会效率降低。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-16 17:01 | 显示全部楼层
阵列目的基本实现,基本在50个对象以内,程序执行效率问题不大,不会感觉明显滞后。

曲线阵列.gif

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-17 15:16 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
更进一步的开挖曲线等分功能,阵列一段文字:

曲线阵列.gif

TA的精华主题

TA的得分主题

发表于 2024-11-4 14:07 | 显示全部楼层
你这个软件,是自己写的,还是下载的,叫曲线阵列吗?能不能共享啊?

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-11-4 21:20 | 显示全部楼层
dongdonggege 发表于 2024-11-4 14:07
你这个软件,是自己写的,还是下载的,叫曲线阵列吗?能不能共享啊?

自己写的PPT插件,还没搞完,所以,还没共享出来!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-21 17:28 , Processed in 0.034780 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表