乐筑天下

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

[编程交流] 一个多段线lisp问题

[复制链接]

53

主题

302

帖子

249

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
265
发表于 2022-7-5 23:25:43 | 显示全部楼层 |阅读模式
大家好,
我有一个列表,其中包含一条线上的相邻点对。我想测试每一对,如果它返回真值,则在同一位置用两对替换它们。不返回T的配对将单独留在其各自的位置。要使用的功能和使用方法是什么?。
我将非常感谢您的回复。
芦荟
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 23:33:30 | 显示全部楼层
至少我没有足够的信息,你能举个例子吗?
回复

使用道具 举报

53

主题

302

帖子

249

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
265
发表于 2022-7-5 23:41:35 | 显示全部楼层
谢谢你的回复。
问题如下所示:
列表为((2.0 5.0)(5.0 4.5))((5.0 4.5)(6.2 7.9))((6.2 7.9)(10.4 11.3)((10.4 11.3)(15.0 17.5))……)。现在,假设我想分解线段((5.0 4.5)(6.2 7.9))并将其替换为两条线段,分别为((5.0 4.5)(5.8 6.0))和((5.8 6.0)(6.2 7.9)),因为前者满足某些条件。对pline中的每个段进行验证条件的试验;如果测试在任何一对上失败,则在同一位置保持不变。
我希望我已经把问题说清楚了。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 23:48:55 | 显示全部楼层
对不起,首先这些坐标和笑脸混在一起了,另外我需要知道你到底在想什么,才能知道如何给出正确的答案。
回复

使用道具 举报

4

主题

194

帖子

192

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 23:53:45 | 显示全部楼层
试试这个;
  1. (setq lst    '(((2.0 5.0)(5.0 4.5))((5.0 4.5)(6.7 7.9))((6.7 7.9)(10.4 11.3))((10.4 11.3)(15.0 17.5)))
  2.      tstlst  '((5.0 4.5)(6.7 7.9))
  3.      nwpnt   '(5.8 6.0)
  4.      )
  5. (foreach xlst lst  
  6. (if (equal xlst tstlst)
  7.    (setq lstl (append lstl (list(list (car  tstlst) nwpnt)))
  8.          lstl (append lstl (list(list nwpnt  (cadr tstlst))))
  9.      )
  10.    (setq lstl (append lstl (list xlst)))
  11.    )
  12. )
回复

使用道具 举报

53

主题

302

帖子

249

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
265
发表于 2022-7-5 23:59:05 | 显示全部楼层
谢谢Snownut,这正是我在解决上述问题时想要做的。在将两条线段插入列表“lst”(如lstl中)之前,我还想检查点“nwpnt”是否在包含线段“tstlst”作为直径的圆内。
当做
芦荟
回复

使用道具 举报

53

主题

302

帖子

249

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
265
发表于 2022-7-6 00:05:35 | 显示全部楼层
对不起,塔瓦。
我不知道这些笑脸是怎么进来的。我把它们删掉了。但不知怎的,他们又出现了。看来斯诺努特没有问题。我的目标是几个月前我在这个网站上发布的三角测量。有人建议我是否知道珠穆朗玛峰有多高。所有所谓的免费套餐实际上都是有条件收费的。然而,这是我的爱好。
当做
芦荟
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 00:12:27 | 显示全部楼层
您可以在发布点列表时禁用表情,方法是转到“高级”,然后选中选项“禁用文字中的表情”旁边的框
回复

使用道具 举报

4

主题

194

帖子

192

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 00:14:06 | 显示全部楼层
微笑就在那里,我只是在他们的位置插入了一个替换号,不管替换号是否正确,只要他们是一样的。
 
正如塔尔沃特解释的那样,请禁用笑脸,这会使您的示例更容易理解。(此外,这不是一个社交网站,微笑是真正必要的…)
回复

使用道具 举报

4

主题

194

帖子

192

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 00:19:51 | 显示全部楼层
通过测试您的最后一篇文章,不需要tstlst,请参阅下面的修订代码;(不确定这将如何处理降序列表)
 
  1. (setq lst    '(((2.0 5.0)(5.0 4.5))((5.0 4.5)(6.7 7.9))((6.7 7.9)(10.4 11.3))((10.4 11.3)(15.0 17.5)))
  2.      nwpnt    '(5.8 6.0)
  3.      )
  4. (foreach xlst lst  
  5. (if (or (< (car  (car xlst))(car  nwpnt)(car  (cadr xlst)))
  6.          (< (cadr (car xlst))(cadr nwpnt)(cadr (cadr xlst)))
  7.          );or
  8.    (setq lstl (append lstl (list(list (car  xlst) nwpnt)))
  9.          lstl (append lstl (list(list nwpnt  (cadr xlst))))
  10.      )
  11.    (setq lstl (append lstl (list xlst)))
  12.    )
  13. );foreach
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-12 13:13 , Processed in 1.226214 second(s), 83 queries .

© 2020-2025 乐筑天下

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