找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1810|回复: 2

[飞鸟集] 圆锥曲线在AutoCAD的精确表达法

[复制链接]

已领礼包: 8121个

财富等级: 富甲天下

发表于 2020-9-13 00:36:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 Highflybird 于 2021-9-9 00:53 编辑

圆锥曲线有三类:椭圆、抛物线和双曲线。
椭圆在AutoCAD的画法为众人熟知,我现在说说剩下的两类。
1、抛物线。
如果熟悉三维建模的,可以创建一个三维的圆锥体,然后用section命令得到圆锥曲线的轮廓。
炸开这个轮廓,可以得到一个精确的圆锥曲线,这个方法有点费时,不好操作。
现在通过举例讲解抛物线的另一个画法。
画:y=a*x^2 ,区间段为(-1,1)。
输入命令:spline回车

当前设置: 方式=拟合   节点=弦
指定第一个点或 [方式(M)/节点(K)/对象(O)]: m         <-----在这里输入m
输入样条曲线创建方式 [拟合(F)/控制点(CV)] <拟合>: cv   <-----在这里输入CV
当前设置: 方式=控制点   阶数=3
指定第一个点或 [方式(M)/阶数(D)/对象(O)]: d        <-----在这里输入d
输入样条曲线阶数 <3>:                   <-----在这里输入2,形成2阶的样条曲线。                    
(上面的这些设置输入一次址后,CAD下次可以不用输入了)

当前设置: 方式=控制点   阶数=2
指定第一个点或 [方式(M)/阶数(D)/对象(O)]:
输入下一个点:                                 <-----捕捉第一点坐标为(-1,a)。
输入下一个点或 [放弃(U)]:               <-----捕捉第二点坐标为(0,-a)。
输入下一个点或 [闭合(C)/放弃(U)]:  <-----捕捉第三点坐标为(1,a)。

回车。
这样就得到了一条抛物线,这是一条精确的抛物线,不是拟合出来的,读者可以自行验证。
其它形式的方程,均可由此平移和旋转变换得到。如果大家有兴趣,不妨参考相关知识。
譬如下面的链接:
https://zhuanlan.zhihu.com/p/91649187
抛物线画法.jpg
2、双曲线。
双曲线与抛物线的画法类似,也是要设置为二阶样条曲线,方式为控制点的模式。
举例:画双曲线x^2-y^2=1,区间为(-2,2)
先画半边。
输入spline, 像抛物线那样设置,如果已经设置好了,回车即可。
要依次输入这三点,这三点坐标是A(2,sqrt(3)), C(0.5,0),B(2,-sqrt(3))
输入后,回车。
下面的步骤可能在属性里面操作容易写。
选取刚才形成的样条曲线,ctrl+1打开属性面板,在属性的当前控制点设置为2,即C点。
把权值-1修改为2,那么,这样就形成了右半边,镜像一下,得到左半边。
所需双曲线绘制完成。
双曲线画法2.jpg
上面的属性修改也可以用splinedit命令来完成
选择开始默认形成的样条曲线,输入splinedit或者双击。
命令: _splinedit
输入选项 [闭合(C)/合并(J)/拟合数据(F)/编辑顶点(E)/转换为多段线(P)/反转(R)/放弃(U)/退出(X)] <退出>: e
输入顶点编辑选项 [添加(A)/删除(D)/提高阶数(E)/移动(M)/权值(W)/退出(X)] <退出>: w
输入新权值 (当前值 = 1.00000000) 或 [下一个(N)/上一个(P)/选择点(S)/退出(X)] <下一个>:
输入新权值 (当前值 = 1.00000000) 或 [下一个(N)/上一个(P)/选择点(S)/退出(X)] <下一个>: 2   <-----在这里输入2,把第二点的权值修改为2。  
输入新权值 (当前值 = 2.00000000) 或 [下一个(N)/上一个(P)/选择点(S)/退出(X)] <下一个>: x
输入顶点编辑选项 [添加(A)/删除(D)/提高阶数(E)/移动(M)/权值(W)/退出(X)] <退出>: x
输入选项 [闭合(C)/合并(J)/拟合数据(F)/编辑顶点(E)/转换为多段线(P)/反转(R)/放弃(U)/退出(X)] <退出>: x
双曲线画法.jpg
分析:
由曲线方程可知,曲线经过(2,sqrt(3))和(2,-sqrt(3))两点,这两点可作为样条的两个端点。
经过计算,可知在点(2,sqrt(3))双曲线的切线斜率为2Xsqrt(3)/3,交X轴线于C(0.5,0)点,又可知曲线经过D(1,0)点
所以权值为DE/CD=1/0.5=2,因此控制点C的权值要输入2.

3、总结方法,
a、首先找到曲线的两个端点(一般做对称的好些,不对称区间可以用对称区间画出,后期用裁剪命令修剪)作为第一个控制点和第三个控制点。
b、第二点为首位两个端点的切线相交点。
c、计算和修改权值,得到需要曲线。权值大于1为双曲线,等于1为抛物线,小于1为椭圆。读者自行验证。

如果读者觉得步骤麻烦,可以用简单的LISP程序来生成。

4、关于证明,大家可以参考样条曲线的知识,经过验证,用三个控制点的时候,二阶样条曲线的方程表达完全一致。
有什么不足的地方请大家多多指教。
转载此文需标明原作者和来源。
后续,下面我补充对于一般的双曲线的画法(以a=5,b=3为例):
双曲线演示2.gif

关于其原理不再赘述了。
另外利用LISP程序绘制抛物线和双曲线,请参考如下链接:
用LISP绘制精确的抛物线和双曲线

评分

参与人数 2D豆 +10 收起 理由
aimisiyou + 5 技术引导讨论和指点奖!
sh_h + 5 很给力!经验;技术要点;资料分享奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 8121个

财富等级: 富甲天下

 楼主| 发表于 2020-9-13 11:35:15 | 显示全部楼层
后注:
通过研究,发现可以作出高阶的曲线,譬如作 在区间(0,1)上y=x^5的多项式曲线。
把区间(0,1)等分成5等分,用spline画样条曲线,阶数设置为5,
从原点开始,依次通过4个等分点,到达最后的控制点为(1,1),
这样就得到了所需曲线。
高阶曲线.jpg
不过随着阶数的升高,精度会有所降低。不过依然可以达到一般需要。

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 8121个

财富等级: 富甲天下

 楼主| 发表于 2021-9-9 00:55:00 | 显示全部楼层
现增加双曲线的一般画法,并提供LISP绘制程序。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-22 00:16 , Processed in 0.390639 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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