使用角度和半径在屏幕边缘查找点
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.
我有一个边界为 (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.