LMCAS
Lamina Computer Algebra System
载入中...
搜索中...
未找到
vector_calculus_vectors.hpp
浏览该文件的文档.
1#pragma once
2
4
5namespace LMCAS {
6
7/**
8 * @brief 计算两个向量的点积 a·b = ∑aᵢbᵢ。
9 * @param[in] a 向量 a
10 * @param[in] b 向量 b(维度需与 a 相同)
11 * @return 点积标量表达式
12 */
14 const VectorField& a, const VectorField& b);
15
16/**
17 * @brief 计算两个三维向量的叉积 a×b。
18 * @param[in] a 三维向量 a
19 * @param[in] b 三维向量 b
20 * @return 叉积向量(三分量)
21 */
23 const VectorField& a, const VectorField& b);
24
25/**
26 * @brief 计算向量 a 在向量 b 上的投影向量 proj_b(a) = (a·b / b·b)·b。
27 * @param[in] a 被投影向量
28 * @param[in] b 投影方向向量
29 * @return 投影向量;b 为零向量时返回零向量
30 */
32 const VectorField& a, const VectorField& b);
33
34/**
35 * @brief 计算向量 a 在向量 b 上的标量投影 a·b / |b|。
36 * @param[in] a 被投影向量
37 * @param[in] b 投影方向向量
38 * @return 标量投影表达式;b 为零向量时返回 nullptr
39 */
41 const VectorField& a, const VectorField& b);
42
43/**
44 * @brief 计算两个向量夹角 arccos(a·b / (|a|·|b|))。
45 * @param[in] a 向量 a
46 * @param[in] b 向量 b
47 * @return 夹角表达式(弧度);任一向量为零时返回 nullptr
48 */
50 const VectorField& a, const VectorField& b);
51
52/**
53 * @brief 计算三个三维向量的混合积 a·(b×c)。
54 * @param[in] a 向量 a
55 * @param[in] b 向量 b
56 * @param[in] c 向量 c
57 * @return 混合积标量表达式(等于以 a,b,c 为行的行列式)
58 */
60 const VectorField& a, const VectorField& b, const VectorField& c);
61
62}
#define LMCAS_API
const VectorField const VectorField & c
const MultiPoly & b
__attribute__((visibility("default"))) VectorCalculusExprResult curve_integral_scalar_checked(const std __attribute__((visibility("default"))) VectorCalculusExprResult curve_integral_scalar_checked(const std __attribute__((visibility("default"))) std const VectorField const std::string const std::shared_ptr< SymbolicExpr > & a
std::vector< std::shared_ptr< SymbolicExpr > > VectorField
向量场由标量表达式组成。
Result< VectorField > VectorCalculusFieldResult
VectorCalculusExprResult vector_angle_symbolic(const VectorField &a, const VectorField &b)
VectorCalculusExprResult scalar_project(const VectorField &a, const VectorField &b)
VectorCalculusFieldResult vector_project(const VectorField &a, const VectorField &b)
Result< std::shared_ptr< SymbolicExpr > > VectorCalculusExprResult
VectorCalculusExprResult mixed_product(const VectorField &a, const VectorField &b, const VectorField &c)
VectorCalculusFieldResult cross_product(const VectorField &a, const VectorField &b)
VectorCalculusExprResult dot_product(const VectorField &a, const VectorField &b)