明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1946|回复: 6

[求助]Mapcar這個函數的用法。

[复制链接]
发表于 2004-5-19 21:56:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2004-5-19 22:25:12 编辑

比如有P10 p20 p30 ....p100



十個點組成一個list。然後我可以利用line將這個list裏所有的元素連接起來。


但是現在有個問題,我想在其中插入個p21的點。


如何能使p21插入到p20與p30之間?這些點本身沒有任何聯系。如果說有聯系的話就是點的編號。以前是用數組來簡單實現,學LISP不久,還沒有想到辦法。


請告之,不勝感激


BTW:還有一個簡單的問題。 如何在lisp裏控制一個實數的精度? 比如小數點後三位小數?
发表于 2004-5-19 22:56:00 | 显示全部楼层
本帖最后由 作者 于 2004-5-21 20:07:58 编辑

记住LISP有个很好的东东,那就是点对,你可以用点对来搞定它 (defun c:test( / ss)
(setq p10 '(0 0 0))
(setq p20 '(100 0 0))
(setq p30 '(0 100 0))
(setq list1 '(10 20 30))
(setq list2 (list p10 p20 p30))
(setq ss (mapcar 'cons list1 list2))
(setq p21 '(50 50 0))
(setq ss (cons (cons 21 p21) ss))
)
 楼主| 发表于 2004-5-19 23:27:00 | 显示全部楼层
好像沒有達到排序的目的啊。



其實我要面對的問題是這樣的。


我需要畫一個1.5次的拋物線。是橋拱來的。


一般都是用pline來畫九點拋物線的。


但是問題就出在需要取拱上任一一個縱斷面來做研究。


(pline只是近似的拋物線吧?也就是說如果任在拱上面取一點,那個點實際上極可能是不准確的)


於是我想著就是取出所取點的橫坐標。然後找到那個精確的點。


這就是我一樓所說的一個插入點了。但是這時需要重畫這個橋拱以達到精確的取出截面的目的。


但重畫時需要對點進行排序,將這個插入點插入到正確的原來的九點中去。


我找不到方法。


PS:也許我整個編程的思路就錯了?請多指教一次
发表于 2004-5-20 07:59:00 | 显示全部楼层
2楼的最后再加一句:


(setq ss (vl-sort ss '(lambda(e1 e2) (< (car e1) (car e2)))))
 楼主| 发表于 2004-5-21 15:38:00 | 显示全部楼层
倒数第二句可能二楼打得太急了。把list换成cons问题就解决了。



真是太感谢你们了!!!!!!!!!!!!!!!!!!!!


不知道哪里有vl系列的函数查询的呢?


vl-sort这个函数我还是第一次知道。原来有个排序函数的说。。
发表于 2004-5-21 16:03:00 | 显示全部楼层
帮助文件里就有
发表于 2004-5-21 20:08:00 | 显示全部楼层
楼主说得没错,呵呵……
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-10-1 08:14 , Processed in 0.175025 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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