Javascript 中带正负号 (±) 的极坐标曲线方程

Polar curve equation with plus-minus sign (±) in Javascript

我正在尝试使用 Javascript 在 HTML canvas 上绘制极坐标曲线。想要转换正负号怎么办(±)?

示例:瓦特曲线

下面是我试过的。因为我需要得到 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) ));

我得到的预期结果与其他包含正负号的方程式(没有正负号的方程式可以正常工作)有类似的偏差,所以我想问题是我错误地 'translate' 这个符号。我做错了什么?

看来平方 theta 与内平方根 (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() 应该不是必需的。