Sha256: d6cf90ecd970234e1c8364df5b0f693e21e91a955a5fcdb5fe9c20d05591b438
Contents?: true
Size: 1.02 KB
Versions: 2
Compression:
Stored size: 1.02 KB
Contents
#! /usr/bin/env ruby # coding: utf-8 # # # class CrystalCell::Povray::Color PI = Math::PI # def initialize() end # 色相環(color circle) 上での色を、与えられた角度に対して返す。 # 強度は [r, g, b] の配列で、0.0<=x<=1.0 の実数。 def self.circle_color(theta) theta = theta % (2*PI); #-2*pi 〜 +2*pi の範囲に入る r = self.trapezoidal_wave(theta, (4.0/6.0) * 2.0 * PI) g = self.trapezoidal_wave(theta, (0.0/6.0) * 2.0 * PI) b = self.trapezoidal_wave(theta, (2.0/6.0) * 2.0 * PI) [r, g, b] end # 台形波 def self.trapezoidal_wave(theta, phase) x = (theta - phase)/ (2.0*PI) x = x - x.floor if (0.0/6.0) <= x && x < (1.0/6.0) return x * 6.0 elsif (1.0/6.0) <= x && x < (3.0/6.0) return 1.0 elsif (3.0/6.0) <= x && x < (4.0/6.0) return 4.0 - x * 6.0 elsif (4.0/6.0) <= x && x < (6.0/6.0) return 0.0 end end end # thetaBase: その色が上がり始める点を基準とする。R ならば 4π/3
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
crystalcell-0.1.1 | lib/crystalcell/povray/color.rb |
crystalcell-0.1.0 | lib/crystalcell/povray/color.rb |