3 Stimmen

Ruby Math.radians

Ich brauche die Funktion Math.radians() und kann sie nicht finden.

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

1 Stimmen

Wo ist die Frage? Sie haben bereits gezeigt, wie man konvertiert...

0 Stimmen

Gibt es die Funktion to_radians in Ruby? :)

3 Stimmen

12voto

Trevoke Punkte 4105

Wahrscheinlich möchten Sie eine Datei mit dem Namen "mymath.rb" im lib/-Verzeichnis erstellen, und monkey patch Math, wie folgt:

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

oder Sie können tun, was @MBO in seinem Kommentar sagte. Der Link scheint nicht mehr verfügbar zu sein, aber in den Google-Archiven findet man diesen informativen kleinen Satz, der auf eine Lösung hinweist, die vielleicht sauberer ist als meine (obwohl ich es vorziehe, mathematische Dinge innerhalb der Mathematik zu halten):

Die einfachste Lösung besteht darin, eine Konvertierungsmethode in Numeric zu definieren, die eine Anzahl von Grad in Bogenmaß umwandelt.

Als Anmerkung: Ruby 2.0 hat eine Funktion namens "Refinement", mit der man im Grunde lokale monkey-Parcheando machen kann. Es funktioniert folgendermaßen (übernommen aus dieser Blogbeitrag :

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

Und dann .... Es ist innerhalb eines anderen Moduls oder etwas Ähnlichem verfügbar.

module MyApp
  using RadiansConversion

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

0voto

tomsoft Punkte 4268

Oder Sie könnten Float erweitern, um eine 'to_rad'-Konvertierung hinzuzufügen:

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

Und verwenden Sie ihn wie folgt

radian=angle.to_rad

-1voto

everyman Punkte 3327

EDIT (wegen des Downvotings): Sorry! Die Zeit, die ich antwortete, brauchte ich dies für ein Array von Werten und wollte nur teilen, was ich fand.

Also, ja, eigentlich ist es gerecht:

x * (Math::PI / 180)

Ich wollte nur eine Implementierung zeigen, die ich gefunden habe.

# 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

Grad in Bogenmaß umrechnen. Wenn ein Array (oder mehrere Argumente) übergeben wird, wird jeder Wert umgewandelt und das Array zurückgegeben.

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X