下面是從笛卡爾轉換爲Polar co-ords的代碼。 else if語句(y> 0)= pi/2 else -pi/2 ... 這兩行的相關性是什麼?當然,你只需要theta = atan(y/x)和r = sqrt(x^2 + y^2)來確定正確的theta和r? 當我進入調試,並把檢查點看到的代碼是如何運行的,看來這部分也從未使用...混淆爲什麼這部分代碼是必需的?
可有人請闡明這些線路的相關一些輕?
謝謝。
這裏是應用程序的代碼;
void cartesianToPolar (float x, float y, double *rPtr, double *thetaPtr)
{
//store radius in supplied address - calc for r
*rPtr = sqrt(x * x + y * y);
//calc theta
float theta;
if (x == 0.0) {
if (y== 0.0) {
theta = 0.0;
} else if (y > 0){
theta = M_PI_2;
} else {
theta = -M_PI_2;
}
}else{
theta = atan(y/x);
}
//store theta in address
*thetaPtr = theta;
}
int main (int argc, const char * argv[])
{
double pi = 3.14;
double integerPart;
double fractionPart;
// Pass add of integerPart as argument
fractionPart = modf(pi, &integerPart);
// Find value stored in intpart
printf("integerPart = %.0f, fractionPart = %.2f\n", integerPart, fractionPart);
double x = 3.0;
double y = -4.0;
double radius;
double angle;
cartesianToPolar(x,y,&angle,&radius);
printf("(%.2f, %.2f) becomes (%.2f radiants, %.2f)\n", x, y, radius, angle);
return 0;
}
請考慮更改您的標籤。其中沒有太多的objective-c,但是標準c,你可能想用「極座標」來標記它。 –
對不起,你說的c與objective-c相反是正確的。 –