+发表新主题
snowzyt 发表于 2024-10-19 18:53:05
acad 画与样条曲线相切的圆

定义:精确度,在曲线解析中指允许存在某个误差的最大值的绝对值。
      准确值,在曲线解析中指有唯一可定性可定量且可复查的确切值。注意,这里不说准确度。
      步程,指在曲线解析中,从起点到终点按某种规则进行分段后的各小段曲线。类似两片公路里程碑间所截断的曲线区域。
定义为我制定的规则,仅仅为初识曲线的人做入门理解方便,如不认同,也可以视为歪理邪说吧。


原题“如何将一个样条曲线平均分成100份,将各点处的坐标,斜率,曲率写入数据文件”的
准确题目应该是“如何将样条曲线以曲线总长等分成100份,将各点处的坐标,斜率,曲率写入数据文件”
如果理解成以X轴或曲线的拟合斜线的斜轴做100等分则为实验室用或纯数学分析或处于某个统计需要的算法而来,按这种情况解是容易的,且能获得准确值。 但应该不是楼主原意。

解这题目首先要确定你对数据精度的要求,如果要求纯粹的数学准确值来求解,要等acad2044版。
如果是用于机械制造,那么产品精度0.001毫米时,等分的各项精度控制在0.000001是可以实现的。
如果是用于大地测量应用或航拍航片处理叠加行迹处理,那精度控制住0.00000001373是也是能满足民用需求。
不同精度编制的软件结构都不一样,因为要控制自身算法造成的大数相除或大数除小数造成的算子溢出截断。
用autolisp即可,这样的代码相对VBA直观,且编写成本也低。
做法:
1#  利用acad自动提取样条曲线长度(实际上,acad求样条曲线周长的算法也不是准确的,而是某种程度的精确,因为内部算法是基于“b样条曲线 ”即bezier曲线。 但如果是从其他三维软件导入到acad的,则有可能是“非均匀有理B样条(NURBS)”,同样的控制结点会有两条不同的曲线,误差很可观,至少在工业应用级别,此处不详述)
2#  用DIVIDE命令进行等分会获得曲线等分点。(相对精确,理由同1#) 则【各点处的坐标】已得,同时写入文件。
3#  用lisp循环语句搜集所有等分点,且制定起点及终点,并回显核对扑捉的制定起点及终点是否准确。 因为曲线有可能因“缠绕”而出现交叉,这时会出现下一点走向歧路。 如果是水平轴方向上下波动不回头的曲线则简单些,但也要考虑起伏的点靠的太近而误入歧途。  这些都是算法里应该设置判断分支来保证“步程”是前后可靠连接的。
4# 用均匀近似算法拟合某段“步程”的最佳斜线,算出此段的综合平均中心并移到坐标圆心,再参考控制精度算出需要用DIVIDE命令等分的点数获得这“步程”的密集曲线等分点。
5# 取点所处的前半截“步程”及后半截“步程”的密集点,用带轴倾斜角的二次曲线函数或用6次平滑多次幂拟合该小段曲线。
   说明:前个算法允许曲线出现“纠缠”交叉,算法精度偏低;后个算法不考虑曲线交叉,用6次平滑多次幂拟合可以很好满足大型船舶的斜剖线放样。
6#  对拟合方程进求一次导数可得【斜率】,同时写入文件。
7#  对拟合方程进求二次导数综合拟合方程的一次导数带入曲率方程,可得【曲率】,同时写入文件。
8#  一定记得关闭文件句柄,否则所有的数据都不会被存盘,且可能造成系统内存数据异常。
回复

使用道具 举报

a2021222324 发表于 2024-10-20 22:34:14
这个帖子。。。。。。。每隔5、6年就挖坟一次啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ| Archiver|手机版|小黑屋| 碧波制图网 Published by Stonespider

Copyright © 2021-2023 Kangli Wu   All Rights Reserved.

Powered by Discuz! X3.5( 苏ICP备18011607号-1 )

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