samifox 发表于 2022-7-5 18:47:53

我如何判断是否有3分

你好
 
我怎么知道三个点是否形成一个角?给它一些宽容怎么样?如果温度不超过80-100度,它仍然是一个角?
 
 
 
谢谢
谢伊

jonathann3891 发表于 2022-7-5 19:01:05

你能澄清一下吗?

samifox 发表于 2022-7-5 19:05:31

假设我有一个包含这3个点的列表,我希望它告诉我它们是否形成90度角,如果仍然在80度到100度之间,就可以了。。我也会把它当成一个rorner:P:P

Lee Mac 发表于 2022-7-5 19:19:51

有很多方法可以完成这项任务,这里有一种:
这是另一个:
(defun corner-p ( p1 p2 p3 )
   (equal 0.0 (cos (- (angle p2 p1) (angle p2 p3))) 1e-
)和另一个:
(defun corner-p ( p1 p2 p3 )
   ((lambda ( v ) (equal (caddr (trans p2 0 v)) (caddr (trans p3 0 v)) 1e-) (mapcar '- p1 p2))
)

samifox 发表于 2022-7-5 19:28:32

 
谢谢李
 
1-e8是我害怕的东西。。。。我假设(等于b 1-e8)是我要求的公差,但我如何将其转换为度范围(也称为限制80到100度)?

Lee Mac 发表于 2022-7-5 19:38:03

 
不客气。
 
 
1e-8(0.0000000 1)确实是用于每次比较的公差,但是,该公差将根据所用方法代表不同的量。
 
例如,第一种方法使用两个向量的向量点积,因此公差将是两个向量的长度和它们之间角度的余弦的因子(因为a·b=|a | | b | cosθ);第二种方法中使用的公差也是两个矢量之间角度的余弦因子(但不取决于矢量长度);最后,在第三种方法中,公差表示点p2和点p3投影到线p1-p2之间的线性距离。

samifox 发表于 2022-7-5 19:41:32

 
首先,我想说我爱李!!!
如果我来伦敦,我一定会见到你(如果你愿意的话)
 
第二继续有趣的关系比率。。。。我仍然无法将其简化为一个参数,即。。。
 


(if (and
   (the following 3 points form a corner) (
   (the corner not exceed minimum of 80 degrees)
   (the corner not exceed maximum of 100 degrees)
   )
   
    (princ "the corner is ok")
    (princ "cant accept that corner due to limit violation")
)

Lee Mac 发表于 2022-7-5 19:49:14

你说得太好了。
 
由于余弦函数是周期性的,根在pi/2、3pi/2等处,因此足以测试向量之间角度的余弦是否在给定的根范围内,例如:
(defun corner-p ( p1 p2 p3 tol )
   (equal 0.0 (cos (- (angle p2 p1) (angle p2 p3))) (cos (+ (/ pi 2) tol)))
)10度:
5
页: [1]
查看完整版本: 我如何判断是否有3分