Sha256: bb9a2c7899159e27feacc47c5e8446ce52e7a964e4d4cbee0e660a4b054b442c
Contents?: true
Size: 1.11 KB
Versions: 1
Compression:
Stored size: 1.11 KB
Contents
#! /usr/bin/env ruby # coding: utf-8 require 'matrix' require 'mageo/vector3d.rb' #3次元極座標。 #極座標ライブラリでは、角度は基本的に radian を使用する。 #degree は人間の都合で決められた尺度だろう。 #まあ人間用に degree 用インターフェイスも用意することもあるかもしれんが。 class Polar3D include Math attr_reader :r, :theta, :phi # def initialize( r, theta, phi) @r = r @theta = theta @phi = phi end #3次元 Vector に変換。 def to_v3d #Vector[ @r * cos( @theta ), @r * sin( @theta ) ] x = @r * sin( @theta ) * cos( @phi ) y = @r * sin( @theta ) * sin( @phi ) z = @r * cos( @theta ) Vector3D[ x, y, z ] end #phi を 0 <= phi < 2*PI の間の角度に変換する破壊破壊的メソッド。 def minimize_phi! tmp = ( @phi / (2.0*PI) ) tmp = tmp - tmp.floor @phi = (2.0*PI) * tmp end #phi を 0 <= phi < 2*PI の間の角度に変換したオブジェクトを返す非破壊破壊的メソッド。 def minimize_phi result = Marshal.load( Marshal.dump( self ) ) result.minimize_phi! result end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
mageo-0.0.0 | lib/mageo/polar3d.rb |