yshf 发表于 2014-5-28 11:21:02

有没有更快的办法?

本帖最后由 yshf 于 2014-5-28 11:23 编辑

      有离散点集ptb=((x1 y1 h1) (x2 y2 h2) (x3 y3 h3) …… (xn yn hn)),组成了m个三角形sjw=
      ((N11 N12 N13) (N21 N22 N23) … …(Nm1 Nm2 Nm3)),其中的N11、N12、 N13等表示一个三角形三个点
       在点集ptb中的序号(从1开始),为了提取其相应的坐标绘制三角形,采用以下程序效率较低,请问各位高手有没有
       更快的办法?
         (setq sjwzb (mapcar '(lambda(x)(mapcar '(lambda(y)(nth (1- y) ptb)) x)) sjw))
       测试文件详见“测试坐标数据”及“三角形编号数据”

llsheng_73 发表于 2014-5-28 11:40:24

本帖最后由 llsheng_73 于 2014-5-28 11:41 编辑

好象没有更好的办法,不过没必要把所有三角网坐标得到后再开始画,可以读出一个三角网数据后马上得到它的坐标画一个,反正最后也是一个个的画嘛
至于快慢的问题,如果用ENTMAKEX画会比用COMMAND调用命令来画要快很多,不知道你是用什么来画的

另外没必要进行1-,可以先在ptb前边随便加一个没用的数据比如(setq ptb(cons nil ptb)),这样会减少很多次1-

yshf 发表于 2014-5-28 16:24:26

l谢谢lsheng_73 的回复。
因为sjw中点的序号是从1开始,而在ptb中点的序号是从0开开始,故要1-。
页: [1]
查看完整版本: 有没有更快的办法?