乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
楼主: aloy

[编程交流] 点相对位置

[复制链接]

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:34:07 | 显示全部楼层
我的0.05美元
 
重要的是,上面的答案是针对两点的,因此意味着一个方向。
 
点是直线的左边还是右边?这取决于线的绘制方向,因此,如果需要“线”答案,解决这一问题的简单方法是在末端选择一个隐含点,并在需要时交换两个点以获得正确的方向。此方法只需要1次拾取。
回复

使用道具 举报

53

主题

302

帖子

249

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
265
发表于 2022-7-5 16:37:10 | 显示全部楼层
嗨Bigal
 
你的解决方案似乎使我能够使用李·麦克建议的方法。也就是说,如果在第一个过程中返回T,则第三个点位于左侧,如果在反转方向后返回T,则该点位于右侧。我不能使用nil值,因为我必须与另一个可能产生nil的测试(x2的值,如我之前的帖子中所示)相结合。我将使用Lee Mac方法测试此方法,并发布我将使用该解决方案执行的全部细节。
谢谢
芦荟
回复

使用道具 举报

53

主题

302

帖子

249

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
265
发表于 2022-7-5 16:41:44 | 显示全部楼层
LM,
我将程序中存在的点p、q和r分配如下:
 
  1. (defun c:test ( / a b c )
  2.    (if (and (setq a p)
  3.             (setq b q)
  4.             (setq c r)
  5.        )
  6.        (LM:clockwise-p a c b)
  7.    )
  8. )
  9. ;; Clockwise-p - Lee Mac
  10. ;; Returns T if p1,p2,p3 are clockwise oriented
  11. (defun LM:clockwise-p ( a b c )
  12.    (apply '> (mapcar '* (mapcar '- c a) (reverse (mapcar '- b a '(0 0)))))
  13. )

它给了我T
当p和q被交换时,如何使其返回零?。
谢谢
芦荟
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 16:45:44 | 显示全部楼层
  1. (not(LM:clockwise-p a c b))
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 16:46:20 | 显示全部楼层
 
我不确定我是否理解你的问题-请注意以下几点:
  1. _$ (setq p '(0 0))
  2. (0 0)
  3. _$ (setq q '(0 2))
  4. (0 2)
  5. _$ (setq r '(1 1))
  6. (1 1)
  7. _$ (LM:clockwise-p p r q)
  8. nil
  9. _$ (LM:clockwise-p q r p)
  10. T
回复

使用道具 举报

53

主题

302

帖子

249

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
265
发表于 2022-7-5 16:50:16 | 显示全部楼层
嗨,LM,
我使用您的代码尝试了以下方法来获取顺时针和逆时针方向的T:
  1. (defun test1 ( / a b c )
  2.    (if (and (setq a p)
  3.             (setq b q)
  4.             (setq c r)
  5.        )
  6.        (LM:clockwise-p a c b)
  7.    )
  8. )
  9. ;; Clockwise-p - Lee Mac
  10. ;; Returns T if p1,p2,p3 are clockwise oriented
  11. (defun LM:clockwise-p ( a b c )
  12.    (apply '> (mapcar '* (mapcar '- c a) (reverse (mapcar '- b a))))
  13. )

逆时针时:
  1. (defun test2 ( / a b c )
  2.    (if (and (setq a p)
  3.             (setq b q)
  4.             (setq c r)
  5.        )
  6.        (LM:anti-clockwise-p a b c)
  7.    )
  8. )
  9. ;;Anti- Clockwise-p
  10. ;; Returns T if p1,p2,p3 are anti-clockwise oriented
  11. (defun LM:anti-clockwise-p ( a b c )
  12.    (apply '> (mapcar '* (mapcar '- c a) (reverse (mapcar '- b a))))
  13. )

我使用以下代码得到了与使用上述sin公式相同的结果:
(if(和x(test2))(setq fill(+fill a)))
(if(和x(test1))(setq cut(+cut a)))
 
在这种情况下,x是交点(如果存在),“a”是autocad area命令返回的区域。
不需要'(0)
回复

使用道具 举报

53

主题

302

帖子

249

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
265
发表于 2022-7-5 16:54:35 | 显示全部楼层
韩,你好,
即使点不存在,直线也不工作,因为它返回T。
 
谢谢
芦荟
回复

使用道具 举报

53

主题

302

帖子

249

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
265
发表于 2022-7-5 16:56:36 | 显示全部楼层
嗨,Paulhein,
此代码在我的情况下不起作用。请按照李的建议代码和我的建议在我的最新帖子。
 
谢谢你的帮助。
芦荟
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 16:58:32 | 显示全部楼层
 
你好,阿洛伊,
 
请原谅我的失望,但要么你误解了我的代码,要么你误解了我在之前的帖子中提供的示例。
 
我建议您停止修改函数,重新访问我在上面发布的示例。
 
 
是的。如果提供了3D点,如果没有此表达式,该函数将无法正确执行。
回复

使用道具 举报

53

主题

302

帖子

249

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
265
发表于 2022-7-5 17:03:35 | 显示全部楼层
李,你好,
但出于我的目的,当点在另一边时,我需要一个T或一个非零的值。当返回值为零时,我无法与另一个值为T或零的变量组合。然而,我找到了一种使用代码的方法。对不起,“(0)点;我只处理2D,因为在以旧方式使用横截面计算土方工程时。检查该值是一个自动过程(地面标高也会自动沿水平对齐以及三角网曲面的横截面拾取)。我将使用“sin”方法,而不是修改您的代码,尽管在一次处理多个部分时,这两种方法似乎同样快。
当做
芦荟
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-12 16:26 , Processed in 0.491581 second(s), 81 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表