samifox 发表于 2022-7-6 06:21:25

将1个值与多个va进行比较

你好
 
我想创建一个布尔函数,告诉我是一对给定的顶点形成一条正交线。
 
正确的语法是什么?
 
这是我的出发点:
 
 
(defun isOrtho(p1 p2)
   ((if (= (angle p1 p2) (nth 0 ORTHOANG) (nth 1 ORTHOANG) (nth 2 ORTHOANG) (nth 3 ORTHOANG))

)

 
谢谢

Stefan BMR 发表于 2022-7-6 07:03:42

也许是这个
(defun isOrtho (p1 p2)
(and
   (vl-position (angle p1 p2) ORTHOANG)
   )
)或此,带有模糊因子
(defun isOrtho (p1 p2)
(vl-some '(lambda (o) (equal (angle p1 p2) o 1e-) ORTHOANG)
)或这个,如果正交=(0 pi/2 pi 3pi/2)
(defun isOrtho (p1 p2)
(equal 0.0 (rem (angle p1 p2) (/ pi 2)) 1e-
)

Lee Mac 发表于 2022-7-6 07:38:05

 
由于您要取模,因此需要:
(defun isOrtho ( p1 p2 / r )
   (or (equal 0.0 (setq r (rem (angle p1 p2) (/ pi 2.0))) 1e-
       (equal (/ pi 2.0) r 1e-
   )
)
 
说明:
_$ (isortho '(0.0 0.0) '(1.0 1e-9))
T
_$ (isortho '(0.0 0.0) '(1.0 -1e-9))
T
页: [1]
查看完整版本: 将1个值与多个va进行比较