【问题标题】:Find points on edge of screen with an angle and radius使用角度和半径在屏幕边缘查找点
【发布时间】:2020-01-27 09:05:51
【问题描述】:

我有一个边界为 (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) 不会落在栅格中。

我认为这并不难计算,但我只是不知道该怎么做。

【问题讨论】:

    标签: c# math angle


    【解决方案1】:

    从原点出发的直线可以用等式表示

    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。

    【讨论】:

    • 这解决了我的问题。如果角度为 90 度或 0 度,我必须添加一个例外,但这个计算正是我所需要的。谢谢
    猜你喜欢
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-24
    • 2017-12-25
    • 2011-01-31
    • 2016-11-21
    相关资源
    最近更新 更多