找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2819|回复: 8

[研讨] 大家有没有更快的办法

[复制链接]

已领礼包: 3864个

财富等级: 富可敌国

发表于 2014-5-26 00:05:16 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 dnbcgrass 于 2014-5-27 07:51 编辑

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

测试坐标数据.rar

344.04 KB, 下载次数: 36, 下载积分: D豆 -1 , 活跃度 1

三角形编号数据.rar

564.62 KB, 下载次数: 29, 下载积分: D豆 -1 , 活跃度 1

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

已领礼包: 859个

财富等级: 财运亨通

发表于 2014-5-26 06:02:08 来自手机 | 显示全部楼层
本帖最后由 csharp 于 2014-5-26 06:08 编辑

先说说你三角网是程序生成的吗?
是的话难道不是三个点一组?
都mapcar了还要nth干什么!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

发表于 2014-5-26 11:37:49 | 显示全部楼层
改算法,以三角形坐标组成表,而不要以序号组表!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3864个

财富等级: 富可敌国

 楼主| 发表于 2014-5-27 07:46:24 | 显示全部楼层
本帖最后由 dnbcgrass 于 2014-5-27 07:54 编辑

谢谢上面两位的回复。由离散点组成三角网的算法是采用其它插件来完成,得到的就是点的序号,再由点的序号得到点的坐标,用“(setq sjwzb (mapcar '(lambda(x)(mapcar '(lambda(y)(nth (1- y) ptb)) x)) sjw))”来完成的确很慢。
     我提供了“测试坐标数据.rar“文件及“三角形编号数据.rar”文件,请大家再帮想想办法。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-5-28 21:09:27 来自手机 | 显示全部楼层
本帖最后由 st788796 于 2014-5-28 21:51 编辑

把坐标加上编号,用assoc替换nth
读取ptb
(setq i 0)
(setq ptb (xd::list:fromfile fl)
          ptb (mapcar '(lambda(x) (cons (setq i (1+ i)) x)) ptb)
)
(setq sjw (mapcar '(lambda (x) (mapcar '(lambda (a) (cdr (assoc a ptb))) x)) sjw))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2014-5-29 16:06:39 | 显示全部楼层
repeat或while

没必要得到一个总表,只要得到一个三角形,就把它画出来,接着下一个。

而且就算不改,按道理也不会慢,内存里面折腾一遍的东西怎么会慢呢?又没有重复。
是不是在生成的时候花的时间.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 859个

财富等级: 财运亨通

发表于 2014-5-29 18:44:14 | 显示全部楼层
尝试用 C# 写了一个
http://bbs.xdcad.net/thread-674195-1-1.html

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

使用道具 举报

已领礼包: 3864个

财富等级: 富可敌国

 楼主| 发表于 2015-9-27 00:08:55 | 显示全部楼层
谢谢csharp,你的程序已经很快了!:lol:lol
在2008中测试的结果如下:
请稍候.... 文件处理中!
文件读取完毕. 用时 = 0.3121203s
绘制用时 = 4.3198616
绘制完成, 共 88440 个三角形
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-23 06:38 , Processed in 0.439113 second(s), 50 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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