xtjd 发表于 2023-3-23 14:57:45

x_s_s_1 发表于 2023-3-23 14:52
我在一楼添加了一个测试图形,您再试试

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

x_s_s_1 发表于 2023-3-23 15:06:24

本帖最后由 x_s_s_1 于 2023-3-23 15:07 编辑

xtjd 发表于 2023-3-23 14:57
两个图形均测试过,没有问题
这是测试图2的正确结果,三个蓝色的92边形和白色的应该是不等的


xtjd 发表于 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))
    )
)
(setqs(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))))
)
)

mahuan1279 发表于 2023-3-23 16:24:48

x_s_s_1 发表于 2023-3-23 15:06
这是测试图2的正确结果,三个蓝色的92边形和白色的应该是不等的

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

x_s_s_1 发表于 2023-3-23 16:36:12

mahuan1279 发表于 2023-3-23 16:24
不知浮点误差对判断结果影响大不大?

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

x_s_s_1 发表于 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_s_s_1 发表于 2023-3-23 17:05:40

mahuan1279 发表于 2023-3-23 16:24
不知浮点误差对判断结果影响大不大?

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

mahuan1279 发表于 2023-3-23 18:31:21

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

用向量来判断呢?

x_s_s_1 发表于 2023-3-23 19:20:52

mahuan1279 发表于 2023-3-23 18:31
用向量来判断呢?
我写的就等同于用向量判断的,但是速度不行,撞大运,碰到起点方向相同的就很快

mahuan1279 发表于 2023-3-23 19:31:58

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

为什么要比较起点方向呢?
页: 1 [2] 3 4
查看完整版本: 求平面全等直线段封闭多边形最佳算法