乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 21|回复: 14

[编程交流] 需要帮助将mapcar写入s

[复制链接]

218

主题

699

帖子

483

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1090
发表于 2022-7-5 22:43:55 | 显示全部楼层 |阅读模式
你好
该代码的思想是在多段线选择集中检测90度角。所以在检测到顶点配对后,我想把它们存储在一个数据库中
 
由于每对顶点都存储为数据库列表中的列表,因此我需要访问nasted列表并防止重复。
 
如何将红线转换为有效的mapcar函数?
  1. ;;;--------------------------------------------------------------------;
  2. ;;;  Function: createCornerVertexList                                  ;
  3. ;;;--------------------------------------------------------------------;
  4. ;;;  Description: analyzes a given 2d vertices list by comparing every ;
  5. ;;;               pair of vertices for all possible distances and      ;
  6. ;;;               angles, and create a new list of 2d vertices only if ;
  7. ;;;               they form 90 degrees corner.
  8. ;;;               NOTE : every pair of vertices compose an entry
  9. ;;;  Argument   : lst - 2d vertices list                               ;
  10. ;;;--------------------------------------------------------------------;
  11. ;;;                             anglein radianc but for comprance      ;
  12. ;;;                             porpuses,there is a need for the       ;
  13. ;;;                             (<) and (>)functionsthe get 0 or       ;
  14. ;;;                             (* pi 2) as arguments                  ;
  15. ;;;               MAXDISTANCE - the maximum distance allowed between 2 ;
  16. ;;;                             pointsto be listed as a corner pair    ;
  17. ;;;                             vertices.                              ;
  18. ;;;               MINDISTANCE - the minimum distance allowed between 2 ;
  19. ;;;                             vertecis  to be listed as a corner     ;
  20. ;;;                             vertices.                              ;
  21. ;;;                             notice that this constant prevent      ;
  22. ;;;                             vertex to be compared to it self and   ;
  23. ;;;                             other verticesin a door or a window    ;
  24. ;;;                             posts.                                 ;
  25.       
  26. (defun MMDPOLY1:createCornerVertexList(lst / ma fe col corners )
  27. (setq        fe 0 ma 0)
  28. (while (< ma (length lst))
  29.         (while (< fe (length lst))
  30.                 (if(MMDPOLY.isCornerForm (nth ma lst)(nth fe lst) MINDISTANCE MAXDISTANCE)
  31.                   (progn
  32.                    [color="red"][b] ;_if [corners] is empty
  33.                     ;_if (nth ma lst) or (nth fe lst) are not member of any of [/b][/color]the sublists
  34.                       (setq database (cons (list (nth ma lst)(nth fe lst))corners))          
  35.                );_if
  36.        );_if
  37.                   
  38.   
  39.         (setq fe (1+ fe))          
  40.                );_while (fe       
  41. (setq ma (1+ ma))(setq fe 0)
  42. ) ;_while (ma
  43. )

 
谢谢
谢伊
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 22:49:34 | 显示全部楼层
也许可以考虑以下功能:
上述函数将接受有序共面顶点列表,对于每个顶点,将测试连接上一个顶点和下一个顶点的向量的垂直度,如果这些向量的点积为零(即向量垂直),则返回角顶点。
 
假设一个闭合顶点集,但可以很容易地修改以处理开放集。
回复

使用道具 举报

218

主题

699

帖子

483

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1090
发表于 2022-7-5 22:53:11 | 显示全部楼层
有趣的是。。。李
我写了这个,你认为我需要用你的代码替换这个代码吗?
 
  1. (defun MMDPOLY1:createCornerVertexList(lst / ma fe col corners )
  2. (setq        fe 0 ma 0)
  3. (while (< ma (length lst))
  4.         (while (< fe (length lst))
  5.                 (if(MMDPOLY.isCornerForm (nth ma lst)(nth fe lst) MINDISTANCE MAXDISTANCE)
  6.                   
  7.                     (if (eq database nil)
  8.                       (setq database(cons (list (nth ma lst)(nth fe lst))database))
  9.                         (progn
  10.                             (foreach e database
  11.                                (if (not (or  (member (nth fe lst)e)(member (nth ma lst)e)))
  12.                                    (setq database(cons (list (nth ma lst)(nth fe lst))database))
  13.                                  );_if
  14.                               );_foreach
  15.                           );_progn
  16.                );_if
  17.                           
  18.        );_if
  19.                   
  20.   
  21.         (setq fe (1+ fe))          
  22.                );_while (fe       
  23. (setq ma (1+ ma))(setq fe 0)
  24. ) ;_while (ma
  25. )
回复

使用道具 举报

218

主题

699

帖子

483

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1090
发表于 2022-7-5 22:59:08 | 显示全部楼层
 
对不起,李
 
我在路上从手机上看到了你的回复。。没注意到你给了我一个“rea”l解来找到投诉顶点。
 
我真的需要学习
 
但同样如此
万分感谢!
回复

使用道具 举报

218

主题

699

帖子

483

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1090
发表于 2022-7-5 23:05:19 | 显示全部楼层
 
我不明白“function”函数是做什么的?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 23:05:29 | 显示全部楼层
 
阅读此说明。
回复

使用道具 举报

218

主题

699

帖子

483

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1090
发表于 2022-7-5 23:12:44 | 显示全部楼层
 
李,
直到现在,一年后,我才意识到你找到垂直度点的方法有多聪明
谢谢李
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 23:15:23 | 显示全部楼层
........
回复

使用道具 举报

218

主题

699

帖子

483

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1090
发表于 2022-7-5 23:20:07 | 显示全部楼层
李为什么准备的点积总是和0?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 23:24:14 | 显示全部楼层
 
什么是准备?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-11 03:32 , Processed in 0.375773 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表