简介

cgal 其实说白了就是一个封装好的图形学计算库。因为有很多函数我们经常用到为什么不把他们封装好呢?

https://www.cgal.org/ 官网

https://blog.csdn.net/a15005784320/article/details/101346916 比较好的中文教程页面

安装

安装windows下可执行文件



安装这两个好了

测试

编写cmakelists.txt

cmake_minimum_required(VERSION 3.1.0)
project(cgalc)
SET(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "D:/code/1TopTopic/boost_1_74_0/boost_1_74_0")
SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "D:/code/1TopTopic/boost_1_74_0/boost_1_74_0/stage/lib")
find_package(CGAL REQUIRED)
include(${CGAL_USE_FILE}) add_executable(${PROJECT_NAME} "main.cpp") target_link_libraries(${PROJECT_NAME} ${CGAL_LIBS})

SET(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "D:/code/1TopTopic/boost_1_74_0/boost_1_74_0")

SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "D:/code/1TopTopic/boost_1_74_0/boost_1_74_0/stage/lib") 这两句是自己加的如果boost没有安装的默认的位置那么就要明确指出来

#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), m(5, 9);
Segment_2 s(p, q); std::cout << "p position:" << p << std::endl;
std::cout << "q position:" << q.x() << " " << q.y() << std::endl;
std::cout << "m position:" << m << std::endl; std::cout << "---------cal Euclid ^2 ----------- " << std::endl;
std::cout << "point distance(p,q) = "
<< CGAL::squared_distance(p, q) << std::endl; std::cout << "---------cal Euclid ^2----------- " << std::endl;
std::cout << "(line point(p,q), m) = "
<< CGAL::squared_distance(s, m) << std::endl; std::cout << "---------check the relationship of the point and the line----------- " << std::endl;
std::cout << "p, q, m ";
switch (CGAL::orientation(p, q, m)) {
case CGAL::COLLINEAR:
std::cout << "point in the line\n";
break;
case CGAL::LEFT_TURN:
std::cout << "point is the left of the line\n";
break;
case CGAL::RIGHT_TURN:
std::cout << "point is the right of the line\n";
break;
} std::cout << "---------cal midpoint----------- " << std::endl;
std::cout << " midpoint(p,q) = " << CGAL::midpoint(p, q) << std::endl;
return 0;
}

cgal 的初步学习的更多相关文章

  1. json2.js的初步学习与了解

    json2.js的初步学习与了解,想要学习json的朋友可以参考下. json2.js的初步学习与了解 1.)该js的下载地址是:http://www.json.org/json2.js 2.)在页面 ...

  2. 老周的ABP框架系列教程 -》 一、框架理论初步学习

    老周的ABP框架系列教程 -- 一.框架理论初步学习   1. ABP框架的来源与作用简介 1.1  简介 1.1.1       ABP框架全称为"ASP.NET Boilerplate ...

  3. 初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助

    初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助,如果有bug或者更好的优化方案,也请批评与指正,谢谢,代码如下: var fs = require('f ...

  4. EF Codefirst 初步学习(二)—— 程序管理命令 更新数据库

    前提:搭建成功codefirst相关代码,参见EF Codefirst  初步学习(一)--设置codefirst开发模式 具体需要注意点如下: 1.确保实体类库程序生成成功 2.确保实体表类库不缺少 ...

  5. 初步学习python

    自计算机诞生以来,也伴随着计算机语言的诞生,现在,全世界的编程语言有600多种,但流行的编程语言也就20多种. Java和C一直占据着前两名.但是近年来伴随着人工智能的发展,Python发展迅猛,以其 ...

  6. Git的初步学习

    前言 感谢! 承蒙关照~ Git的初步学习 为什么要用Git和Github呢?它们的出现是为了用于提交项目和存储项目的,是一种很方便的项目管理软件和网址地址. 接下来看看,一家公司的基本流程图: 集中 ...

  7. 语法分析器初步学习——LISP语法分析

    语法分析器初步学习——LISP语法分析 本文参考自vczh的<如何手写语法分析器>. LISP的表达式是按照前缀的形式写的,比如(1+2)*(3+4)在LISP中会写成(*(+ 1 2)( ...

  8. 状态保持以及AJAX的初步学习

    嘿嘿,今天学习的有点迷茫哦,主要学习把验证码使用在登录页面时间的一些逻辑,学习这个时间并没有那么的迷惑哦,可是自己写程序时间倒是有点反应迟钝,不过还好总是在最后搞清楚啦,另外就是一步一步的学习是接近项 ...

  9. LinQ的初步学习与总结

    嘿嘿,说起来ORM和LinQ,就感觉离我好遥远的,在学校是没有学习的,所以总感觉学习了LinQ就是大神,现在嘛,终于也体会一点,感觉LinQ只是初步学习,没有太难,当然以后使用在项目中就没有这样的简单 ...

  10. Android NDK开发及OpenCV初步学习笔记

    https://www.jianshu.com/p/c29bb20908da Android NDK开发及OpenCV初步学习笔记 Super_圣代 关注 2017.08.19 00:55* 字数 6 ...

随机推荐

  1. NetCAT:来自网络的实用缓存攻击

    不断增加的外围设备正在增加现代处理器中内存管理子系统的压力,例如:DRAM的可用吞吐量已经不能满足现代网卡的传输速率.为了达到承诺的传输性能,Intel处理器使IO操作直接在末级缓存(LLC)上进行, ...

  2. OneNote Embedded 文件滥用检测

    本文分享自天翼云开发者社区<OneNote Embedded 文件滥用检测>,作者:Icecream 攻击技术 在这些网络钓鱼活动中被滥用的OneNote功能是在图片后面隐藏嵌入式文件,诱 ...

  3. 代码随想录第十天 | Leecode 232. 用栈实现队列、Leecode 225. 用队列实现栈、 Leecode 20. 有效的括号、Leecode 1047. 删除字符串中的所有相邻重复项

    Leecode 232. 用栈实现队列 题目链接:https://leetcode.cn/problems/implement-queue-using-stacks/submissions/ 题目描述 ...

  4. <HarmonyOS第一课10>ArkUI进阶#鸿蒙课程##鸿蒙生态#

    课程介绍 <HarmonyOS第一课:ArkUI进阶>是专为HarmonyOS开发者设计的课程,旨在提升开发者在ArkUI框架中的布局技能.课程将重点讲解如何进行布局性能优化,包括精简节点 ...

  5. 实现C++智能指针

    在对象切片一文中,提到可使用充当智能指针的类shape_wrapper,可以简化资源的管理,从根本上消除资源(包括内存)泄漏的可能性,本节来看下如何将shape_wrapper改造成一个完整的智能指针 ...

  6. 通过tushare获取k线数据

    tushare中get_k_date接口主要目的是获取k线数据,该接口融合了get_hist_data和get_h_data两个接口的功能,即能方便获取日周月的低频数据,也可以获取5.15.30和60 ...

  7. VMware NSX Manager SSL证书更新

    安装 NSX 后,管理器节点和集群具有自签名证书.证书有效期为825天,到期后需要进行证书重新更新.如图所示,本环境中此次将有三个类型的证书即将到期需要替换:1.NSX 联合身份验证 PI(Local ...

  8. HTTP请求使用http、socks代理demo,包含有认证和无认证

    package cn.daenx.myadmin.email.utils; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpU ...

  9. 宝塔面板部署java springboot项目

    前言 1.此文章用的是腾讯云的云服务器,2H4G,centos7.6,宝塔面板7.9.0 2.安装好宝塔面板,这一过程就不说了,懂得都懂 3.以下准备工作仅为MyAuth需要,如果您的springbo ...

  10. ​微软 AI Agent三剑客:AutoGen、Semantic Kernel与MEAI的协同演进

    引言 微软正在积极构建其人工智能(AI)开发者生态系统,旨在为开发者提供从实验研究到生产部署的全方位支持.在这一宏大蓝图中,AutoGen.Semantic Kernel (SK) 和 Microso ...