我正在尝试以给定的角度 (Theta) 在矩形对象中绘制渐变,其中渐变的末端与矩形的周长接触。
我认为使用 tangent 会起作用,但我无法解决问题。有没有我只是想念的简单算法?
最终结果
所以,这将是 (angle, RectX1, RectX2, RectY1, RectY2) 的函数。我希望它以 [x1, x2, y1, y2] 的形式返回,以便渐变将绘制在正方形上。 在我的问题中,如果原点为 0,则 x2 = -x1 和 y2 = -y1。但它并不总是在原点上。
最佳答案
我们称 a 和 b 为矩形边,(x0,y0) 为矩形中心的坐标。
您需要考虑四个地区:
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
通过一点三角函数,我们可以在每个区域获得您想要的交叉点的坐标。
所以 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/