gpt4 book ai didi

python - 检测鼠标是否越过一行python

转载 作者:太空宇宙 更新时间:2023-11-04 10:17:56 25 4
gpt4 key购买 nike

对于我的 A-Level 项目,我正在创建一个 dijktras 算法程序。我已经创建了节点、文本框、按钮等,所有这些都具有正确的悬停检测(使用鼠标),但是,我尝试使用 arctan 为弧/线/连接器创建悬停检测;通过获得两个连接位置的 y 与 x 的差异(与我们所做的相反),然后从一个位置(点 a)到鼠标位置并进行比较。但是,距离 a 点越近,差异似乎总是越大,因此根据我设置的限制,它很容易检测到比点 b 更靠近点 a 的悬停(特别是当 y 的差异与 x 的差异非常小时。这会产生一些错误,因为我希望程序在整条线上均匀地检测到它。有没有更好的方法可以进行线悬停检查?

最佳答案

计算与直线的距离。

对于直线(来自维基百科 https://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line )点 (x0,y0) 与直线 (x1,1)->(x2,y2) 的距离为:

formula for distance of point (x0,y0) from line (x1,1)->(x2,y2)

还有其他公式可以计算点到直线的距离,但这个公式很方便,而且水平/垂直线没有特殊情况。

对于圆弧,使用((从鼠标到圆心的距离)-(圆的半径))。

这些都会为您提供一致且独立于鼠标位置的度量,因此您可以将鼠标悬停的阈值定义为某个相对较小的值。您应该处理鼠标在超过一条直线/弧线范围内的特殊情况——没有什么比在这些情况下随机选择一个 UI 更糟糕的了,因为用户总是希望选择一个不是随机选择的。

更新:再搜索一下,我找到了这个 Shortest distance between a point and a line segment - woolie 的 python 答案看起来简洁明了。这计算了通过点 v 和 w 的线的交点,v->w 与通过点 p 的垂线的交点根据值 t 沿着从 v 到 w 的线在 0 和 1 之间变化 - 所以它是很容易确定 p 处的鼠标光标位于线段 v->w 上,因为在这种情况下 0.0<=t<=1.0 或超出线段 v->w 的任一端,因为在这种情况下 t < 0.0 或 t > 1.0

HTH巴尼

关于python - 检测鼠标是否越过一行python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34267515/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com