LMCAS
Lamina Computer Algebra System
Toggle main menu visibility
载入中...
搜索中...
未找到
symbolic_geometry_quadric.cpp
浏览该文件的文档.
1
#include "
symbolic_geometry_quadric.hpp
"
2
#include "
internal/symbolic_geometry_support.hpp
"
3
#include "
internal/symbolic_quadric_classification.hpp
"
4
#include <stdexcept>
5
#include <utility>
6
7
namespace
LMCAS
{
8
using namespace
geometry_detail
;
9
10
VectorStringResult
classify_quadric_checked
(
11
const
SurfaceSymbolic
& surf,
12
ComputationContext
&
context
) {
13
const
std::string operation =
"classify_quadric"
;
14
try
{
15
auto
valid =
validate_surface_point
(
16
surf,
17
std::vector<std::shared_ptr<SymbolicExpr>>(
18
surf.
vars
.size(), SymbolicExpr::number(0)),
19
context
,
20
operation);
21
if
(!valid)
return
VectorStringResult::failure
(valid.error());
22
if
(surf.
vars
.size() != 3) {
23
return
VectorStringResult::failure
(
24
CasErrc::InvalidArgument
,
25
"quadric classification requires exactly three variables"
,
26
operation);
27
}
28
auto
step =
context
.consume_steps(12, operation);
29
if
(!step)
return
VectorStringResult::failure
(step.error());
30
return
detail::classify_quadric_impl
(surf,
context
, operation);
31
}
catch
(
const
std::bad_alloc&) {
32
return
VectorStringResult::failure
(
CasErrc::ResourceLimit
,
33
"vector geometry allocation failed"
,
34
operation);
35
}
catch
(
const
std::exception&
e
) {
36
return
VectorStringResult::failure
(
CasErrc::Inconclusive
,
37
e
.what(), operation);
38
}
39
}
40
41
VectorStringResult
classify_quadric_checked
(
const
SurfaceSymbolic
& surf) {
42
ComputationContext
context
;
43
return
classify_quadric_checked
(surf,
context
);
44
}
45
46
}
LMCAS::ComputationContext
定义
computation_context.hpp:99
LMCAS::Result< std::string >::failure
static Result failure(CasErrc code, std::string message, std::string operation={})
定义
result.hpp:52
LMCAS::detail::classify_quadric_impl
VectorStringResult classify_quadric_impl(const SurfaceSymbolic &surf, ComputationContext &context, const std::string &operation)
定义
symbolic_quadric_classification.cpp:532
LMCAS::geometry_detail
定义
symbolic_geometry_support.hpp:7
LMCAS::geometry_detail::validate_surface_point
Result< void > validate_surface_point(const SurfaceSymbolic &surf, const std::vector< std::shared_ptr< SymbolicExpr > > &point, ComputationContext &context, const std::string &operation)
定义
symbolic_geometry_support.cpp:50
LMCAS
定义
assumption.hpp:11
LMCAS::e
ExprResult e()
定义
expr_values.cpp:112
LMCAS::context
const std::vector< Polynomial< BigInt > > const BigInt ComputationContext & context
定义
exact_factorization.hpp:65
LMCAS::CasErrc::Inconclusive
@ Inconclusive
定义
result.hpp:24
LMCAS::CasErrc::InvalidArgument
@ InvalidArgument
定义
result.hpp:13
LMCAS::CasErrc::ResourceLimit
@ ResourceLimit
定义
result.hpp:25
LMCAS::classify_quadric_checked
VectorStringResult classify_quadric_checked(const SurfaceSymbolic &surf, ComputationContext &context)
定义
symbolic_geometry_quadric.cpp:10
LMCAS::VectorStringResult
Result< std::string > VectorStringResult
定义
symbolic_geometry_vector.hpp:13
LMCAS::SurfaceSymbolic::vars
std::vector< std::string > vars
坐标变量名 {x,y,z}。
定义
symbolic_geometry_quadric.hpp:9
LMCAS::SurfaceSymbolic
隐式曲面 F(x,y,z) = 0。
定义
symbolic_geometry_quadric.hpp:7
symbolic_geometry_quadric.hpp
symbolic_geometry_support.hpp
symbolic_quadric_classification.hpp
src
symbolic_geometry_quadric.cpp
生成于
, 为 LMCAS使用
1.18.0