我有一个正方形,其中最近的点距离中心 1 个单位。请参阅下面我的 ascii 图:
+-----------+
| |
| x |
|-----+ |
| |
| |
+-----------+
因此,从原点到角点的距离就是 sqrt(2)。我需要一个函数来返回从原点到正方形上任意角度的点的距离。例如,对于输入 0,该函数将返回 1。对于输入 45,该函数将返回到角点的距离,即 2 的平方根。然后,对于 90,它将再次返回 1。
换句话说,当你用极坐标图绘制函数时,它会画出一个正方形。
我相信这个函数会是这样的:
f(x) = sqrt(tan(x)^2+1)
唯一的问题是上面的函数不会绘制正方形的边。我需要能画出所有 4 个面的东西。
我知道有一个三角函数可以实现与此类似的功能,但我将在 javascript 中使用这个函数,所以我只能使用标准三角函数。
任何帮助将不胜感激。预先感谢。
我想这会更快:
function getLengthForDeg(phi){
phi = ((phi+45)%90-45)/180*Math.PI;
return 1/Math.cos(phi);
}
我对Javascript不太熟悉,但是按照Wolfram Alpha中使用的格式,角度半径的公式是:
min(1/abs(cos(theta)),1/abs(sin(theta))))
原始帖子被标记为 Javascript,但我需要这个用于类型语言(例如 C),在这种语言中你不能对浮点数取模。
MonoMano 的答案是正确的,但对于其他需要同样东西的人来说,这里是针对 C / ObjC / Java / 等修改的 MonoMano 答案:
/** 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);
}
我想出了一个可以与 TI 计算器一起使用的方程,因为它们的极坐标图函数的窗口部分中有 theta 阶跃函数。不知道对你有没有帮助。我想只有当您能够配置 theta(或度数)步长时它才能起作用。
r = (((s*sqrt(2)) - 5)/4) sin(4(x - (pi/8)) + (((s*sqrt(2)) + s)/4)
其中 s 是所需正方形的边长
将 theta 步长设置为 pi/4 以绘制创建正方形图像所需的要点
同样,这适用于 TI 计算器。
这可行,但使用舍入函数和绝对值函数:
Abs((Round(1/2+Pi)/2))Sec(t))+(Round(-Sin(((4t)+Pi)/2)+1/2) Csc(t)))
Sec = 割线; Csc = 余割; t = θ 这里使用的是弧度,而不是度数!!!!