struct Chem::Spatial::Vector

Defined in:

chem/spatial/vector.cr

Constructors

Instance Method Summary

Constructor Detail

def self.[](x : NumberType, y : NumberType, z : NumberType) : self #

[View source]
def self.new(x : Float64, y : Float64, z : Float64) #

[View source]
def self.new(x : NumberType, y : NumberType, z : NumberType) #

[View source]
def self.origin : self #

[View source]
def self.x : self #

[View source]
def self.y : self #

[View source]
def self.z : self #

[View source]
def self.zero : self #

[View source]

Instance Method Detail

def *(other : Number) : self #

[View source]
def *(other : Vector) : self #

[View source]
def *(other : Tuple(NumberType, NumberType, NumberType)) : self #

[View source]
def *(rhs : AffineTransform) : self #

[View source]
def +(other : Number) : self #

[View source]
def +(other : Vector) : self #

[View source]
def +(other : Tuple(NumberType, NumberType, NumberType)) : self #

[View source]
def +(rhs : Size) : self #

[View source]
def -(other : Number) : self #

[View source]
def -(other : Vector) : self #

[View source]
def -(other : Tuple(NumberType, NumberType, NumberType)) : self #

[View source]
def -(rhs : Size) : self #

[View source]
def - : self #

[View source]
def /(other : Number) : self #

[View source]
def /(other : Vector) : self #

[View source]
def /(other : Tuple(NumberType, NumberType, NumberType)) : self #

[View source]
def [](index : Int32) : Float64 #

[View source]
def abs : self #

[View source]
def clamp(min : Number, max : Number) : self #

[View source]
def clamp(range : Range) : self #

[View source]
def cross(other : Vector) : self #

[View source]
def dot(other : Vector) : Float64 #

[View source]
def floor : self #

[View source]
def image(lattice : Lattice, i : Int, j : Int, k : Int) : self #

Returns vector's PBC image with respect to lattice

lat = Lattice.new S[2, 2, 3], 90, 90, 120
lat.i # => Vector[2.0, 0.0, 0.0]
lat.j # => Vector[-1, 1.732, 0.0]
lat.k # => Vector[0.0, 0.0, 3.0]

vec = Vector[1, 1, 1.5]
vec.image(lat, 1, 0, 0) # => Vector[3.0, 1.0, 1.5]
vec.image(lat, 0, 1, 0) # => Vector[0.0, 2.732, 1.5]
vec.image(lat, 0, 0, 1) # => Vector[1.0, 1.0, 4.5]
vec.image(lat, 1, 0, 1) # => Vector[3.0, 1.0, 4.5]
vec.image(lat, 1, 1, 1) # => Vector[2.0, 2.732, 4.5]

[View source]
def image(i : Int, j : Int, k : Int) : self #

Returns vector's PBC image in fractional coordinates

vec = Vector[0.456, 0.1, 0.8]
vec.image 1, 0, 0   # => Vector[1.456, 0.1, 0.8]
vec.image -1, 0, 0  # => Vector[-0.544, 0.1, 0.8]
vec.image -1, 1, -5 # => Vector[-0.544, 1.1, -4.2]

[View source]
def inspect(io : ::IO) #

[View source]
def inv : self #

[View source]
def map(&block : Float64 -> Number::Primitive) : self #

[View source]
def map_with_index(&block : Float64, Int32 -> Number::Primitive) : self #

[View source]
def normalize : self #

[View source]
def origin? : Bool #

[View source]
def pad(padding : Number) : self #

[View source]
def resize(new_size : Number) : self #

[View source]
def rotate(about rotaxis : Vector, by theta : Float64) : self #

[View source]
def round : self #

[View source]
def size : Float64 #

[View source]
def to_a : Array(Float64) #

[View source]
def to_cartesian(basis : Basis) : self #

[View source]
def to_cartesian(lattice : Lattice) : self #

[View source]
def to_fractional(basis : Basis) : self #

[View source]
def to_fractional(lattice : Lattice) : self #

[View source]
def to_m : Linalg::Matrix #

[View source]
def to_s(io : ::IO) #

[View source]
def to_t : Tuple(Float64, Float64, Float64) #

[View source]
def wrap(lattice : Lattice, around center : self) : self #

[View source]
def wrap(around center : self) : self #

[View source]
def wrap(lattice : Lattice) : self #

[View source]
def wrap : self #

[View source]
def x : Float64 #

[View source]
def x? : Bool #

[View source]
def y : Float64 #

[View source]
def y? : Bool #

[View source]
def z : Float64 #

[View source]
def z? : Bool #

[View source]
def zero? : Bool #

[View source]