我正在尝试使用Javascript在HTML画布上绘制极坐标曲线。当我想要转换加号 - 减号(±)
时,我该怎么办?
示例:瓦特曲线
以下是我的尝试。由于我需要得到r
的值,我用方根包含整个方程,我也用它的绝对值,否则我得null
如果数字为负则试图得到平方根。下面的代码绘制的东西看起来像极性曲线,但不是瓦特的曲线。
var a = 1;
var b = 1;
var c = 2;
r = Math.sqrt(Math.abs(Math.pow(b, 2) - Math.pow(a * Math.sin(t) * Math.sqrt(Math.abs(Math.pow(c, 2) - Math.pow(a, 2) * Math.pow(Math.cos(t), 2), 2)), 2) ));
我得到类似的预期结果偏差与其他包含正负号的方程(没有它的方法工作正常),所以我想问题是我错误地“翻译”了这个符号。我做错了什么?
答案 0 :(得分:2)
看起来平方θ与内平方根(Math.sin(t) * Math.sqrt(...)
)的乘法不正确。
要绘制等式,请将正负号转换为两个等式:
var a = 1;
var b = 1;
var c = 2;
var b2 = Math.pow(b, 2);
var asint = a * Math.sin(t);
var sqroot = Math.sqrt(Math.pow(c, 2) - Math.pow(a, 2) * Math.pow(Math.cos(t), 2), 2);
var r = Math.sqrt(b2 - Math.pow(asint + sqroot, 2));
// now plot r
r = Math.sqrt(b2 - Math.pow(asint - sqroot, 2));
// now plot r again
Math.abs()
不是必需的。