jancely 发表于 2005-3-24 18:36:00

[LISP]几何方式画出两任意曲线的之间的公切线

很多朋友说用LINE指令和 TAN(相切点)对象锁点画出两圆的公切线,我试了一下发现作出来不是公切线,因为将作出来的线延长会与圆相交,该线与两圆共有3个交点。


所以我找到以下程序,可以画出任意两曲线之间的公切线。


; 绘制两曲线之间的公切线


<BR>(defun c:t2c ()<BR>               (setq oldmode (getvar "osmode")                                               ;存储原有的对象锁点与指令响应模式<BR>                                                                       oldecho (getvar "cmdecho")<BR>               )<BR>               (setvar "osmode" 0)                                                                                                                                                                                                               ;关闭对象锁点与指令响应<BR>               (setvar "cmdecho" 0)


               (setq p1 (getpoint "\nPick on the first curve: "))                       ;在第一个切点附近点选一点<BR>               (setq p2 (getpoint p1 "\nPick on the second curve: ")) ;在第二个切点附近点选一点<BR>               <BR>               (repeat 7<BR>                               ; 从 p1 画一条临时线到 p2 附近的曲线切点,取得新切点,然后删除临时线<BR>                                       (command ".line" p1 (setq p3 (osnap p2 "tan")) "")<BR>                                       (command ".erase" "L" "")<BR>                                       (setq p2 p3)


                               ; 从 p2 画一条临时线到 p1 附近的曲线切点,取得新切点,然后删除临时线<BR>                                       (command ".line" p2 (setq p3 (osnap p1 "tan")) "")<BR>                                       (command ".erase" "L" "")<BR>                                       (setq p1 p3)<BR>               )<BR>               <BR>               (command ".line" p1 p2 "")                                                                                                                                                       ;画出公切线


               (setvar "osmode" oldmode)<BR>               (setvar "cmdecho" oldecho)<BR>               (princ)<BR>)


请大家试试^_^

ljpnb 发表于 2005-3-24 19:47:00

思路比较特别,值得参考。

onej 发表于 2005-3-24 20:50:00

TAN?


我不喜欢它,程序和画图里的情况有所不同。

ljpnb 发表于 2005-3-24 21:00:00

应该说基本上达到相切的程度,这种思路是一种无限逼近法,当循环次越多越接近理论上的公切线。楼主提供的程序中重复7次也差不多了,应该还是比较理想的。

xushifu210 发表于 2005-4-21 10:59:00

学无止境
页: [1]
查看完整版本: [LISP]几何方式画出两任意曲线的之间的公切线