使用角度和半径在屏幕边缘查找点

Find points on edge of screen with an angle and radius

我有一个边界为 (0,0) 到 (800,600) 的正方形 在这个光栅中我必须画一条线,给我的是一条线的角度和半径,从点 (0 ,0). 这些边界基于分辨率为 800x600

的屏幕

我知道如何从这一点计算出 (X,Y) 点, X = 半径 * Cos(角度) Y = 半径 * Sin(角度)

但从这一点开始我不知道如何继续。在下图中,我定义了我的用例。 (X3,Y3) 是我知道如何计算的点,如上所述。但是如何找到 (X1, Y1) 和 (X2, Y2)?

角度和半径可以是各种值,例如下面的值。当 X3 和 Y3 都是负值时,我知道 (X1,Y1) 和 (X2, Y2) 不会落在光栅中。

我觉得这个算起来不难,就是不知道怎么算。

从原点开始的直线可以用方程

表示
y = mx

其中斜率 m = y3/x3。您将需要一条垂直于第一条线的线,这意味着它的斜率为

m' = -1/m

因此可以用等式表示

y = m'(x-x3) + y3

点 (X1,Y1) 的 X1 = 0,Y1 可以通过 Y1 = m'x + y3 计算。点 (X2,Y2) 的 Y2 = 0 且 X2 = (y - Y2)/m' + x3.