You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CGAL中Extended_cartesian转Simple_cartesian的无损转换方法问询

从CGAL::Extended_cartesianCGAL::Gmpq无损转换到CGAL::Simple_cartesianCGAL::Gmpq

正向转换(Simple_cartesian → Extended_cartesian)的实现很直接,示例代码如下:

CGAL::Simple_cartesian<CGAL::Gmpq>::Point_3 p_s(1, 2, 3);
CGAL::Extended_cartesian<CGAL::Gmpq>::Point_3 p_e(p_s.x(), p_s.y(), p_s.z());

对于反向转换,已知CGAL::Extended_cartesian<CGAL::Gmpq>的坐标类型是CGAL::Nef_polynomial<CGAL::Gmpq>,且该多项式表示有限有理数(即零次常数多项式),可以通过提取多项式的常数项实现无损转换,完全避免转为double的精度损失问题,示例代码如下:

// 假设已有Extended_cartesian内核下的点p_e
CGAL::Simple_cartesian<CGAL::Gmpq>::Point_3 p_s(
    p_e.x().coefficient(0),
    p_e.y().coefficient(0),
    p_e.z().coefficient(0)
);

关键说明

  • Nef_polynomial<CGAL::Gmpq>表示有限有理数时,本质是零次多项式,仅包含常数项
  • 调用coefficient(0)可以直接获取对应的CGAL::Gmpq值,整个过程无精度损失,是完全无损的转换方式

内容的提问来源于stack exchange,提问作者user3677630

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 07:53:11