LVecBase4i

class LVecBase4i

This is the base class for all three-component vectors and points.

Inheritance diagram

Inheritance diagram of LVecBase4i

LVecBase4i(void) = default
LVecBase4i(int fill_value)
LVecBase4i(int x, int y, int z, int w)
LVecBase4i(UnalignedLVecBase4i const &copy)
LVecBase4i(LVecBase3i const &copy, int w)
LVecBase4i(LPoint3i const &point)
LVecBase4i(LVector3i const &vector)
LVecBase4i(LVecBase4i const&) = default

Constructs an LVecBase4 from an LPoint3. The w coordinate is set to 1.0.

Constructs an LVecBase4 from an LVector3. The w coordinate is set to 0.0.

std::size_t add_hash(std::size_t hash) const

Adds the vector into the running hash.

void add_to_cell(int i, int value)

These next functions add to an existing value. i.e. foo.set_x(foo.get_x() + value) These are useful to reduce overhead in scripting languages:

void add_w(int value)
void add_x(int value)
void add_y(int value)
void add_z(int value)
bool almost_equal(LVecBase4i const &other, int threshold) const
bool almost_equal(LVecBase4i const &other) const

Returns true if two vectors are memberwise equal within a specified tolerance.

Returns true if two vectors are memberwise equal within a default tolerance based on the numeric type.

int compare_to(LVecBase4i const &other) const

This flavor of compare_to uses a default threshold value based on the numeric type.

void componentwise_mult(LVecBase4i const &other)
int dot(LVecBase4i const &other) const
void extract_data(float*)
void fill(int fill_value)

Sets each element of the vector to the indicated fill_value. This is particularly useful for initializing to zero.

LVecBase4i fmax(LVecBase4i const &other) const
LVecBase4i fmin(LVecBase4i const &other) const
void generate_hash(ChecksumHashGenerator &hashgen) const

Adds the vector to the indicated hash generator.

int get_cell(int i) const
static TypeHandle get_class_type(void)
int const *get_data(void) const

Returns the address of the first of the four data elements in the vector. The remaining elements occupy the next positions consecutively in memory.

std::size_t get_hash(void) const

Returns a suitable hash for phash_map.

static constexpr int get_num_components(void)
int get_w(void) const
int get_x(void) const
LVecBase2i get_xy(void) const

Returns the x and y component of this vector

LVecBase3i get_xyz(void) const

Returns the x, y and z component of this vector

int get_y(void) const
int get_z(void) const
bool is_nan(void) const

Returns true if any component of the vector is not-a-number, false otherwise.

int length_squared(void) const

Returns the square of the vector’s length, cheap and easy.

void output(std::ostream &out) const
void read_datagram(DatagramIterator &source)

Reads the vector from the Datagram using get_stdfloat().

void read_datagram_fixed(DatagramIterator &source)

Reads the vector from the Datagram using get_float32() or get_float64(). See write_datagram_fixed().

void set(int x, int y, int z, int w)
void set_cell(int i, int value)
void set_w(int value)
void set_x(int value)
void set_y(int value)
void set_z(int value)
static constexpr int size(void)
LVecBase4i const &unit_w(void)

Returns a unit W vector.

LVecBase4i const &unit_x(void)

Returns a unit X vector.

LVecBase4i const &unit_y(void)

Returns a unit Y vector.

LVecBase4i const &unit_z(void)

Returns a unit Z vector.

bool validate_ptr(void const *ptr)
void write_datagram(Datagram &destination) const

Writes the vector to the Datagram using add_stdfloat(). This is appropriate when you want to write the vector using the standard width setting, especially when you are writing a bam file.

void write_datagram_fixed(Datagram &destination) const

Writes the vector to the Datagram using add_float32() or add_float64(), depending on the type of floats in the vector, regardless of the setting of Datagram::set_stdfloat_double(). This is appropriate when you want to write a fixed-width value to the datagram, especially when you are not writing a bam file.

LVecBase4i const &zero(void)

Returns a zero-length vector.