holywyvern/carbuncle

View on GitHub
gems/carbuncle-math/mrblib/vector4.rb

Summary

Maintainability
A
40 mins
Test Coverage
module Carbuncle
  module Vectorizable; end

  # Represents a point in fourth dimensional space.
  class Vector4
    include Vectorizable
    extend Vectorizable::ClassMethods

    vectorize_properties %w[x y z w]

    # @!attribute x [rw]
    #  The x value of the vector.
    #  @return [Float]
    # @!attribute y [rw]
    #  The y value of the vector.
    #  @return [Float]
    # @!attribute z [rw]
    #  The z value of the vector.
    #  @return [Float]
    # @!attribute w [rw]
    #  The w value of the vector.
    #  @return [Float]
    # @!attribute xy [rw]
    #   @return [Carbuncle::Point]
    # @!attribute xz [rw]
    #   @return [Carbuncle::Point]
    # @!attribute xw [rw]
    #   @return [Carbuncle::Point]
    # @!attribute yx [rw]
    #   @return [Carbuncle::Point]
    # @!attribute yz [rw]
    #   @return [Carbuncle::Point]
    # @!attribute yw [rw]
    #   @return [Carbuncle::Point]
    # @!attribute zx [rw]
    #   @return [Carbuncle::Point]
    # @!attribute zy [rw]
    #   @return [Carbuncle::Point]
    # @!attribute zw [rw]
    #   @return [Carbuncle::Point]
    # @!attribute wx [rw]
    #   @return [Carbuncle::Point]
    # @!attribute wy [rw]
    #   @return [Carbuncle::Point]
    # @!attribute wz [rw]
    #   @return [Carbuncle::Point]
    # @!attribute xyz [rw]
    #   @return [Carbuncle::Vector3]
    # @!attribute xyw [rw]
    #   @return [Carbuncle::Vector3]
    # @!attribute xzy [rw]
    #   @return [Carbuncle::Vector3]
    # @!attribute xzw [rw]
    #   @return [Carbuncle::Vector3]
    # @!attribute yxz [rw]
    #   @return [Carbuncle::Vector3]
    # @!attribute yxw [rw]
    #   @return [Carbuncle::Vector3]
    # @!attribute yzx [rw]
    #   @return [Carbuncle::Vector3]
    # @!attribute yzw [rw]
    #   @return [Carbuncle::Vector3]
    # @!attribute zxy [rw]
    #   @return [Carbuncle::Vector3]
    # @!attribute zxw [rw]
    #   @return [Carbuncle::Vector3]
    # @!attribute xzy [rw]
    #   @return [Carbuncle::Vector3]
    # @!attribute xzw [rw]
    #   @return [Carbuncle::Vector3]
    # @!attribute wxy [rw]
    #   @return [Carbuncle::Vector3]
    # @!attribute wyx [rw]
    #   @return [Carbuncle::Vector3]
    # @!attribute wzx [rw]
    #   @return [Carbuncle::Vector3]
    # @!attribute wxz [rw]
    #   @return [Carbuncle::Vector3]
    # @!attribute wyz [rw]
    #   @return [Carbuncle::Vector3]
    # @!attribute wzy [rw]
    #   @return [Carbuncle::Vector3]
    # @!attribute xyzw [rw]
    #   @return [Carbuncle::Vector4]
    # @!attribute xywz [rw]
    #   @return [Carbuncle::Vector4]
    # @!attribute xwzy [rw]
    #   @return [Carbuncle::Vector4]
    # @!attribute xzwy [rw]
    #   @return [Carbuncle::Vector4]
    # @!attribute yxzw [rw]
    #   @return [Carbuncle::Vector4]
    # @!attribute yzxw [rw]
    #   @return [Carbuncle::Vector4]
    # @!attribute ywzx [rw]
    #   @return [Carbuncle::Vector4]
    # @!attribute yxwz [rw]
    #   @return [Carbuncle::Vector4]
    # @!attribute zxyw [rw]
    #   @return [Carbuncle::Vector4]
    # @!attribute zyxw [rw]
    #   @return [Carbuncle::Vector4]
    # @!attribute zywx [rw]
    #   @return [Carbuncle::Vector4]
    # @!attribute zwyx [rw]
    #   @return [Carbuncle::Vector4]
    # @!attribute zwxy [rw]
    #   @return [Carbuncle::Vector4]
    # @!attribute wxyz [rw]
    #   @return [Carbuncle::Vector4]
    # @!attribute wxzy [rw]
    #   @return [Carbuncle::Vector4]
    # @!attribute wyxz [rw]
    #   @return [Carbuncle::Vector4]
    # @!attribute wyzx [rw]
    #   @return [Carbuncle::Vector4]
    # @!attribute wzxy [rw]
    #   @return [Carbuncle::Vector4]
    # @!attribute wxzy [rw]
    #   @return [Carbuncle::Vector4]

    def inspect
      "Vector4(#{x}, #{y}, #{z}, #{w})"
    end

    def size
      4
    end

    def to_a
      [x, y, z, w]
    end
  end
end