CARLA
 
载入中...
搜索中...
未找到
Public 成员函数 | 静态 Public 成员函数 | Public 属性 | 静态 Public 属性 | 所有成员列表
vec3f结构体 参考

一个包含三维浮点数坐标的向量结构体,提供了一系列向量运算。 更多...

#include <Simplify.h>

+ vec3f 的协作图:

Public 成员函数

double angle (const vec3f &v)
 计算当前向量与另一个向量之间的角度
 
double angle2 (const vec3f &v, const vec3f &w)
 计算两个向量之间的角度,考虑第三个向量定义的平面
 
void clamp (double min, double max)
 将当前向量的分量限制在最小值和最大值之间
 
vec3f cross (const vec3f &a, const vec3f &b)
 计算两个三维向量的叉积
 
double dot (const vec3f &a) const
 计算当前对象与另一个vec3f对象的点积。
 
vec3f frac ()
 获取当前向量的分数部分
 
vec3f integer ()
 获取当前向量的整数部分
 
vec3f invert ()
 获取当前向量的相反向量
 
double length () const
 获取当前向量的长度
 
vec3f normalize (double desired_length=1)
 将当前向量归一化
 
vec3f operator* (const double a) const
 
vec3f operator* (const vec3f a) const
 
vec3f operator+ (const vec3f &a) const
 
vec3f operator+= (const vec3f &a) const
 
vec3f operator- (const vec3f &a) const
 向量减法运算符重载,计算当前对象与另一个vec3f对象对应分量相减的结果。
 
vec3f operator/ (const double a) const
 向量与标量除法运算符重载,计算当前对象与给定标量相除的结果。
 
vec3f operator/ (const vec3f a) const
 向量除法运算符重载,计算当前对象与另一个vec3f对象对应分量相除的结果。
 
vec3f operator= (const vec3f a)
 赋值运算符重载,用于将另一个vec3f对象的值赋给当前对象。
 
vec3f operator= (const vector3 a)
 赋值运算符重载,从另一个vec3f对象赋值。
 
vec3f random01_fxyz ()
 将当前向量的每个分量设置为[0, 1)范围内的随机数
 
double random_double_01 (double a)
 生成一个[0, 1)范围内的随机双精度浮点数,基于给定的输入进行变换
 
vec3f rot_x (double a)
 绕X轴旋转当前向量
 
vec3f rot_y (double a)
 绕Y轴旋转当前向量
 
vec3f rot_z (double a)
 绕Z轴旋转当前向量
 
vec3f v3 () const
 
 vec3f (const double X, const double Y, const double Z)
 参数化构造函数,从三个浮点数构造。
 
 vec3f (vector3 a)
 拷贝构造函数,从另一个vector3对象构造。
 
 vec3f (void)
 默认构造函数。
 

静态 Public 成员函数

static vec3f normalize (vec3f a)
 静态方法:归一化一个向量
 
static vec3f random ()
 静态方法:生成一个随机三维向量
 
static double random_double ()
 静态方法:生成一个随机双精度浮点数
 
static void random_init ()
 静态方法:初始化随机数生成器
 

Public 属性

double x
 
double y
 
double z
 

静态 Public 属性

static int random_number
 静态成员变量:随机数生成器使用的随机数
 

详细描述

一个包含三维浮点数坐标的向量结构体,提供了一系列向量运算。

在文件 Simplify.h132 行定义.

构造及析构函数说明

◆ vec3f() [1/3]

vec3f::vec3f ( void )
inline

默认构造函数。

在文件 Simplify.h139 行定义.

被这些函数引用 frac(), integer(), operator*(), operator*(), operator+(), operator+=(), operator-(), operator/(), operator/() , 以及 v3().

+ 这是这个函数的调用关系图:

◆ vec3f() [2/3]

vec3f::vec3f ( vector3 a)
inline

拷贝构造函数,从另一个vector3对象构造。

参数
a一个vector3对象。

在文件 Simplify.h146 行定义.

引用了 vector3::x, x, vector3::y, y, vector3::z , 以及 z.

◆ vec3f() [3/3]

vec3f::vec3f ( const double X,
const double Y,
const double Z )
inline

参数化构造函数,从三个浮点数构造。

参数
Xx坐标。
Yy坐标。
Zz坐标。

在文件 Simplify.h159 行定义.

引用了 x, y , 以及 z.

成员函数说明

◆ angle()

double vec3f::angle ( const vec3f & v)
inline

计算当前向量与另一个向量之间的角度

计算当前向量(*this)与向量v之间的夹角(弧度)。

参数
v另一个三维向量
返回
夹角(以弧度为单位)

在文件 Simplify.h280 行定义.

引用了 dot(), length(), x, y , 以及 z.

+ 函数调用图:

◆ angle2()

double vec3f::angle2 ( const vec3f & v,
const vec3f & w )
inline

计算两个向量之间的角度,考虑第三个向量定义的平面

计算向量v和当前向量(*this)之间的夹角,但考虑由第三个向量w定义的平面。 如果当前向量v在由w和b定义的平面的法线方向上投影为正,则返回负角度。

参数
v第一个三维向量
w用于定义平面的第三个三维向量
返回
夹角(以弧度为单位)

在文件 Simplify.h304 行定义.

引用了 cross(), dot(), length(), x, y , 以及 z.

+ 函数调用图:

◆ clamp()

void vec3f::clamp ( double min,
double max )
inline

将当前向量的分量限制在最小值和最大值之间

将当前向量的x、y、z分量限制在min和max之间。

参数
min最小值
max最大值

在文件 Simplify.h360 行定义.

引用了 min(), x, y , 以及 z.

+ 函数调用图:

◆ cross()

vec3f vec3f::cross ( const vec3f & a,
const vec3f & b )
inline

计算两个三维向量的叉积

计算两个三维向量a和b的叉积,并将结果存储在调用对象中。

参数
a第一个三维向量
b第二个三维向量
返回
调用对象的引用,其值被更新为叉积的结果

在文件 Simplify.h265 行定义.

引用了 x, y , 以及 z.

被这些函数引用 angle2(), Simplify::SimplificationObject::flipped() , 以及 Simplify::SimplificationObject::update_mesh().

+ 这是这个函数的调用关系图:

◆ dot()

double vec3f::dot ( const vec3f & a) const
inline

计算当前对象与另一个vec3f对象的点积。

参数
a另一个vec3f对象。
返回
返回点积的结果。

在文件 Simplify.h252 行定义.

引用了 x, y , 以及 z.

被这些函数引用 angle(), angle2(), barycentric(), Simplify::SimplificationObject::flipped() , 以及 Simplify::SimplificationObject::update_mesh().

+ 这是这个函数的调用关系图:

◆ frac()

vec3f vec3f::frac ( )
inline

获取当前向量的分数部分

将当前向量的每个分量转换为小数部分(即去除整数部分)。

返回
一个新的包含小数部分的向量。

在文件 Simplify.h412 行定义.

引用了 vec3f(), x, y , 以及 z.

+ 函数调用图:

◆ integer()

vec3f vec3f::integer ( )
inline

获取当前向量的整数部分

将当前向量的每个分量转换为整数部分(即去除小数部分)。

返回
一个新的包含整数部分的向量。

在文件 Simplify.h426 行定义.

引用了 vec3f(), x, y , 以及 z.

+ 函数调用图:

◆ invert()

vec3f vec3f::invert ( )
inline

获取当前向量的相反向量

将当前向量的每个分量取反,并返回修改后的向量。

返回
修改后的向量的引用。

在文件 Simplify.h398 行定义.

引用了 x, y , 以及 z.

◆ length()

double vec3f::length ( ) const
inline

获取当前向量的长度

计算并返回当前向量的长度(欧几里得范数)。

返回
向量的长度。

在文件 Simplify.h440 行定义.

引用了 x, y , 以及 z.

被这些函数引用 angle() , 以及 angle2().

+ 这是这个函数的调用关系图:

◆ normalize() [1/2]

vec3f vec3f::normalize ( double desired_length = 1)
inline

将当前向量归一化

将当前向量缩放为其单位长度(即长度为1),或者指定的长度。

参数
desired_length希望的长度,默认为1。
返回
修改后的向量的引用。

在文件 Simplify.h452 行定义.

引用了 x, y , 以及 z.

被这些函数引用 Simplify::SimplificationObject::flipped() , 以及 Simplify::SimplificationObject::update_mesh().

+ 这是这个函数的调用关系图:

◆ normalize() [2/2]

static vec3f vec3f::normalize ( vec3f a)
static

静态方法:归一化一个向量

计算并返回一个向量的单位长度版本。

参数
a要归一化的向量。
返回
归一化后的向量。

◆ operator*() [1/2]

vec3f vec3f::operator* ( const double a) const
inline

在文件 Simplify.h176 行定义.

引用了 vec3f(), x, y , 以及 z.

+ 函数调用图:

◆ operator*() [2/2]

vec3f vec3f::operator* ( const vec3f a) const
inline

在文件 Simplify.h181 行定义.

引用了 vec3f(), x, y , 以及 z.

+ 函数调用图:

◆ operator+()

vec3f vec3f::operator+ ( const vec3f & a) const
inline

在文件 Simplify.h166 行定义.

引用了 vec3f(), x, y , 以及 z.

+ 函数调用图:

◆ operator+=()

vec3f vec3f::operator+= ( const vec3f & a) const
inline

在文件 Simplify.h171 行定义.

引用了 vec3f(), x, y , 以及 z.

+ 函数调用图:

◆ operator-()

vec3f vec3f::operator- ( const vec3f & a) const
inline

向量减法运算符重载,计算当前对象与另一个vec3f对象对应分量相减的结果。

参数
a另一个vec3f对象,其对应分量将从当前对象的对应分量中减去。
返回
返回一个新vec3f对象,包含减法运算的结果。

在文件 Simplify.h232 行定义.

引用了 vec3f(), x, y , 以及 z.

+ 函数调用图:

◆ operator/() [1/2]

vec3f vec3f::operator/ ( const double a) const
inline

向量与标量除法运算符重载,计算当前对象与给定标量相除的结果。

参数
a一个标量,将用作除数。
返回
返回一个新vec3f对象,包含除法运算的结果。

在文件 Simplify.h242 行定义.

引用了 vec3f(), x, y , 以及 z.

+ 函数调用图:

◆ operator/() [2/2]

vec3f vec3f::operator/ ( const vec3f a) const
inline

向量除法运算符重载,计算当前对象与另一个vec3f对象对应分量相除的结果。

参数
a另一个vec3f对象,其对应分量将用作除数。
返回
返回一个新vec3f对象,包含除法运算的结果。

在文件 Simplify.h222 行定义.

引用了 vec3f(), x, y , 以及 z.

+ 函数调用图:

◆ operator=() [1/2]

vec3f vec3f::operator= ( const vec3f a)
inline

赋值运算符重载,用于将另一个vec3f对象的值赋给当前对象。

参数
a另一个vec3f对象,其值将被赋给当前对象。
返回
返回当前对象的引用。

在文件 Simplify.h209 行定义.

引用了 x, y , 以及 z.

◆ operator=() [2/2]

vec3f vec3f::operator= ( const vector3 a)
inline

赋值运算符重载,从另一个vec3f对象赋值。

参数
a另一个vec3f对象。
返回
返回当前对象的引用。

在文件 Simplify.h196 行定义.

引用了 vector3::x, x, vector3::y, y, vector3::z , 以及 z.

◆ random()

static vec3f vec3f::random ( )
static

静态方法:生成一个随机三维向量

生成一个每个分量都在[0, 1)范围内的随机三维向量。

返回
随机三维向量。

◆ random01_fxyz()

vec3f vec3f::random01_fxyz ( )
inline

将当前向量的每个分量设置为[0, 1)范围内的随机数

使用random_double_01方法为每个分量生成一个随机数。

返回
修改后的向量的引用。

在文件 Simplify.h526 行定义.

引用了 random_double_01(), x, y , 以及 z.

+ 函数调用图:

◆ random_double()

static double vec3f::random_double ( )
static

静态方法:生成一个随机双精度浮点数

生成一个在[0, 1)范围内的随机双精度浮点数。

返回
随机双精度浮点数。

◆ random_double_01()

double vec3f::random_double_01 ( double a)
inline

生成一个[0, 1)范围内的随机双精度浮点数,基于给定的输入进行变换

使用一个复杂的线性同余生成器(LCG)算法,基于给定的输入a生成一个随机数。

参数
a输入值,用于影响生成的随机数。
返回
[0, 1)范围内的随机双精度浮点数。

在文件 Simplify.h513 行定义.

被这些函数引用 random01_fxyz().

+ 这是这个函数的调用关系图:

◆ random_init()

static void vec3f::random_init ( )
static

静态方法:初始化随机数生成器

设置随机数生成的初始状态。

◆ rot_x()

vec3f vec3f::rot_x ( double a)
inline

绕X轴旋转当前向量

将当前向量绕X轴旋转a弧度。

参数
a旋转角度(以弧度为单位)
返回
调用对象的引用,其值被更新为旋转后的结果

在文件 Simplify.h328 行定义.

引用了 y , 以及 z.

◆ rot_y()

vec3f vec3f::rot_y ( double a)
inline

绕Y轴旋转当前向量

将当前向量绕Y轴旋转a弧度。

参数
a旋转角度(以弧度为单位)
返回
调用对象的引用,其值被更新为旋转后的结果

在文件 Simplify.h344 行定义.

引用了 x , 以及 z.

◆ rot_z()

vec3f vec3f::rot_z ( double a)
inline

绕Z轴旋转当前向量

将当前向量绕Z轴旋转a弧度。

参数
a旋转角度(以弧度为单位)
返回
调用对象的引用,其值被更新为旋转后的结果

在文件 Simplify.h383 行定义.

引用了 x , 以及 y.

◆ v3()

vec3f vec3f::v3 ( ) const
inline

在文件 Simplify.h186 行定义.

引用了 vec3f(), x, y , 以及 z.

+ 函数调用图:

类成员变量说明

◆ random_number

int vec3f::random_number
static

静态成员变量:随机数生成器使用的随机数

用于随机数生成的内部状态变量。

在文件 Simplify.h504 行定义.

◆ x

double vec3f::x

◆ y

double vec3f::y

◆ z

double vec3f::z

该结构体的文档由以下文件生成: