ฉันจะเอา sin, cos และ tan มาใช้องศาแทนเรเดียนได้อย่างไร


105

เมื่อฉันทำงานกับคณิตศาสตร์ใน JS ฉันต้องการให้ฟังก์ชันตรีโกณมิติใช้ค่าองศาแทนค่าเรเดียน ฉันจะทำอย่างไร


20
sin / cos / tan ไม่กลับมุมเป็นเรเดียน พวกมันทำมุมเป็นเรเดียน ฟังก์ชั่นผกผันatan(), atan2(), acos(), asin()กลับมุม
Jason S

คำตอบ:


221

คุณสามารถใช้ฟังก์ชันเช่นนี้เพื่อทำการแปลง:

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

โปรดทราบว่าฟังก์ชั่นชอบsin, cosและอื่น ๆไม่ได้กลับมุมที่พวกเขาใช้มุมเป็น input สำหรับฉันแล้วดูเหมือนว่าจะมีประโยชน์มากกว่าสำหรับคุณที่มีฟังก์ชันที่แปลงอินพุตองศาเป็นเรเดียนเช่นนี้:

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

tan(toRadians(45))ซึ่งคุณสามารถใช้เพื่อทำสิ่งที่ชอบ


28

คูณอินพุตโดยMath.PI/180เพื่อแปลงจากองศาเป็นเรเดียนก่อนที่จะเรียกฟังก์ชันตรีโกณมิติของระบบ

คุณยังสามารถกำหนดฟังก์ชันของคุณเอง:

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

และอื่น ๆ


2
ควรตั้งชื่อนี้sinDegreesเพื่อหลีกเลี่ยงความสับสน
BlueRaja - Danny Pflughoeft

จริง. ฉันเคยเห็นบางเว็บไซต์เรียกว่าให้เรียกsindสั้น ๆ โดยส่วนตัวแล้วฉันเก็บมันไว้sinเพราะฉันรู้ว่าsinตอนนั้นจะเป็นองศาและMath.sinเป็นเรเดียน แต่นั่นอยู่บนหัวของฉันเอง
Niet the Dark Absolute

6
-1: sin () ไม่คืนค่ามุม อาร์กิวเมนต์อินพุตคือมุม
Jason S

1
นั่น ... สิ่งนั้นได้ไปจากฉัน ฉันรู้แล้ว. แน่นอนฉันรู้ว่า ฉันจะไม่สร้างเกมพันล้านด้วยฟังก์ชันตรีโกณหากฉันไม่มี ... แต่ด้วยเหตุผลบางอย่างฉันก็ลืมไปเลยว่า = /
Niet the Dark Absol

ฉันเป็น noob และไม่ดีกับตรีโกณ ... ฉันขอถามว่าสมการของ cosDeg และ tanDeg จะเป็นอย่างไร? ขอบคุณ.
กามารมณ์

14

ฉันสร้าง Math-Object ที่ขี้เกียจของตัวเองสำหรับปริญญา (MathD) หวังว่าจะช่วย:

//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)));
   }
};

4

ฉันชอบวิธีการใช้งานทั่วไปมากกว่า:

/**
* 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);

หรือ,

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

ซึ่งสามารถใช้ได้กับฟังก์ชันการถ่ายเรเดียน:

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

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

หวังว่านี่จะช่วยได้!


0

สร้างฟังก์ชันการแปลงของคุณเองที่ใช้คณิตศาสตร์ที่จำเป็นและเรียกใช้สิ่งเหล่านั้นแทน http://en.wikipedia.org/wiki/Radian#Conversion_between_radians_and_degrees


6
ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีแต่ควรรวมส่วนสำคัญของคำตอบไว้ที่นี่และระบุลิงก์สำหรับการอ้างอิง
Jason C
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.