LMCAS
Lamina Computer Algebra System
载入中...
搜索中...
未找到
symbolic_geometry_quadric.cpp
浏览该文件的文档.
4#include <stdexcept>
5#include <utility>
6
7namespace LMCAS {
8using namespace geometry_detail;
9
11 const SurfaceSymbolic& surf,
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) {
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&) {
33 "vector geometry allocation failed",
34 operation);
35 } catch (const std::exception& e) {
37 e.what(), operation);
38 }
39}
40
45
46}
static Result failure(CasErrc code, std::string message, std::string operation={})
VectorStringResult classify_quadric_impl(const SurfaceSymbolic &surf, ComputationContext &context, const std::string &operation)
Result< void > validate_surface_point(const SurfaceSymbolic &surf, const std::vector< std::shared_ptr< SymbolicExpr > > &point, ComputationContext &context, const std::string &operation)
ExprResult e()
const std::vector< Polynomial< BigInt > > const BigInt ComputationContext & context
VectorStringResult classify_quadric_checked(const SurfaceSymbolic &surf, ComputationContext &context)
Result< std::string > VectorStringResult
std::vector< std::string > vars
坐标变量名 {x,y,z}。