2016-12-17 57 views
1

我正在嘗試使用Javascript在HTML畫布上繪製極座標曲線。當我想轉換正負號(±)時,我該怎麼辦?在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