2016-12-17 16 views
1

Я пытаюсь нарисовать полярные кривые на холсте HTML с помощью Javascript. Что делать, если я хочу конвертировать знак плюс-минус (±)?Уравнение полярной кривой с знаком плюс-минус (±) в Javascript

Пример: кривая Уатта

Math representation of Watt's curve

Ниже то, что я пытался. Поскольку мне нужно получить значение 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))); 

я получаю подобные отклонения ожидаемых результатов с другими уравнениями, содержащих плюс-минус (те без него работает нормально), поэтому я полагаю, что проблема заключается в том, что я неправильно «перевести» этот символ. Что я делаю неправильно?

ответ

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() не должно быть необходимым.

+0

Да, это похоже. Как-то я подумал, что это не обязательно. Большое спасибо. – cincplug