Soru Günah, radyasyon yerine derece kullanmak için günah ve bronzluk nasıl olabilir?


JS'de matematikle çalışırken, trig işlevlerinin radyan değerleri yerine derece değerleri kullanmasını istiyorum. Bunu nasıl yaparım?


76
2018-03-14 15:41


Menşei


sin / cos / tan radyanlarda açıları geri döndürmez; radyanlarda açı alırlar. Ters fonksiyonlar atan(), atan2(), acos(), asin() dönüş açıları. - Jason S


Cevaplar:


Dönüştürmeyi yapmak için böyle bir işlevi kullanabilirsiniz:

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

Gibi işlevleri unutmayın sin, cos, ve bunun gibi açıları iade etmeGiriş olarak açıları alırlar. Bana öyle geliyor ki, radyanlara bir derece girdiyi dönüştüren bir işleve sahip olmanız daha yararlı olacaktır:

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

gibi bir şey yapmak için kullanabileceğiniz tan(toRadians(45)).


161
2018-03-14 15:43





Sonucu ile çarpın 180/Math.PI radyandan dereceye dönüştürmek için.

Ayrıca kendi işlevlerinizi de tanımlayabilirsiniz:

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

ve bunun gibi.


22
2018-03-14 15:42



Bu gerçekten adlandırılmalıdır sinDegrees karışıklığı önlemek - BlueRaja - Danny Pflughoeft
Doğru. Bazı siteler gördüm sind kısa tutmak için Kişisel olarak saklıyorum sin çünkü biliyorum ki sin daha sonra derece olacak ve Math.sin radyanlarda, ama bu benim kendi kafamda. - Niet the Dark Absol
-1: sin () bir açı döndürmez. Giriş argümanı bir açıdır. - Jason S
Bu ... benden uzaklaştı. Bunu biliyorum. Elbette bunu biliyorum. Yapmamış olsaydım, trig fonksiyonlarına sahip bir bazilyon oyunu yapmazdım ... ama bir sebepten dolayı tamamen unutmuştum = / - Niet the Dark Absol
+ 1'i şimdi çözdün. - Jason S


Kendi küçük tembel Matematik-Nesne derecemi (MathD) oluşturdum, umarım yardımcı olur:

//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





Gerekli matematiği uygulayan kendi dönüşüm işlevinizi oluşturun ve yerine bunları çağırın. http://en.wikipedia.org/wiki/Radian#Conversion_between_radians_and_degrees


0
2018-03-14 15:43



Bu teorik olarak soruyu cevaplayabilirken, tercih edilirdi Burada cevabın önemli kısımlarını dahil etmek ve referans için bağlantıyı sağlamak. - Jason C


Daha genel bir fonksiyonel yaklaşımdan hoşlanıyorum:

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

veya,

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

herhangi bir radyan alma fonksiyonu ile kullanılabilir:

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

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

Bu yardımcı olur umarım!


0
2018-02-20 02:30