[點晴永久免費OA]Math.js:一款 JavaScript 和 Node.js 最強數(shù)學(xué)庫
當(dāng)前位置:點晴教程→點晴OA辦公管理信息系統(tǒng)
→『 經(jīng)驗分享&問題答疑 』
前段時間有個同學(xué)問了我一個需求:如何在一個橢圓上均勻放置任意多的DOM。需求效果如下 我一看這個需求,這不得用到"傳說"中的初中數(shù)學(xué)了嗎?然后我“掐指一算”還真給忘完了... 沒得辦法,只能去翻了翻“初中課本”,找到了橢圓計算的方式,最終寫了如下代碼: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Icons on Ellipse</title> <style> canvas { border: 1px solid black; } </style> </head> <body> <canvas id="myCanvas" width="400" height="400"></canvas> <script> const canvas = document.getElementById('myCanvas'); const ctx = canvas.getContext('2d'); const centerX = canvas.width / 2; const centerY = canvas.height / 2; const a = 150; // 長軸 const b = 100; // 短軸 const iconRadius = 8; // 圖標(biāo)半徑 const numberOfIcons = 10; // 圖標(biāo)數(shù)量 ctx.fillStyle = 'blue'; for (let i = 0; i < numberOfIcons; i++) { const angle = (Math.PI * 2) * (i / numberOfIcons); const x = centerX + a * Math.cos(angle); const y = centerY + b * Math.sin(angle); // 在計算的坐標(biāo)處繪制圓形圖標(biāo) ctx.beginPath(); ctx.arc(x, y, iconRadius, 0, Math.PI * 2); ctx.fill(); } </script> </body> </html> 通過這樣的代碼實現(xiàn)了橢圓均勻分布的效果: 不過,做過多年開發(fā)的同學(xué)都知道,數(shù)學(xué)這種東西,真的挺容易忘的。所以說,我專門去翻了翻 Github 找到了一個專業(yè)的擴(kuò)展數(shù)據(jù)庫,它就是: 01:什么是 Math.jsMath.js 是一個適用于 JavaScript 和 Node.js 的擴(kuò)展數(shù)學(xué)庫,支持符號計算,并提供了廣泛的功能,涵蓋數(shù)字、大數(shù)字、復(fù)數(shù)、分?jǐn)?shù)、單位和矩陣等多種數(shù)據(jù)類型。它與JavaScript內(nèi)置數(shù)學(xué)庫兼容,適用于各類ES6兼容的JavaScript引擎,如Node.js、Chrome、Firefox、Safari和Edge等。 Math.js的主要特性包括:
目前,Math.js在GitHub上采用MIT許可協(xié)議開源,擁有超過13.7k的星標(biāo)、1.3k的分支、63.8k的項目依賴量以及來自200多位貢獻(xiàn)者的代碼貢獻(xiàn)。是一個備受推崇的優(yōu)質(zhì)前端開源項目。 02:為什么需要 Math.jsMath.js的目標(biāo)在于提供一個環(huán)境,讓開發(fā)者能夠使用混合數(shù)據(jù)類型進(jìn)行計算,比如將普通數(shù)字與復(fù)數(shù)或BigNumber相乘,以及對矩陣中的各種數(shù)據(jù)進(jìn)行處理。它還允許輕松添加新的數(shù)據(jù)類型,比如BigInt。 Math.js采用了兩個核心解決方案:
在底層,mathjs采用了不可變函數(shù)的不可變工廠函數(shù)。核心函數(shù)math.create(...)用于創(chuàng)建一個新實例,包含從傳遞的所有工廠函數(shù)創(chuàng)建的函數(shù)。mathjs實例是創(chuàng)建函數(shù)的集合。它還包含像math.import這樣的函數(shù),允許使用新函數(shù)擴(kuò)展實例,然后可以在表達(dá)式解析器中使用。 03:如何使用 Math.jsMath.js是一個多功能的庫,可在Node.js和瀏覽器環(huán)境中使用。它類似于JavaScript的內(nèi)置Math庫,但更進(jìn)一步,支持表達(dá)式計算和鏈?zhǔn)讲僮鳌?/p> // 使用函數(shù)和常量 math.round(math.e, 3); // 得到2.718 math.atan2(3, -3) / math.pi; // 返回0.75 math.log(10000, 10); // 輸出4 math.sqrt(-4); // 返回2i math.pow( [ [-1, 2], [3, 1], ], 2 ); // 得到[[7, 0], [0, 7]] // 表達(dá)式計算 math.evaluate('12 / (2.3 + 0.7)'); // 返回4 math.evaluate('12.7 cm to inch'); // 輸出5 inch math.evaluate('sin(45 deg) ^ 2'); // 得到0.5 math.evaluate('9 / 3 + 2i'); // 返回3 + 2i math.evaluate('det([-1, 2; 3, 1])'); // 輸出-7 // 鏈?zhǔn)讲僮?/span> math.chain(3).add(4).multiply(2).done(); // 返回14 這些例子展示了Math.js的靈活性,無論是進(jìn)行基本數(shù)學(xué)運算、處理單位轉(zhuǎn)換還是進(jìn)行復(fù)雜的矩陣計算,都能輕松應(yīng)對。而鏈?zhǔn)讲僮鲃t允許你連續(xù)調(diào)用多個函數(shù),簡潔地處理多步計算。
該文章在 2023/12/28 10:37:16 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |