python - 以给定角度在矩形上查找点

标签 python math graphics geometry

我正在尝试以给定的角度 (Theta) 在矩形对象中绘制渐变,其中渐变的末端与矩形的周长接触。

Graph

我认为使用 tangent 会起作用,但我无法解决问题。有没有我只是想念的简单算法?

最终结果

所以,这将是 (angle, RectX1, RectX2, RectY1, RectY2) 的函数。我希望它以 [x1, x2, y1, y2] 的形式返回,以便渐变将绘制在正方形上。 在我的问题中,如果原点为 0,则 x2 = -x1 和 y2 = -y1。但它并不总是在原点上。

最佳答案

我们称 ab 为矩形边,(x0,y0) 为矩形中心的坐标。

您需要考虑四个地区:

alt text

    Region    from               to                 Where
    ====================================================================
       1      -arctan(b/a)       +arctan(b/a)       Right green triangle
       2      +arctan(b/a)        π-arctan(b/a)     Upper yellow triangle
       3       π-arctan(b/a)      π+arctan(b/a)     Left green triangle
       4       π+arctan(b/a)     -arctan(b/a)       Lower yellow triangle

通过一点三角函数,我们可以在每个区域获得您想要的交叉点的坐标。

alt text

所以 Z0 是区域 1 和 3 的交点表达式
Z1 是区域 2 和 4 交点的表达式

所需的线从 (X0,Y0) 传递到 Z0 或 Z1,具体取决于区域。所以记住 Tan(φ)=Sin(φ)/Cos(φ)


    Lines in regions      Start                   End
    ======================================================================
       1 and 3           (X0,Y0)      (X0 + a/2 , (a/2 * Tan(φ))+ Y0
       2 and 4           (X0,Y0)      (X0 + b/(2* Tan(φ)) , b/2 + Y0)

请注意每个象限中 Tan(φ) 的符号,并且始终从正 x 轴逆时针测量角度。

HTH!

关于python - 以给定角度在矩形上查找点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4061576/

相关文章:

python - 如何在 matplotlib 中插入子图下方的文本?

c# - double.Parse 显然不适用于某些国家/地区

java - 获胜者表 - 根据获胜者填写

java - 如何将数字限制在一个范围内

java图形更新

java - 具有自动文本定位功能的 Graphics2D 生成图像

java - 在 paint() 中调用 repaint() 会导致无限递归吗?

python - 从邻接表中获取图的拓扑顺序

python - 如何使用 python 从树莓派将行插入到 Oracle SQL 数据库中?

python - 计数是否在多个索引数据框中