明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: x_s_s_1

[讨论] 求平面全等直线段封闭多边形最佳算法

[复制链接]
发表于 2023-3-23 14:57:45 | 显示全部楼层
x_s_s_1 发表于 2023-3-23 14:52
我在一楼添加了一个测试图形,您再试试

两个图形均测试过,没有问题
回复

使用道具 举报

 楼主| 发表于 2023-3-23 15:06:24 | 显示全部楼层
本帖最后由 x_s_s_1 于 2023-3-23 15:07 编辑
xtjd 发表于 2023-3-23 14:57
两个图形均测试过,没有问题

这是测试图2的正确结果,三个蓝色的92边形和白色的应该是不等的


本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2023-3-23 16:08:45 | 显示全部楼层
x_s_s_1 发表于 2023-3-23 15:06
这是测试图2的正确结果,三个蓝色的92边形和白色的应该是不等的

(defun c:t3 (/ en ss time)
  (defun xtjd-test2(o)(vla-put-color o 1))
  (setq en(car(entsel"\n拾取基准型:"))ss(ssget))
  (setq time (getvar "millisecs"))
  (mapcar 'xtjd-test2(xtjd-test3 en ss 1e-6))
  (setq time (- (getvar "millisecs") time))
  (print (strcat "经历时间为:" (itoa time) "毫秒"))
)
(defun xtjd-test3(en ss fuzz / s)
  (defun get(o / a n s)
    (setq a(vlax-get o 'Coordinates) n(length a) s '())
    (repeat(/ n 2)(setq s(cons(list(car a)(cadr a))s)a(cddr a)))
    (append
      (list(vla-get-Length o)(vla-get-area o))
      (mapcar(function(lambda(a b)(distance a b)))s(cddr s))
    )
  )
  (setq  s(get(vlax-ename->vla-object en)))
  (vl-remove-if-not(function(lambda(x)(equal s(get x)fuzz)))
    (mapcar 'vlax-ename->vla-object(vl-remove-if 'listp(mapcar 'cadr(ssnamex ss))))
  )
)
回复

使用道具 举报

发表于 2023-3-23 16:24:48 | 显示全部楼层
x_s_s_1 发表于 2023-3-23 15:06
这是测试图2的正确结果,三个蓝色的92边形和白色的应该是不等的

不知浮点误差对判断结果影响大不大?
回复

使用道具 举报

 楼主| 发表于 2023-3-23 16:36:12 来自手机 | 显示全部楼层
mahuan1279 发表于 2023-3-23 16:24
不知浮点误差对判断结果影响大不大?

对角度影响大,长度影响不是蛮大
回复

使用道具 举报

 楼主| 发表于 2023-3-23 16:47:11 | 显示全部楼层
本帖最后由 x_s_s_1 于 2023-3-23 16:53 编辑
xtjd 发表于 2023-3-23 16:08
(defun c:t3 (/ en ss time)
  (defun xtjd-test2(o)(vla-put-color o 1))
  (setq en(car(entsel"\n拾 ...

辛苦您了,但是对于起点不同图形判断还是不对,存在几种情况是要判断的:图形镜像了,图形绘制方向不同,图形绘制起点不同。

本帖子中包含更多资源

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

x
回复

使用道具 举报

 楼主| 发表于 2023-3-23 17:05:40 | 显示全部楼层
mahuan1279 发表于 2023-3-23 16:24
不知浮点误差对判断结果影响大不大?

测试图2的结果不是浮点数误差的问题,是判断机制的问题,归结到几何问题就是全等多边形
回复

使用道具 举报

发表于 2023-3-23 18:31:21 | 显示全部楼层
x_s_s_1 发表于 2023-3-23 17:05
测试图2的结果不是浮点数误差的问题,是判断机制的问题,归结到几何问题就是全等多边形

用向量来判断呢?
回复

使用道具 举报

 楼主| 发表于 2023-3-23 19:20:52 | 显示全部楼层
mahuan1279 发表于 2023-3-23 18:31
用向量来判断呢?

我写的就等同于用向量判断的,但是速度不行,撞大运,碰到起点方向相同的就很快
回复

使用道具 举报

发表于 2023-3-23 19:31:58 | 显示全部楼层
x_s_s_1 发表于 2023-3-23 19:20
我写的就等同于用向量判断的,但是速度不行,撞大运,碰到起点方向相同的就很快

为什么要比较起点方向呢?
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-16 15:25 , Processed in 0.158884 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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