Sha256: b10ef730b442061daba37a402be1ea91c4b915dface8e5f7a51ff9aca302c539
Contents?: true
Size: 1.51 KB
Versions: 1
Compression:
Stored size: 1.51 KB
Contents
#! /usr/bin/env ruby # coding: utf-8 require "mageo/vector3d.rb" require "mageo/triangle.rb" #require "mageo/tetrahedron.rb" require "mageo/polyhedron.rb" # 3次元空間中の八面体を表現するクラス class Octahedron < Polyhedron class InitializeError < Exception; end #八面体は 6個の頂点で構成されるが、これを3組の対体角で指定する。 #e.g., # [ # [ [ -1, 0, 0 ], [ 1, 0, 0 ] ], # [ [ 0, -1, 0 ], [ 0, 1, 0 ] ], # [ [ 0, 0, -1 ], [ 0, 0, 1 ] ], # ] # #凸包であることのチェックは難しいのでしない。 #TODO: 頂点が重複している、面上にあるなどのチェックも本来はすべきだが、入れていない。 def initialize( pairs ) raise InitializeError if pairs.class != Array raise InitializeError if pairs.size != 3 pairs.each do |pair| raise InitializeError unless pair.class == Array raise InitializeError if pair.size != 2 pair.each do |pos| raise InitializeError if pos.size != 3 raise InitializeError unless pos.methods.include?( :[] ) raise InitializeError unless pos.methods.include?( :map ) end end pairs.flatten.each do |vertex| raise InitializeError if vertex.class == Vector3DInternal end @vertices = [] pairs.each do |pair| pair.each do |vertex| @vertices << vertex.to_v3d end end @vertex_indices_of_triangles = [ [ 0, 2, 4], [ 0, 2, 5], [ 0, 3, 4], [ 0, 3, 5], [ 1, 2, 4], [ 1, 2, 5], [ 1, 3, 4], [ 1, 3, 5] ] end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
mageo-0.0.0 | lib/mageo/octahedron.rb |