2013-12-22 83 views
0

在C#中,如何計算給定x1,y1,x2,y2相對於Y軸的兩點之間的角度(假設x從左到右增加並且y從頂部到底部增加)?計算相對於Y軸的兩點之間的夾角

+0

你用鉛筆和紙,或任何其他語言做相同的方式。 –

+1

Math.Atan2(y2-y1,x2-x1) –

回答

3

試試這個:

static double GetAngle(double x1, double y1, double x2, double y2) 
{ 
    var w = x2 - x1; 
    var h = y2 - y1; 

    var atan = Math.Atan(h/w)/Math.PI * 180; 
    if (w < 0 || h < 0) 
     atan += 180; 
    if (w > 0 && h < 0) 
     atan -= 180; 
    if (atan < 0) 
     atan += 360; 

    return atan % 360; 
} 

Demo

+0

不會返回正確答案,對於行:(1,1)(2,3)應返回角度〜63.4。返回:153.4 – ZiviMagic

+0

@ZiviMagic,你是對的。我已經更新了答案。 – Tony