test/test_triangle.rb in mageo-0.0.0 vs test/test_triangle.rb in mageo-0.0.1

- old
+ new

@@ -4,255 +4,254 @@ require "test/unit" require "mageo/triangle.rb" require "mageo/vector3d.rb" class Triangle - public :internal_axes + public :internal_axes end class TC_Triangle < Test::Unit::TestCase - $tolerance = 10.0 ** (-10) + $tolerance = 10.0 ** (-10) - VEC_O = Vector3D[0.0, 0.0, 0.0] - VEC_X = Vector3D[1.0, 0.0, 0.0] - VEC_Y = Vector3D[0.0, 1.0, 0.0] - VEC_Z = Vector3D[0.0, 0.0, 1.0] + VEC_O = Vector3D[0.0, 0.0, 0.0] + VEC_X = Vector3D[1.0, 0.0, 0.0] + VEC_Y = Vector3D[0.0, 1.0, 0.0] + VEC_Z = Vector3D[0.0, 0.0, 1.0] - def setup - @t00 = Triangle.new([VEC_O, VEC_X, VEC_Y]) - @t01 = Triangle.new([VEC_X, VEC_Y, VEC_Z]) - @t02 = Triangle.new([[10.0,10.0,10.0], [20.0,10.0,10.0], [10.0,20.0,10.0]]) - @t03 = Triangle.new([[10.0,20.0,30.0], [ 0.0,20.0,30.0], [10.0, 0.0,30.0]]) - end + def setup + @t00 = Triangle.new([VEC_O, VEC_X, VEC_Y]) + @t01 = Triangle.new([VEC_X, VEC_Y, VEC_Z]) + @t02 = Triangle.new([[10.0,10.0,10.0], [20.0,10.0,10.0], [10.0,20.0,10.0]]) + @t03 = Triangle.new([[10.0,20.0,30.0], [ 0.0,20.0,30.0], [10.0, 0.0,30.0]]) + end - def test_initialize - assert_raise( ArgumentError ){ Triangle.new } - assert_raise( ArgumentError ){ Triangle.new() } - assert_raise( Triangle::InitializeError ){ Triangle.new( nil ) } - assert_raise( Triangle::InitializeError ){ Triangle.new( [] ) } - assert_raise( Triangle::InitializeError ){ Triangle.new( [ 0, 1 ] ) } - assert_raise( Triangle::InitializeError ){ Triangle.new( [ 0, 1, 2 ] ) } - assert_raise( Triangle::InitializeError ){ Triangle.new( [ 0, 1, 2, 3 ] ) } - assert_raise( Triangle::InitializeError ){ Triangle.new( [ [ 0, 0, 0 ], [ 1, 1, 1 ], [ 2, 3 ] ] ) } #3次元座標になっていないものがある。 + def test_initialize + assert_raise( ArgumentError ){ Triangle.new } + assert_raise( ArgumentError ){ Triangle.new() } + assert_raise( Triangle::InitializeError ){ Triangle.new( nil ) } + assert_raise( Triangle::InitializeError ){ Triangle.new( [] ) } + assert_raise( Triangle::InitializeError ){ Triangle.new( [ 0, 1 ] ) } + assert_raise( Triangle::InitializeError ){ Triangle.new( [ 0, 1, 2 ] ) } + assert_raise( Triangle::InitializeError ){ Triangle.new( [ 0, 1, 2, 3 ] ) } + assert_raise( Triangle::InitializeError ){ Triangle.new( [ [ 0, 0, 0 ], [ 1, 1, 1 ], [ 2, 3 ] ] ) } #3次元座標になっていないものがある。 - assert_raise( Triangle::LinearException ){ Triangle.new( [ [ 0, 0, 0 ], [ 0, 0, 0 ], [ 2, 2, 2 ] ] ) } #同一の点を含む。 - assert_raise( Triangle::LinearException ){ Triangle.new( [ [ 0, 0, 0 ], [ 1, 1, 1 ], [ 2, 2, 2 ] ] ) } #直線上に並ぶ + assert_raise( Triangle::LinearException ){ Triangle.new( [ [ 0, 0, 0 ], [ 0, 0, 0 ], [ 2, 2, 2 ] ] ) } #同一の点を含む。 + assert_raise( Triangle::LinearException ){ Triangle.new( [ [ 0, 0, 0 ], [ 1, 1, 1 ], [ 2, 2, 2 ] ] ) } #直線上に並ぶ - assert_equal( Triangle, Triangle.new( [ Vector3D[ 0, 0, 0 ], Vector3D[ 1, 0, 0 ], Vector3D[ 0, 1, 0 ] ] ).class ) - end + assert_equal( Triangle, Triangle.new( [ Vector3D[ 0, 0, 0 ], Vector3D[ 1, 0, 0 ], Vector3D[ 0, 1, 0 ] ] ).class ) + end - def test_vertices - assert_equal( Array, @t00.vertices.class ) - assert_equal( 3, @t00.vertices.size ) - assert_equal( Vector3D[0, 0, 0], @t00.vertices[0] ) - assert_equal( Vector3D[1, 0, 0], @t00.vertices[1] ) - assert_equal( Vector3D[0, 1, 0], @t00.vertices[2] ) - end + def test_vertices + assert_equal( Array, @t00.vertices.class ) + assert_equal( 3, @t00.vertices.size ) + assert_equal( Vector3D[0, 0, 0], @t00.vertices[0] ) + assert_equal( Vector3D[1, 0, 0], @t00.vertices[1] ) + assert_equal( Vector3D[0, 1, 0], @t00.vertices[2] ) + end - def test_same_side? - assert_raise(Triangle::TypeError){ @t00.same_side?( [ 2, 3, 7 ], [ -2, -3, 2 ])} + def test_same_side? + assert_raise(Triangle::TypeError){ @t00.same_side?( [ 2, 3, 7 ], [ -2, -3, 2 ])} - assert_equal( true , @t00.same_side?( Vector3D[ 2, 3, 7 ], Vector3D[ -2, -3, 2 ] ) ) - assert_equal( true , @t00.same_side?( Vector3D[ 2, 3, -7 ], Vector3D[ -2, -3, -2 ] ) ) - assert_equal( false, @t00.same_side?( Vector3D[ 2, 3, 7 ], Vector3D[ -2, -3, -2 ] ) ) - assert_equal( false, @t00.same_side?( Vector3D[ 2, 3, -7 ], Vector3D[ -2, -3, 2 ] ) ) - assert_equal( false, @t00.same_side?( Vector3D[ 1, 2, 0 ], Vector3D[ 10, 10, 10 ] ) ) #pos0 が面上の点 - assert_equal( false, @t00.same_side?( Vector3D[10, 10,10 ], Vector3D[ 1, 2, 0 ] ) ) #pos1 が面上の点 - assert_equal( false, @t00.same_side?( Vector3D[10, 10, 0 ], Vector3D[ 1, 2, 0 ] ) ) #両方 が面上の点 + assert_equal( true , @t00.same_side?( Vector3D[ 2, 3, 7 ], Vector3D[ -2, -3, 2 ] ) ) + assert_equal( true , @t00.same_side?( Vector3D[ 2, 3, -7 ], Vector3D[ -2, -3, -2 ] ) ) + assert_equal( false, @t00.same_side?( Vector3D[ 2, 3, 7 ], Vector3D[ -2, -3, -2 ] ) ) + assert_equal( false, @t00.same_side?( Vector3D[ 2, 3, -7 ], Vector3D[ -2, -3, 2 ] ) ) + assert_equal( false, @t00.same_side?( Vector3D[ 1, 2, 0 ], Vector3D[ 10, 10, 10 ] ) ) #pos0 が面上の点 + assert_equal( false, @t00.same_side?( Vector3D[10, 10,10 ], Vector3D[ 1, 2, 0 ] ) ) #pos1 が面上の点 + assert_equal( false, @t00.same_side?( Vector3D[10, 10, 0 ], Vector3D[ 1, 2, 0 ] ) ) #両方 が面上の点 - assert_equal( true , @t01.same_side?( Vector3D[ 10, 10, 10 ], Vector3D[ 20, 30, 40 ] ) ) - assert_equal( true , @t01.same_side?( Vector3D[ 0, 0, 0 ], Vector3D[ -10, -10, -10 ] ) ) - assert_equal( false, @t01.same_side?( Vector3D[ 10, 10, 10 ], Vector3D[ -10, -10, -10 ] ) ) - assert_equal( false, @t01.same_side?( Vector3D[ 0, 0, 0 ], Vector3D[ 20, 30, 40 ] ) ) - assert_equal( false, @t01.same_side?( Vector3D[ 0.5, 0.5, 0 ], Vector3D[ 10, 10, 10 ] ) ) #pos0 が面上の点 - assert_equal( false, @t01.same_side?( Vector3D[ 10, 10, 10 ], Vector3D[ 0.5, 0.5, 0 ] ) ) #pos1 が面上の点 - assert_equal( false, @t01.same_side?( Vector3D[ 0.5, 0.5, 0 ], Vector3D[ 0, 0.5, 0.5 ] ) ) #両方 が面上の点 - end + assert_equal( true , @t01.same_side?( Vector3D[ 10, 10, 10 ], Vector3D[ 20, 30, 40 ] ) ) + assert_equal( true , @t01.same_side?( Vector3D[ 0, 0, 0 ], Vector3D[ -10, -10, -10 ] ) ) + assert_equal( false, @t01.same_side?( Vector3D[ 10, 10, 10 ], Vector3D[ -10, -10, -10 ] ) ) + assert_equal( false, @t01.same_side?( Vector3D[ 0, 0, 0 ], Vector3D[ 20, 30, 40 ] ) ) + assert_equal( false, @t01.same_side?( Vector3D[ 0.5, 0.5, 0 ], Vector3D[ 10, 10, 10 ] ) ) #pos0 が面上の点 + assert_equal( false, @t01.same_side?( Vector3D[ 10, 10, 10 ], Vector3D[ 0.5, 0.5, 0 ] ) ) #pos1 が面上の点 + assert_equal( false, @t01.same_side?( Vector3D[ 0.5, 0.5, 0 ], Vector3D[ 0, 0.5, 0.5 ] ) ) #両方 が面上の点 + end - def test_include? - assert_raise(Triangle::TypeError){ @t00.include?([11.0, 11.0, 10.0], $tolerance)} + def test_include? + assert_raise(Triangle::TypeError){ @t00.include?([11.0, 11.0, 10.0], $tolerance)} - # on face - assert_equal(true, @t02.include?(Vector3D[11.0, 11.0, 10.0], $tolerance)) + # on face + assert_equal(true, @t02.include?(Vector3D[11.0, 11.0, 10.0], $tolerance)) - # on vertices - assert_equal(true, @t02.include?(Vector3D[10.0, 10.0, 10.0], $tolerance)) - assert_equal(true, @t02.include?(Vector3D[20.0, 10.0, 10.0], $tolerance)) - assert_equal(true, @t02.include?(Vector3D[10.0, 20.0, 10.0], $tolerance)) + # on vertices + assert_equal(true, @t02.include?(Vector3D[10.0, 10.0, 10.0], $tolerance)) + assert_equal(true, @t02.include?(Vector3D[20.0, 10.0, 10.0], $tolerance)) + assert_equal(true, @t02.include?(Vector3D[10.0, 20.0, 10.0], $tolerance)) - # on edge - assert_equal(true, @t02.include?(Vector3D[15.0, 10.0, 10.0], $tolerance)) - assert_equal(true, @t02.include?(Vector3D[10.0, 15.0, 10.0], $tolerance)) - assert_equal(true, @t02.include?(Vector3D[15.0, 15.0, 10.0], $tolerance)) + # on edge + assert_equal(true, @t02.include?(Vector3D[15.0, 10.0, 10.0], $tolerance)) + assert_equal(true, @t02.include?(Vector3D[10.0, 15.0, 10.0], $tolerance)) + assert_equal(true, @t02.include?(Vector3D[15.0, 15.0, 10.0], $tolerance)) - # out - assert_equal(false, @t02.include?(Vector3D[ 30.0, 10.0, 10.0], $tolerance)) - assert_equal(false, @t02.include?(Vector3D[ 10.0, 30.0, 10.0], $tolerance)) - assert_equal(false, @t02.include?(Vector3D[-10.0, 10.0, 10.0], $tolerance)) - assert_equal(false, @t02.include?(Vector3D[ 10.0,-10.0, 10.0], $tolerance)) - assert_equal(false, @t02.include?(Vector3D[ 10.0, 10.0, 0.0], $tolerance)) + # out + assert_equal(false, @t02.include?(Vector3D[ 30.0, 10.0, 10.0], $tolerance)) + assert_equal(false, @t02.include?(Vector3D[ 10.0, 30.0, 10.0], $tolerance)) + assert_equal(false, @t02.include?(Vector3D[-10.0, 10.0, 10.0], $tolerance)) + assert_equal(false, @t02.include?(Vector3D[ 10.0,-10.0, 10.0], $tolerance)) + assert_equal(false, @t02.include?(Vector3D[ 10.0, 10.0, 0.0], $tolerance)) - assert_equal(false, @t03.include?(Vector3D[ 3.0, 6.0, 30.0], $tolerance)) + assert_equal(false, @t03.include?(Vector3D[ 3.0, 6.0, 30.0], $tolerance)) - # 計算誤差 - assert_equal(false, @t01.include?(Vector3D[ 0.3, 0.3, 0.3], $tolerance)) - assert_equal(true, @t01.include?(Vector3D[ 0.3, 0.3, 0.3], 1.0)) - end + # 計算誤差 + assert_equal(false, @t01.include?(Vector3D[ 0.3, 0.3, 0.3], $tolerance)) + assert_equal(true, @t01.include?(Vector3D[ 0.3, 0.3, 0.3], 1.0)) + end - def test_intersection - # 平行 - pos0 = Vector3D[0.0, 0.0, 2.0] - pos1 = Vector3D[2.0, 0.0, 2.0] - seg01 = Segment.new(pos0, pos1) - assert_raise(Triangle::NoIntersectionError){ @t00.intersection(seg01, $tolerance) } + def test_intersection + # 平行 + pos0 = Vector3D[0.0, 0.0, 2.0] + pos1 = Vector3D[2.0, 0.0, 2.0] + seg01 = Segment.new(pos0, pos1) + assert_raise(Triangle::NoIntersectionError){ @t00.intersection(seg01, $tolerance) } - # 面に含まれる - pos0 = Vector3D[0.0, 0.0, 0.0] - pos1 = Vector3D[2.0, 0.0, 0.0] - seg01 = Segment.new(pos0, pos1) - assert_raise(Triangle::NoIntersectionError){ @t00.intersection(seg01, $tolerance) } + # 面に含まれる + pos0 = Vector3D[0.0, 0.0, 0.0] + pos1 = Vector3D[2.0, 0.0, 0.0] + seg01 = Segment.new(pos0, pos1) + assert_raise(Triangle::NoIntersectionError){ @t00.intersection(seg01, $tolerance) } - # 平行ではないが、三角形の外を通過。 - pos2 = Vector3D[0.0,10.0, 0.0] - pos3 = Vector3D[0.0,10.0, 2.0] - seg01 = Segment.new(pos0, pos1) - assert_raise(Triangle::NoIntersectionError){ @t00.intersection(seg01, $tolerance) } + # 平行ではないが、三角形の外を通過。 + pos2 = Vector3D[0.0,10.0, 0.0] + pos3 = Vector3D[0.0,10.0, 2.0] + seg01 = Segment.new(pos0, pos1) + assert_raise(Triangle::NoIntersectionError){ @t00.intersection(seg01, $tolerance) } - # 三角形を通る - pos2 = Vector3D[0.5, 0.5,-1.0] - pos3 = Vector3D[0.5, 0.5, 2.0] - seg01 = Segment.new(pos2, pos3) - assert_equal(Vector3D[0.5, 0.5, 0.0], @t00.intersection(seg01, $tolerance)) - # - pos2 = Vector3D[0.5, 0.5, 0.0] - pos3 = Vector3D[0.5, 0.5, 1.0] - seg01 = Segment.new(pos2, pos3) - assert_equal(Vector3D[0.5, 0.5, 0.0], @t00.intersection(seg01, $tolerance)) - # - pos2 = Vector3D[ 1.5, 1.5, 1.0] - pos3 = Vector3D[-0.5,-0.5,-1.0] - seg01 = Segment.new(pos2, pos3) - assert_equal(Vector3D[0.5, 0.5, 0.0], @t00.intersection(seg01, $tolerance)) - # - pos2 = Vector3D[ 0.00, 0.00, 0.00] - pos3 = Vector3D[ 1.00, 1.00, 1.00] - seg01 = Segment.new(pos2, pos3) - t = @t01.intersection(seg01, $tolerance) - assert_in_delta(1.0/3.0, t[0], $tolerance) - assert_in_delta(1.0/3.0, t[1], $tolerance) - assert_in_delta(1.0/3.0, t[2], $tolerance) - # - pos2 = Vector3D[ 0.25, 0.25, 0.00] - pos3 = Vector3D[ 0.25, 0.25, 1.00] - seg01 = Segment.new(pos2, pos3) - assert_equal(Vector3D[0.25, 0.25, 0.50], @t01.intersection(seg01, $tolerance)) - end + # 三角形を通る + pos2 = Vector3D[0.5, 0.5,-1.0] + pos3 = Vector3D[0.5, 0.5, 2.0] + seg01 = Segment.new(pos2, pos3) + assert_equal(Vector3D[0.5, 0.5, 0.0], @t00.intersection(seg01, $tolerance)) + # + pos2 = Vector3D[0.5, 0.5, 0.0] + pos3 = Vector3D[0.5, 0.5, 1.0] + seg01 = Segment.new(pos2, pos3) + assert_equal(Vector3D[0.5, 0.5, 0.0], @t00.intersection(seg01, $tolerance)) + # + pos2 = Vector3D[ 1.5, 1.5, 1.0] + pos3 = Vector3D[-0.5,-0.5,-1.0] + seg01 = Segment.new(pos2, pos3) + assert_equal(Vector3D[0.5, 0.5, 0.0], @t00.intersection(seg01, $tolerance)) + # + pos2 = Vector3D[ 0.00, 0.00, 0.00] + pos3 = Vector3D[ 1.00, 1.00, 1.00] + seg01 = Segment.new(pos2, pos3) + t = @t01.intersection(seg01, $tolerance) + assert_in_delta(1.0/3.0, t[0], $tolerance) + assert_in_delta(1.0/3.0, t[1], $tolerance) + assert_in_delta(1.0/3.0, t[2], $tolerance) + # + pos2 = Vector3D[ 0.25, 0.25, 0.00] + pos3 = Vector3D[ 0.25, 0.25, 1.00] + seg01 = Segment.new(pos2, pos3) + assert_equal(Vector3D[0.25, 0.25, 0.50], @t01.intersection(seg01, $tolerance)) + end - #def test_intersect? - # TODO - #end + #def test_intersect? + # TODO + #end - def test_parallel_segment? - # 平行 - pos0 = Vector3D[0.0, 0.0, 2.0] - pos1 = Vector3D[2.0, 0.0, 2.0] - seg01 = Segment.new(pos0, pos1) - assert_equal(true , @t00.parallel_segment?(seg01)) + def test_parallel_segment? + # 平行 + pos0 = Vector3D[0.0, 0.0, 2.0] + pos1 = Vector3D[2.0, 0.0, 2.0] + seg01 = Segment.new(pos0, pos1) + assert_equal(true , @t00.parallel_segment?(seg01)) - # 面に含まれる - pos0 = Vector3D[0.0, 0.0, 0.0] - pos1 = Vector3D[2.0, 0.0, 0.0] - seg01 = Segment.new(pos0, pos1) - assert_equal(false, @t00.parallel_segment?(seg01)) + # 面に含まれる + pos0 = Vector3D[0.0, 0.0, 0.0] + pos1 = Vector3D[2.0, 0.0, 0.0] + seg01 = Segment.new(pos0, pos1) + assert_equal(false, @t00.parallel_segment?(seg01)) - # 平行ではない。 - pos2 = Vector3D[0.0,10.0, 0.0] - pos3 = Vector3D[0.0,10.0, 2.0] - seg01 = Segment.new(pos0, pos1) - assert_equal(false, @t00.parallel_segment?(seg01)) - end + # 平行ではない。 + pos2 = Vector3D[0.0,10.0, 0.0] + pos3 = Vector3D[0.0,10.0, 2.0] + seg01 = Segment.new(pos0, pos1) + assert_equal(false, @t00.parallel_segment?(seg01)) + end - def test_normal_vector - t = Vector3D[0.0, 0.0, 1.0] - assert_equal(t, @t00.normal_vector) + def test_normal_vector + t = Vector3D[0.0, 0.0, 1.0] + assert_equal(t, @t00.normal_vector) - t = Vector3D[1.0, 1.0, 1.0] - t = t * (1.0/t.r) - assert_equal(t, @t01.normal_vector) + t = Vector3D[1.0, 1.0, 1.0] + t = t * (1.0/t.r) + assert_equal(t, @t01.normal_vector) - t = Vector3D[0.0, 0.0, 1.0] - assert_equal(t, @t02.normal_vector) - end + t = Vector3D[0.0, 0.0, 1.0] + assert_equal(t, @t02.normal_vector) + end - def test_equivalent? - assert_raise(Triangle::TypeError){ - @t00.equivalent?([[ 0.0, 0.0, 0.0], [ 1.0, 0.0, 0.0], [ 0.0, 1.0, 0.0]]) - } + def test_equivalent? + assert_raise(Triangle::TypeError){ + @t00.equivalent?([[ 0.0, 0.0, 0.0], [ 1.0, 0.0, 0.0], [ 0.0, 1.0, 0.0]]) + } - t = Triangle.new([[ 0.0, 0.0, 0.0], [ 1.0, 0.0, 0.0], [ 0.0, 1.0, 0.0]]) - assert_equal(true , @t00.eql?(t)) + t = Triangle.new([[ 0.0, 0.0, 0.0], [ 1.0, 0.0, 0.0], [ 0.0, 1.0, 0.0]]) + assert_equal(true , @t00.eql?(t)) - t = Triangle.new([[ 1.0, 0.0, 0.0], [ 0.0, 0.0, 0.0], [ 0.0, 1.0, 0.0]]) - assert_equal(true , @t00.eql?(t)) + t = Triangle.new([[ 1.0, 0.0, 0.0], [ 0.0, 0.0, 0.0], [ 0.0, 1.0, 0.0]]) + assert_equal(true , @t00.eql?(t)) - t = Triangle.new([[ 1.0, 0.0, 0.0], [ 0.0, 1.0, 0.0], [ 0.0, 0.0, 0.0]]) - assert_equal(true , @t00.eql?(t)) + t = Triangle.new([[ 1.0, 0.0, 0.0], [ 0.0, 1.0, 0.0], [ 0.0, 0.0, 0.0]]) + assert_equal(true , @t00.eql?(t)) - t = Triangle.new([[ 0.0, 0.0, 1.0], [ 1.0, 0.0, 0.0], [ 0.0, 1.0, 0.0]]) - assert_equal(false, @t00.eql?(t)) + t = Triangle.new([[ 0.0, 0.0, 1.0], [ 1.0, 0.0, 0.0], [ 0.0, 1.0, 0.0]]) + assert_equal(false, @t00.eql?(t)) - # tolerance を設定の上 0.0 - t = Triangle.new([[ 0.0, 0.0, 1.0], [ 1.0, 0.0, 0.0], [ 0.0, 1.0, 0.0]]) - assert_equal(false, @t00.eql?(t, 0.0)) + # tolerance を設定の上 0.0 + t = Triangle.new([[ 0.0, 0.0, 1.0], [ 1.0, 0.0, 0.0], [ 0.0, 1.0, 0.0]]) + assert_equal(false, @t00.eql?(t, 0.0)) - # tolerance を 1.0 に設定 - t = Triangle.new([[ 0.0, 0.0, 1.0], [ 1.0, 0.0, 0.0], [ 0.0, 1.0, 0.0]]) - assert_equal(true, @t00.eql?(t, 1.0)) - end + # tolerance を 1.0 に設定 + t = Triangle.new([[ 0.0, 0.0, 1.0], [ 1.0, 0.0, 0.0], [ 0.0, 1.0, 0.0]]) + assert_equal(true, @t00.eql?(t, 1.0)) + end - def test_equal2 - t = Triangle.new([[ 0.0, 0.0, 0.0], [ 1.0, 0.0, 0.0], [ 0.0, 1.0, 0.0]]) - assert_equal(true , @t00 == t) + def test_equal2 + t = Triangle.new([[ 0.0, 0.0, 0.0], [ 1.0, 0.0, 0.0], [ 0.0, 1.0, 0.0]]) + assert_equal(true , @t00 == t) - t = Triangle.new([[ 1.0, 0.0, 0.0], [ 0.0, 0.0, 0.0], [ 0.0, 1.0, 0.0]]) - assert_equal(false, @t00 == t) + t = Triangle.new([[ 1.0, 0.0, 0.0], [ 0.0, 0.0, 0.0], [ 0.0, 1.0, 0.0]]) + assert_equal(false, @t00 == t) - t = Triangle.new([[ 1.0, 0.0, 0.0], [ 0.0, 1.0, 0.0], [ 0.0, 0.0, 0.0]]) - assert_equal(false, @t00 == t) + t = Triangle.new([[ 1.0, 0.0, 0.0], [ 0.0, 1.0, 0.0], [ 0.0, 0.0, 0.0]]) + assert_equal(false, @t00 == t) - t = Triangle.new([[ 0.0, 0.0, 1.0], [ 1.0, 0.0, 0.0], [ 0.0, 1.0, 0.0]]) - assert_equal(false, @t00 == t) - end + t = Triangle.new([[ 0.0, 0.0, 1.0], [ 1.0, 0.0, 0.0], [ 0.0, 1.0, 0.0]]) + assert_equal(false, @t00 == t) + end - def test_internal_axes - @t01 = Triangle.new([[ 1.0, 0.0, 0.0], [ 0.0, 1.0, 0.0], [ 0.0, 0.0, 1.0]]) - @t02 = Triangle.new([[10.0,10.0,10.0], [20.0,10.0,10.0], [10.0,20.0,10.0]]) + def test_internal_axes + @t01 = Triangle.new([[ 1.0, 0.0, 0.0], [ 0.0, 1.0, 0.0], [ 0.0, 0.0, 1.0]]) + @t02 = Triangle.new([[10.0,10.0,10.0], [20.0,10.0,10.0], [10.0,20.0,10.0]]) - t = Axes.new([[ 1.0, 0.0, 0.0], [ 0.0, 1.0, 0.0], [ 0.0, 0.0, 1.0]]) - assert_equal(t, @t00.internal_axes) + t = Axes.new([[ 1.0, 0.0, 0.0], [ 0.0, 1.0, 0.0], [ 0.0, 0.0, 1.0]]) + assert_equal(t, @t00.internal_axes) - t = @t01.internal_axes - assert_in_delta(-1.0, t[0][0] , $tolerance) - assert_in_delta( 1.0, t[0][1] , $tolerance) - assert_in_delta( 0.0, t[0][2] , $tolerance) - assert_in_delta(-1.0, t[1][0] , $tolerance) - assert_in_delta( 0.0, t[1][1] , $tolerance) - assert_in_delta( 1.0, t[1][2] , $tolerance) - assert_in_delta(1.0/Math.sqrt(3.0), t[2][0], $tolerance) - assert_in_delta(1.0/Math.sqrt(3.0), t[2][1], $tolerance) - assert_in_delta(1.0/Math.sqrt(3.0), t[2][2], $tolerance) + t = @t01.internal_axes + assert_in_delta(-1.0, t[0][0] , $tolerance) + assert_in_delta( 1.0, t[0][1] , $tolerance) + assert_in_delta( 0.0, t[0][2] , $tolerance) + assert_in_delta(-1.0, t[1][0] , $tolerance) + assert_in_delta( 0.0, t[1][1] , $tolerance) + assert_in_delta( 1.0, t[1][2] , $tolerance) + assert_in_delta(1.0/Math.sqrt(3.0), t[2][0], $tolerance) + assert_in_delta(1.0/Math.sqrt(3.0), t[2][1], $tolerance) + assert_in_delta(1.0/Math.sqrt(3.0), t[2][2], $tolerance) - t = Axes.new([[ 10.0, 0.0, 0.0], [ 0.0, 10.0, 0.0], [ 0.0, 0.0, 1.0]]) - assert_equal(t, @t02.internal_axes) - end + t = Axes.new([[ 10.0, 0.0, 0.0], [ 0.0, 10.0, 0.0], [ 0.0, 0.0, 1.0]]) + assert_equal(t, @t02.internal_axes) + end - def test_edges - t = @t00.edges - assert_equal(3, t.size) - - assert_equal(Segment.new(VEC_O, VEC_X), t[0]) - assert_equal(Segment.new(VEC_X, VEC_Y), t[1]) - assert_equal(Segment.new(VEC_Y, VEC_O), t[2]) - end - + def test_edges + t = @t00.edges + assert_equal(3, t.size) + + assert_equal(Segment.new(VEC_O, VEC_X), t[0]) + assert_equal(Segment.new(VEC_X, VEC_Y), t[1]) + assert_equal(Segment.new(VEC_Y, VEC_O), t[2]) + end end