[求助]Mapcar這個函數的用法。
本帖最后由 作者 于 2004-5-19 22:25:12 编辑比如有P10 p20 p30 ....p100
十個點組成一個list。然後我可以利用line將這個list裏所有的元素連接起來。
但是現在有個問題,我想在其中插入個p21的點。
如何能使p21插入到p20與p30之間?這些點本身沒有任何聯系。如果說有聯系的話就是點的編號。以前是用數組來簡單實現,學LISP不久,還沒有想到辦法。
請告之,不勝感激
BTW:還有一個簡單的問題。 如何在lisp裏控制一個實數的精度? 比如小數點後三位小數? 本帖最后由 作者 于 2004-5-21 20:07:58 编辑 <br /><br /> 记住LISP有个很好的东东,那就是点对,你可以用点对来搞定它
(defun c:test( / ss)<BR> (setq p10 '(0 0 0))<BR> (setq p20 '(100 0 0))<BR> (setq p30 '(0 100 0))<BR> (setq list1 '(10 20 30))<BR> (setq list2 (list p10 p20 p30))<BR> (setq ss (mapcar 'cons list1 list2))<BR> (setq p21 '(50 50 0))<BR> (setq ss (cons (cons 21 p21) ss))<BR> ) 好像沒有達到排序的目的啊。
其實我要面對的問題是這樣的。
我需要畫一個1.5次的拋物線。是橋拱來的。
一般都是用pline來畫九點拋物線的。
但是問題就出在需要取拱上任一一個縱斷面來做研究。
(pline只是近似的拋物線吧?也就是說如果任在拱上面取一點,那個點實際上極可能是不准確的)
於是我想著就是取出所取點的橫坐標。然後找到那個精確的點。
這就是我一樓所說的一個插入點了。但是這時需要重畫這個橋拱以達到精確的取出截面的目的。
但重畫時需要對點進行排序,將這個插入點插入到正確的原來的九點中去。
我找不到方法。
PS:也許我整個編程的思路就錯了?請多指教一次 2楼的最后再加一句:
(setq ss (vl-sort ss '(lambda(e1 e2) (< (car e1) (car e2))))) 倒数第二句可能二楼打得太急了。把list换成cons问题就解决了。
真是太感谢你们了!!!!!!!!!!!!!!!!!!!!
不知道哪里有vl系列的函数查询的呢?
vl-sort这个函数我还是第一次知道。原来有个排序函数的说。。 帮助文件里就有 楼主说得没错,呵呵……
页:
[1]