LMCAS
Lamina Computer Algebra System
载入中...
搜索中...
未找到
symbolic_geometry_surface.hpp
浏览该文件的文档.
1#pragma once
4
5namespace LMCAS {
6
7/**
8 * @brief 计算曲面在某点的单位法向量 ∇F/|∇F|。
9 *
10 * 数值梯度采用按最大分量缩放的二范数归一化,因此有限梯度的平方
11 * 即使超出 `double` 范围,只要单位方向可表示仍能返回结果。
12 * @param surf 隐式曲面
13 * @param point 曲面上的点(变量名到值的映射)
14 * @return 单位法向量分量
15 */
16
18 const SurfaceSymbolic& surf,
19 const std::vector<std::shared_ptr<SymbolicExpr>>& point,
21);
22
24 const SurfaceSymbolic& surf,
25 const std::vector<std::shared_ptr<SymbolicExpr>>& point
26);
27
28/**
29 * @brief 计算曲面在某点的切平面。
30 *
31 * 奇异点判断直接检查有限梯度分量,不构造可能溢出的平方和。有限数值
32 * 梯度与切点的点积存在中间溢出风险时,等比例缩放平面系数后计算常数。
33 * @param surf 隐式曲面
34 * @param point 切点
35 * @return 切平面(法向量与 ∇F(point) 同向)
36 */
37
39 const SurfaceSymbolic& surf,
40 const std::vector<std::shared_ptr<SymbolicExpr>>& point,
42);
43
45 const SurfaceSymbolic& surf,
46 const std::vector<std::shared_ptr<SymbolicExpr>>& point
47);
48
49}
#define LMCAS_API
const std::string const LimitExprPtr & point
const std::vector< Polynomial< BigInt > > const BigInt ComputationContext & context
Result< PlaneSymbolic > PlaneSymbolicResult
VectorExprListResult surface_normal_checked(const SurfaceSymbolic &surf, const std::vector< std::shared_ptr< SymbolicExpr > > &point, ComputationContext &context)
PlaneSymbolicResult tangent_plane_checked(const SurfaceSymbolic &surf, const std::vector< std::shared_ptr< SymbolicExpr > > &point, ComputationContext &context)
Result< std::vector< std::shared_ptr< SymbolicExpr > > > VectorExprListResult