找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 730|回复: 6

[每日一码] 判断点在多边形点表组成的多段线上(新手版)

[复制链接]

已领礼包: 201个

财富等级: 日进斗金

发表于 2020-12-22 16:27:58 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 a117034423 于 2020-12-22 16:29 编辑

  1. (defun pntison (pnt2 pnts2  / pts0 pts1 xca xcb xa xb i gg p1 p3);判断点在线上
  2.   (setq pts1
  3.   (if (not (equal (car pnts2) (last pnts2) 1e-5))
  4.    (reverse (cons (car pnts2) (reverse pnts2)))    ;点表闭合
  5.    pnts2
  6. ))
  7.    (setq pts0   (mapcar 'list pts1 (cdr pts1));首尾组对
  8.       )
  9. (setq xca
  10.   (mapcar
  11.     '(lambda (x)
  12.        (mapcar '- pnt2 (car x))
  13.        )
  14.     pts0
  15.     ))
  16. (setq xcb
  17.   (mapcar
  18.     '(lambda (x)
  19.        (mapcar '- (cadr x) (car x))
  20.        )
  21.     pts0
  22.     ))
  23.   (setq i 0)
  24.   (repeat (length xca)
  25.     (setq xa (nth i xca)
  26.           xb (nth i xcb)
  27.           xx (- (* (car xa) (cadr xb)) (* (car xb) (cadr xa)))
  28.           p1 (apply 'mapcar (cons 'min (nth i pts0)))
  29.           p3 (apply 'mapcar (cons 'max (nth i pts0)))
  30.           i (1+ i)
  31.           )
  32.   (if (and
  33.           (equal xx 0 1e-5)
  34.           (AND
  35.           (or
  36.           (< (CAR P1) (CAR pnt2) (CAR P3))
  37.           (equal (CAR P1) (CAR pnt2) 1e-5)
  38.           (equal (CAR P3) (CAR pnt2) 1e-5)
  39.           )
  40.           (or
  41.           (< (CADR P1) (CADR pnt2) (CADR P3))
  42.           (equal (CADR P1) (CADR pnt2) 1e-5)
  43.           (equal (CADR P3) (CADR pnt2) 1e-5)
  44.           )
  45.           )
  46.         )
  47.       (setq gg (cons xx gg))
  48.     )
  49.     )
  50.   (vl-some '(lambda (x)
  51.                    (equal x 0 1e-5))
  52.                 gg)
  53.     )
一到两个点表交叉互乘,琢磨半天也玩不转了
索性用了repeat了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 201个

财富等级: 日进斗金

 楼主| 发表于 2020-12-22 16:30:39 | 显示全部楼层
借鉴了牢固的手稿和XDAPI的源码,写完发出来,自己测试是没啥问题了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 201个

财富等级: 日进斗金

 楼主| 发表于 2020-12-22 16:33:38 | 显示全部楼层
目前凸凹多边形等分的所有子函数都已经收集完毕了,近日就应该可以见成果了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2020-12-22 18:23:45 | 显示全部楼层
a117034423 发表于 2020-12-22 16:33
目前凸凹多边形等分的所有子函数都已经收集完毕了,近日就应该可以见成果了

理解下 XDRX API

  1. (defun _ison (pnt pts)
  2.   (equal 0.0
  3.          (distance pnt
  4.                    (xdrx-getpropertyvalue pts "closestpointto" pnt t)
  5.          ) 1e-5
  6.   )
  7. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 201个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 914个

财富等级: 财运亨通

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

使用道具 举报

已领礼包: 3904个

财富等级: 富可敌国

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 04:23 , Processed in 0.357623 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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