当前位置: 首页 > news >正文

Win11+VS2022+CGAL5.6配置

1. CGAL库简介

CGAL(Computational Geometry Algorithms Library)是一个开源的计算几何算法库,主要用于处理几何问题和相关算法的实现。它提供了丰富的几何数据结构和高效算法,覆盖点、线、多边形、曲面等基本几何对象的表示与操作,以及凸包、三角剖分、网格生成、路径规划等经典几何算法。该库以C++为核心实现,同时支持Python、Java等语言扩展,能够在Windows、Linux、macOS等多平台运行。其应用领域广泛,涉及计算机图形学、地理信息系统、机器人学、计算机辅助设计等多个行业,尤其在需要高精度几何计算和复杂算法的场景中表现突出。CGAL遵循GPL和LGPL开源协议,开发者可以自由使用和修改代码,但由于其涉及较高阶的几何理论,学习和应用时可能需要一定的专业知识储备。

2. 下载CGAL库

在GitHub下载以下两个文件https://github.com/CGAL/cgal/releases

  • 下载:CGAL-5.6-win64-auxiliary-libraries-gmp-mpfr.zip、cgal-5.6.zip

将CGAL-5.6.zip解压到D:\CGAL-5.6 文件夹下,将GMP and MPFR libraries解压后的auxiliary文件夹复制到D:\CGAL-5.6\CGAL-5.6\auxiliary 文件夹中。

3. 安装Boost

Boost下载地址:https://sourceforge.net/projects/boost/files/boost-binaries/

VS2022下载这个:boost_1_82_0-msvc-14.3-64.exe

下载完安装到目录:D:\cgal-5.6\boost_1_82_0

4. 设置系统环境变量

变量名变量值
BOOST_INCLUDEDIRD:\cgal-5.6\boost_1_82_0
BOOST_LIBRARYDIRD:\cgal-5.6\boost_1_82_0\lib64-msvc-14.3
CGAL_DIRD:\cgal-5.6\cgal-5.6

系统环境变量PATH:增加D:\cgal-5.6\boost_1_82_0\lib64-msvc-14.3

5. 在 VS2022 中配置项目以使用 CGAL

包含目录:在项目属性页(右键点击项目 -> 属性)中,选择 “配置属性” -> “C/C++” -> “常规” -> “附加包含目录”,添加以下目录:

  • D:\cgal-5.6\cgal-5.6\auxiliary\gmp\include
  • D:\cgal-5.6\CGAL-5.6\include
  • D:\cgal-5.6\boost_1_82_0

库目录:在 “配置属性” -> “链接器” -> “常规” -> “附加库目录” 中,添加 CGAL 库和 Boost 库的目录,例如:

  • D:\cgal-5.6\cgal-5.6\auxiliary\gmp\lib
  • D:\cgal-5.6\boost_1_82_0\lib64-msvc-14.3

附加依赖项:在 “配置属性” -> “链接器” -> “输入” -> “附加依赖项” 中,添加:

  • libgmp-10.lib
  • libmpfr-4.lib

6. 测试配置

在 VS2022 中创建一个新的 C++ 控制台项目,编写以下简单的 CGAL 代码进行测试:

#include <iostream>
#include <CGAL/Simple_cartesian.h>

typedef CGAL::Simple_cartesian<double> Kernel;
typedef Kernel::Point_2 Point_2;
typedef Kernel::Segment_2 Segment_2;

int main()
{
    Point_2 p(1, 1), q(10, 10);

    std::cout << "p = " << p << std::endl;
    std::cout << "q = " << q.x() << " " << q.y() << std::endl;

    std::cout << "sqdist(p,q) = "
        << CGAL::squared_distance(p, q) << std::endl;

    Segment_2 s(p, q);
    Point_2 m(5, 9);

    std::cout << "m = " << m << std::endl;
    std::cout << "sqdist(Segment_2(p,q), m) = "
        << CGAL::squared_distance(s, m) << std::endl;

    std::cout << "p, q, and m ";
    switch (CGAL::orientation(p, q, m)) {
    case CGAL::COLLINEAR:
        std::cout << "are collinear\n";
        break;
    case CGAL::LEFT_TURN:
        std::cout << "make a left turn\n";
        break;
    case CGAL::RIGHT_TURN:
        std::cout << "make a right turn\n";
        break;
    }

    std::cout << " midpoint(p,q) = " << CGAL::midpoint(p, q) << std::endl;
    return 0;
}

相关文章:

  • 自然语言处理NLP-文本预处理
  • nodejs-原型污染链
  • 4.Matplotlib:基础绘图
  • QT自运行程序
  • 在 VMware Workstation 17 中安装的 Ubuntu 虚拟机无法使用桥接模式
  • 【FDTD Solutions仿真入门及应用】
  • 【高项】信息系统项目管理师(十二)项目干系人管理【3分】
  • 《云原生安全攻防》-- K8s容器安全:权限最小化与SecurityContext
  • 洪水灌溉算法 + 总结
  • shelljs:理解ShellJS / 安装引入 / 常见方法 / 优势 / 应用场景
  • JVM 为什么不使用引用计数算法?——深入解析 GC 策略
  • 无人机无刷电机工作原理与技术要点
  • C语言中的指针高级运用
  • 5种生成模型(VAE、GAN、AR、Flow 和 Diffusion)的对比梳理 + 易懂讲解 + 代码实现
  • 2025-03-26 学习记录--C/C++-PTA 6-3 求链式表的表长
  • mysql语句 聚合+分组+内外链接
  • element与elementplus入门
  • 什么是 Promise?
  • Unity 管线简单讲解
  • 【谷粒商城踩坑记】第五坑 拖拽组件三级菜单拖不了问题
  • 受贿3501万余元,中石油原董事长王宜林一审被判13年
  • 这个“超强致癌细菌”,宝宝感染率高达40%,预防却很简单
  • 央行等印发《关于金融支持广州南沙深化面向世界的粤港澳全面合作的意见》
  • 《广州大典研究》集刊发展座谈会:“广州学”的传承与创新
  • 中美日内瓦经贸会谈联合声明
  • 马上评丨为护士减负,不妨破除论文“硬指标”