代码之家  ›  专栏  ›  技术社区  ›  Zinx

带角度的直线方程

  •  40
  • Zinx  · 技术社区  · 16 年前

    6 回复  |  直到 16 年前
        1
  •  8
  •   rgettman    12 年前

    你知道的起点 (x1, x2) ,终点为 (x1 + l * cos(ang), y1 + l * sin(ang)) 哪里 l 是长度和 ang 是角度。

        2
  •  30
  •   Artelius    16 年前

    让我们称之为起点 (x1, y1) 线的另一端 (x2, y2) .

    然后,如果给定长度[L]和与x轴的角度[a]:

    x2 = x1 + (L * cos(a))
    
    y2 = y1 + (L * sin(a))
    

    如果角度是从y轴开始的,则交换cos和sin。

    从以下位置画线 (x1,y1) (x2,y2) .

    你可能会发现,你希望这条线朝哪个方向走, 你需要小心如何定义你的角度。

        3
  •  17
  •   Akshit Zaveri    12 年前

    直线的方程式如下:

    m*x + n = y 
    

    m可以通过角度计算; m = tan(angle) 如果你知道一个起点,那么你就可以找到n。

    tan(angle) * startPoint_X + n = startPoint_Y
    

    所以 n = startPoint_Y - (tan ( angle) * startPoint_X )

    如果你想画一条线段,并且知道长度、起点和角度,那么会有两个方程。

    第一个是 m*x + n = y (我们解决了)。

    这意味着 m*(endPoint_X) + n = endPoint_Y

    第二个是找到终点。

    length^2 = (endPoint_X - startPoint_X)^2 + (endPoint_Y - startPoint_Y)^2
    

    只有两件事我们还不知道:endPoint_x&端点_Y 如果我们改写方程式:

    length^2 = (endPoint_X - startPoint_X)^2 + ( m*(endPoint_X) + n - startPoint_Y)^2
    

    现在我们知道除了endPoint_X之外的一切。 这个方程将为endPoint_X提供两个解。 然后,您可以找到两个不同的ednPoint_Y。

        4
  •  3
  •   Vanuan tacaswell    12 年前

    实际上有两个不同的问题:一个在标题中,另一个在正文中。

    让我们从回答标题中的问题开始:

    直线方程

    直线的方程式为

    y = a*x + b
    

    哪里 a 是直线和X轴之间的角度的切线,以及 b 是通过(0,0)绘制的线的标高。

    给定角度和点的直线方程

    你可以很容易地计算 一 (既然你知道角度),但你不知道 b 但你也知道 x0 和 y0 ,所以你可以很容易地计算 b :

    b = y0 - a*x0 
    

    现在,方程式看起来像这样:

    y = tan(fi)*x + y0 - tan(fi)*x0 = tan(fi)*(x - x0) + y0
    

    绘制一个给定点、角度和长度的线段

    我们想从起点绘制一个线段,使其长度为L,与x轴的角度为fi。

    这是一个完全不同的问题。

    你应该想象一个直角三角形,其锐角位于(x0,y0)处。

    你知道Hypotenusa(L)和一个角度(fi)。

    根据定义,

    a = L*cos(fi) (adjacent, x)
    b = L*sin(fi) (opposite, y)
    

    您只需将x0和y0相加:

    x1 = x0 + L*cos(fi)
    y1 = y0 + L*sin(fi)
    
        5
  •  1
  •   Peter    16 年前

    你会想把它画出来的 (0, 0) 到 (x_length, tan(angle)*x_length) 。坡度为 tan(angle) 。您可以通过从该起点减去所有内容来针对不同的起点进行调整。