2010-02-24 18 views
3

我需要Math.radians()函數,並且找不到它。Ruby Math.radians

radians=(angle/180)* Math::PI 
+0

哪來的問題嗎?你已經展示瞭如何轉換... – 2010-02-24 08:32:47

+0

在ruby中是否有to_radians函數? :) – xpepermint 2010-02-24 08:38:26

+3

http://codeidol.com/other/rubyckbk/Numbers/Converting-Between-Degrees-and-Radians/ – MBO 2010-02-24 08:44:33

回答

10

你可能想創建一個名爲lib /目錄 「mymath.rb」 文件,猴補丁數學,就像這樣:

require 'mathn' 
module Math 
    def self.to_rad angle 
    angle/180 * Math::PI 
    end 
end 

,或者你可以做什麼@ MBO在他的評論中表示。鏈接似乎是下降,但谷歌的檔案得到這個信息的小句子,這表明一個解決方案,可能會比我更清潔(雖然我更喜歡保持數學的東西數學內):

最簡單的解決方法是在Numeric中定義一種轉換方法,將數個度轉換爲弧度。

作爲一個說明,Ruby 2.0有一個稱爲「細化」的功能,基本上可以讓你做本地猴子修補。它以這種方式工作(從this blog post解禁:

module RadiansConversion 
    refine Math do 
    def to_rad angle 
     angle/180 * Math::PI 
    end 
    end 
end 

然後....這是另一個可用的模塊或任何諸如此類裏面

module MyApp 
    using RadiansConversion 

    p Math.to_rad 180 #=> 3.14159265358979 
    p Math.to_rad 235 #=> 4.10152374218667 
end 
+0

萬一你只得到0:我必須使用180.00或180.to_f FYI – 2015-04-28 12:55:05

-1

EDIT(因爲反對投票的):對不起!我回答的時候,我需要這個了值的數組,只是想和大家分享我發現

所以,是實際上它僅僅是:

x * (Math::PI/180)

只想顯示我找到的實現。

# Geocoder::Calculations.to_radians(@geocode) 
def to_radians(*args) 
    args = args.first if args.first.is_a?(Array) 
    if args.size == 1 
    args.first * (Math::PI/180) 
    else 
    args.map{ |i| to_radians(i) } 
    end 
end 

轉換爲弧度。如果傳遞一個數組(或多個參數),則轉換每個值並返回數組。

http://rubydoc.info/github/alexreisner/geocoder/master/Geocoder/Calculations#to_radians-instance_method

0

或者你可以擴展浮動添加 'to_rad' 皈依:

class Float 
def to_rad 
    self/180 * Math::PI 
    end 
end 

而且使用這樣的

radian=angle.to_rad