Câu hỏi Làm thế nào tôi có thể phạm tội, cos và tan để sử dụng độ thay vì radian?


Khi tôi làm việc với toán học trong JS, tôi muốn các hàm trig của nó sử dụng các giá trị độ thay vì các giá trị radian. Tôi sẽ làm như thế nào?


76
2018-03-14 15:41


gốc


sin / cos / tan không trả về các góc theo radian; chúng có góc theo radian. Các hàm nghịch đảo atan(), atan2(), acos(), asin() trở về góc. - Jason S


Các câu trả lời:


Bạn có thể sử dụng một hàm như thế này để thực hiện chuyển đổi:

function toDegrees (angle) {
  return angle * (180 / Math.PI);
}

Lưu ý rằng các chức năng như sin, cos, v.v. không trả lại góc, họ lấy góc làm đầu vào. Dường như với tôi rằng nó sẽ hữu ích hơn cho bạn để có một chức năng chuyển đổi một đầu vào độ để radian, như thế này:

function toRadians (angle) {
  return angle * (Math.PI / 180);
}

mà bạn có thể sử dụng để làm một cái gì đó như tan(toRadians(45)).


161
2018-03-14 15:43





Nhân kết quả bằng 180/Math.PI để chuyển đổi từ radian sang độ.

Bạn cũng có thể xác định các chức năng của riêng bạn:

function sinDegrees(angle) {return Math.sin(angle/180*Math.PI);};

và vân vân.


22
2018-03-14 15:42



Điều này thực sự nên được đặt tên sinDegrees để tránh nhầm lẫn - BlueRaja - Danny Pflughoeft
Thật. Tôi đã thấy một số trang web gọi là sind để giữ nó ngắn. Cá nhân tôi giữ nó sin bởi vì tôi biết rằng sin sau đó sẽ bằng độ và Math.sin bằng radian, nhưng đó là trên đầu của tôi. - Niet the Dark Absol
-1: sin () không trả về một góc. Đối số đầu vào của nó là một góc. - Jason S
Cái đó ... người đó đã tránh xa tôi. Tôi biết điều đó. Tất nhiên tôi biết điều đó. Tôi sẽ không tạo ra một trò chơi bazillion với chức năng trig nếu tôi không ... nhưng vì lý do nào đó, tôi hoàn toàn quên rằng = / - Niet the Dark Absol
+1 bây giờ bạn đã sửa nó. - Jason S


Tôi đã tạo ra một đối tượng Math-Object lười biếng của mình cho bằng cấp (MathD), hy vọng nó sẽ giúp:

//helper
/**
 * converts degree to radians
 * @param degree
 * @returns {number}
 */
var toRadians = function (degree) {
    return degree * (Math.PI / 180);
};

/**
 * Converts radian to degree
 * @param radians
 * @returns {number}
 */
var toDegree = function (radians) {
    return radians * (180 / Math.PI);
}

/**
 * Rounds a number mathematical correct to the number of decimals
 * @param number
 * @param decimals (optional, default: 5)
 * @returns {number}
 */
var roundNumber = function(number, decimals) {
    decimals = decimals || 5;
    return Math.round(number * Math.pow(10, decimals)) / Math.pow(10, decimals);
}
//the object
var MathD = {
    sin: function(number){
        return roundNumber(Math.sin(toRadians(number)));
    },
    cos: function(number){
        return roundNumber(Math.cos(toRadians(number)));
    },
    tan: function(number){
        return roundNumber(Math.tan(toRadians(number)));
    },
    asin: function(number){
        return roundNumber(toDegree(Math.asin(number)));
    },
    acos: function(number){
       return roundNumber(toDegree(Math.acos(number)));
   },
   atan: function(number){
       return roundNumber(toDegree(Math.atan(number)));
   }
};

13
2017-12-23 13:14





Tạo chức năng chuyển đổi của riêng bạn để áp dụng toán cần thiết và thay vào đó hãy gọi những hàm đó. http://en.wikipedia.org/wiki/Radian#Conversion_between_radians_and_degrees


0
2018-03-14 15:43



Trong khi điều này về mặt lý thuyết có thể trả lời câu hỏi, nó sẽ là thích hợp hơn để bao gồm các phần thiết yếu của câu trả lời tại đây và cung cấp liên kết để tham khảo. - Jason C


Tôi thích cách tiếp cận chức năng tổng quát hơn:

/**
* converts a trig function taking radians to degrees
* @param {function} trigFunc - eg. Math.cos, Math.sin, etc.
* @param {number} angle - in degrees
* @returns {number}
*/
const dTrig = (trigFunc, angle) => trigFunc(angle * Math.PI / 180);

hoặc là,

function dTrig(trigFunc, angle) {
  return trigFunc(angle * Math.PI / 180);
}

có thể được sử dụng với bất kỳ chức năng chụp radian nào:

dTrig(Math.sin, 90);
  // -> 1

dTrig(Math.tan, 180);
  // -> 0

Hi vọng điêu nay co ich!


0
2018-02-20 02:30