Class: Mageo::Tetrahedron

Inherits:
Polyhedron show all
Defined in:
lib/mageo/tetrahedron.rb

Overview

直交座標系 3次元空間内の四面体を表現するクラス。

Defined Under Namespace

Classes: InitializeError

Instance Attribute Summary

Attributes inherited from Polyhedron

#vertices

Instance Method Summary collapse

Methods inherited from Polyhedron

#center, #edges, #include?, #inside?, #shared_vertices, #translate, #translate!, #triangles, #volume

Constructor Details

#initialize(vertices) ⇒ Tetrahedron

vertices には四面体の頂点を順不同で入れた Array。

Raises:



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/mageo/tetrahedron.rb', line 12

def initialize( vertices )
  raise InitializeError if vertices.class != Array
  raise InitializeError if vertices.size != 4
  vertices.each do |vertex|
    raise InitializeError if vertex.size != 3
    raise InitializeError unless vertex.methods.include?( :[] )
    raise InitializeError unless vertex.methods.include?( :map )
  end
  vertices.each do |vertex|
    raise InitializeError if vertex.class == Mageo::Vector3DInternal
  end

  @vertices = vertices.map { |vertex| vertex.to_v3d }

  @vertex_indices_of_triangles = [
    [ 0, 1, 2 ], 
    [ 1, 2, 3 ],
    [ 2, 3, 0 ], 
    [ 3, 0, 1 ],
  ]

  raise InitializeError, "volume is zero." if volume == 0.0
end