用极坐标绘制正方形

时间:2011-01-25 00:44:23

标签: javascript math trigonometry graphing

我有一个正方形,最近的点距离中心1个单位。请参阅下面的ascii图表:

+-----------+
|           |
|  x        |
|-----+     |
|           |
|           |
+-----------+

因此,从原点到角落的距离是sqrt(2)。我需要一个函数,以任何角度返回从原点到正方形上的点的距离。例如,对于0的输入,函数将返回1.对于45的输入,函数将返回到角的距离,2的平方根。然后对于90,它将再次返回1。

换句话说,当您使用极坐标图绘制函数时,它将绘制一个正方形。

我相信这个功能会是这样的:

f(x) = sqrt(tan(x)^2+1)

唯一的问题是上面的函数不会绘制正方形的边。我需要能够吸引所有四方面的东西。

我知道有一个类似于此的东西的三角函数,但是我将在javascript中使用这个函数,所以我只能使用标准的三角函数。

任何帮助将不胜感激。提前谢谢。

4 个答案:

答案 0 :(得分:9)

我想这会更快:

function getLengthForDeg(phi){
    phi = ((phi+45)%90-45)/180*Math.PI;
    return 1/Math.cos(phi);
}

答案 1 :(得分:1)

我想出了一个可以与TI计算器配合使用的公式,因为它们的极坐标图函数的窗口部分具有θ阶跃函数。我不知道它是否对你有帮助。我想它只有在你能够配置theta(或度数)步骤时才能工作。

r = (((s*sqrt(2)) - 5)/4) sin(4(x - (pi/8)) + (((s*sqrt(2)) + s)/4)

其中s是所需方的边长

将theta步骤设置为pi / 4,以绘制创建正方形图像所需的主要点

同样,这适用于TI计算器。

答案 2 :(得分:1)

原帖是用Javascript标记的,但是我需要这个用于键入的语言(例如C),你不能模拟浮点数。

MonoMano的回答是正确的,但对于来这里需要同样事情的其他人来说,这里是MonoMano为C / ObjC / Java /等修改的答案:

/** c.f. http://stackoverflow.com/a/4788992/153422
* M_PI_2 is a constant: "PI / 2"
* M_PI_4 is a constant: "PI / 4"
*/
double getSquarePolarRadiusForRad(double phi){
    double phiInPiBy4Range = phi;
    while( phiInPiBy4Range > M_PI_4 )
        phiInPiBy4Range -= M_PI_2;
    while( phiInPiBy4Range < - M_PI_4 )
        phiInPiBy4Range += M_PI_2;

    return 1/cos(phiInPiBy4Range);
}

答案 3 :(得分:1)

我对Javascript不够熟悉,但是在Wolfram Alpha中使用的格式中,角度的半径公式为:

分钟(1 / ABS(COS(THETA)),1 / ABS(SIN(THETA))))