cgal 线面相交,线线相交
简介
快速用库的方式得到交点
参考链接
https://blog.csdn.net/OOFFrankDura/article/details/82430434
code
//山东大学 计算机基地Frankdura
//2018.9.4
#include <CGAL/Exact_predicates_exact_constructions_kernel.h>
#include <CGAL/intersections.h>
typedef CGAL::Exact_predicates_exact_constructions_kernel K;
typedef K::Point_3 Point_3;
typedef K::Segment_3 Segment_3;
typedef K::Plane_3 Plane_3;
typedef K::Intersect_3 Intersect_3;
int main()
{
Segment_3 seg(Point_3(0,0,0), Point_3(2,2,0));
Segment_3 lin(Point_3(1,2,0), Point_3(1,0,0));
CGAL::cpp11::result_of<Intersect_3(Segment_3, Segment_3)>::type
result = intersection(seg, lin);
if (result) {
if (const Segment_3* s = boost::get<Segment_3>(&*result)) {
std::cout << *s << std::endl;
} else {
const Point_3* p = boost::get<Point_3 >(&*result);
std::cout << (*p) << std::endl;
}
}
return 0;
}
#include <CGAL/Exact_predicates_exact_constructions_kernel.h>
#include <CGAL/intersections.h>
typedef CGAL::Exact_predicates_exact_constructions_kernel K;
typedef K::Point_3 Point_3;
typedef K::Segment_3 Segment_3;
typedef K::Plane_3 Plane_3;
typedef K::Intersect_3 Intersect_3;
int main()
{
Segment_3 seg(Point_3(0,0,0), Point_3(4,4,4));
Plane_3 lin (Point_3(1,0,0),Point_3(0,1,0),Point_3(0,0,1));
CGAL::cpp11::result_of<Intersect_3(Segment_3, Segment_3)>::type
result = intersection(seg, lin);
if (result) {
if (const Segment_3* s = boost::get<Segment_3>(&*result)) {
std::cout << *s << std::endl;
} else {
const Point_3* p = boost::get<Point_3 >(&*result);
std::cout << (*p) << std::endl;
}
}
return 0;
}
附赠Makefile
LOCAL_LIBRARY += -L/home/ling/lee/lib/cgal/dyna
LOCAL_LDFLAGS += -lm -lpthread -ldl -lCGAL_Core -lCGAL_ImageIO -lCGAL -lgmp -lmpfr
LOCAL_CFLAGS += -I/home/ling/lee/include
CC := g++ -g -std=c++17
TARGETS1 = genCube2
SRCS1 = main2.cc
OBJS1 = $(patsubst %.cc, %.o, $(SRCS1))
CFLAGS += $(LOCAL_CFLAGS)
LDFLAGS += $(LOCAL_LIBRARY) $(LOCAL_LDFLAGS)
$(info $(OBJS))
$(info $(TARGETS))
all: $(TARGETS1)
$(TARGETS1):$(OBJS1)
$(CC) -o $@ $^ $(LDFLAGS) $(CFLAGS)
$(OBJS1): %.o:%.cc
$(CC) -c $< -o $@ $(CFLAGS)
clean :
@rm -rf $(TARGETS1) $(OBJS1)
#.SUFFIXES:
.PHONY : all clean
cgal 线面相交,线线相交的更多相关文章
- Codeforces Round #524 (Div. 2) C. Masha and two friends 几何:判断矩形是否相交以及相交矩形坐标
题意 :给出一个初始的黑白相间的棋盘 有两个人 第一个人先用白色染一块矩形区域 第二个人再用黑色染一块矩形区域 问最后黑白格子各有多少个 思路:这题的关键在于求相交的矩形区间 给出一个矩形的左下和 ...
- 矢量图面层和线层相交得到相交后的线层文件(gis相交)
目的:将arcgis里的面层和线层相交(重叠)部分的线单独生成一个shp文件,用于道路路网密度计算等. 注意:进行相交运算后生成的是线要素文件,相当于把面线相交部分的线单独拿了出来. 操作例子:将图示 ...
- hdu 5120 Intersection (圆环面积相交->圆面积相交)
Problem Description Matt is a big fan of logo design. Recently he falls in love with logo made up by ...
- [算法]检测空间三角形相交算法(Devillers & Guigue算法)
#pragma once //GYDevillersTriangle.h /* 快速检测空间三角形相交算法的代码实现(Devillers & Guigue算法) 博客原地址:http://bl ...
- poj 1556 (Dijkstra + Geometry 线段相交)
链接:http://poj.org/problem?id=1556 The Doors Time Limit: 1000MS Memory Limit: 10000K Total Submissi ...
- poj 1066 线段相交
链接:http://poj.org/problem?id=1066 Treasure Hunt Time Limit: 1000MS Memory Limit: 10000K Total Subm ...
- POJ 3304 Segments (直线和线段相交判断)
Segments Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7739 Accepted: 2316 Descript ...
- POJ1556 The Doors [线段相交 DP]
The Doors Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 8334 Accepted: 3218 Descrip ...
- POJ 3304 Segments (叉乘判断线段相交)
<题目链接> 题目大意: 给出一些线段,判断是存在直线,使得该直线能够经过所有的线段.. 解题思路: 如果有存在这样的直线,过投影相交区域作直线的垂线,该垂线必定与每条线段相交,问题转化为 ...
- POJ 2546 Circular Area(两个圆相交的面积)
题目链接 题意 : 给你两个圆的半径和圆心,让你求两个圆相交的面积大小. 思路 : 分三种情况讨论 假设半径小的圆为c1,半径大的圆为c2. c1的半径r1,圆心坐标(x1,y1).c2的半径r2,圆 ...
随机推荐
- 在 Go 中,如何实现一个带过期时间的字典映射
有些时候,应用系统用不上 redis,我们也可以用锁和 goroutine 实现一个带有过期时间的线程安全的字典. 这种字典的应用场景,比较倾向于数据规模较小,没有分布式要求. 下面是实现: 1.定义 ...
- 通过引用实现php无限极分类
/** * 递归加引用实现无限极分类 * @param $items * @return array */ public function getTree2($items) { $array = ...
- Java编程--设计模式之装饰者模式
目录 装饰者模式 简介 做馒头实例 生产汽车实例 常见使用 装饰者模式 简介 装饰者模式的主要功能就是对一个类的功能进行扩充! 对于需要对某个类扩充,但是该类是final类,不能被继承,这是时候可以用 ...
- 基于Kubernetes可扩展的Selenium 并行自动化测试部署及搭建(2)——Win10环境下Kubernetes(k8s)部署
继续上一篇,本篇进行K8S环境部署. K8s部署: 1. 访问k8s-for-docker-desktop 的github地址: https://github.com/AliyunContainer ...
- html_py
Sock.py import socket def handle_request(client): buf=client.recv(1024) client.send(bytes(&q ...
- 网络编程:阻塞I/O和线程模型
线程 进程模型在处理用户请求的过程中,进程切换上下文的代价比较高,而,一种轻量级的模型可以处理多用户连接请求,那就是线程模型. 线程(thread)是运行在进程中的一个"逻辑流", ...
- C++ ADL 与 模板
什么是ADL ADL(Argument Dependent Lookup),参数依赖查找,明确的意思是依赖参数的函数查找,即对于函数调用,不仅会依照常规的名称查找规则,还会在函数参数所在的命名空间内查 ...
- 1、Java相关工具下载及准备
相关准备 oracle jdk8:oracle官网. IDEA:官网 Maven:官网,下第二个 Redis:windows, MySQL:官网归档, RabbitMQ:csdn Java环境配置 变 ...
- 【语义分割专栏】:FCN实战篇(附上完整可运行的代码pytorch)
目录 前言 FCN全流程代码 模型搭建(model) 数据处理(dataloader) 评价指标(metric) 训练流程(train) 模型测试(test) 效果图 结语 前言 FCN原理篇讲解:[ ...
- WebSocket 与 SSE 对比:即时通信的选择(一)
在现代 Web 开发中,实时通信需求越来越多,比如聊天应用.实时通知.直播弹幕.股票行情推送等.实现这些需求的常见技术有 WebSocket 和 SSE(Server-Sent Events),但它们 ...