2010-04-17 32 views
0
>  if (((test>=0) && (test<=90)) || ((test>270) && (test<=360))){n_y=1;} 
>  else {n_y=-1;} 

我需要三角函數的大小來確定落入特定象限的角度的三角函數的符號。如何確定三角函數的大小? C++

我的計劃是用相同的東西替換上面的代碼。

以下是我想要在僞代碼中執行的操作。

n_y = cos(test)/(magnitude of cos (test)); 

這會給我同樣的東西。 Abs()只需要整數。任何幫助表示讚賞。

+0

'abs'或'fabs'系列是您需要查找FP幅度的全部內容。但它聽起來像你實際上想要的是從度數的象限。 – Potatoswatter 2010-04-17 20:45:22

回答

2

我不知道你在用什麼Abs()fabs from the C++ standard takes doubles just fine

但是,你並不是真的想要大小,因爲那樣你就被困在一個昂貴的部門。

取而代之的只是使用signum函數。

+0

太棒了!在C++中沒有signum,但是鏈接導致我使用copysign 上面的內容在一行中做了: n_y = copysignf(1,cos(angle)); – nebulus 2010-04-17 20:50:37

+0

@seaworthy:'copysign'是非標準的。 – Potatoswatter 2010-04-17 20:55:06

+0

@potatoswatter:它是math.h的一部分,是不是一個標準? – nebulus 2010-04-17 21:03:39

0

您是否#include <cmath>獲得abs的浮點超負荷?

至於找到象限,如果0 <= test <= 360,而你想測試90 < test <= 270只是使用90 < test && test <= 270。您正在測試的兩個不連續範圍之間有一個連續的範圍。但是,您的特定示例將對象定義爲不對稱,因爲它將0 => 1和270 => -1映射。