迫不及待推荐一个C++计算几何库

转载 2015年07月07日 13:54:53

怎么发现的

有事没事就喜欢找一些感兴趣的问题,然后循着问题中的答案或相关的引用到处漫游,点链接或者偶尔放狗搜一下,然后就找到这个地方了:

github上的位置

谨慎使用: 这个库应该是不错的;但是感觉缺乏Eigen那样严格的代码的peer review机制和大量而有效的测试; 加上对作者编程的风格的不了解, 感觉在使用中碰到问题的可能性会比较大.

一定要跨平台的话,感觉同一作者的同一计算几何库Matlab工具箱版本更实惠。

简单介绍

这个库自己的主页和名称:

libigl - A simple C++ geometry processing library

主页LOGO图片

libigl is a simple C++ geometry processing library. We have a wide functionality including construction of sparse discrete differential geometry operators and finite-elements matrices such as the cotangent Laplacian and diagonalized mass matrix, simple facet and edge-based topology data structures, mesh-viewing utilities for OpenGL and GLSL, and many core functions for matrix manipulation which make Eigen feel a lot more like MATLAB.

It is a header-only library. You do not need to compile anything to use, just include igl headers (e.g. #include "igl/cotmatrix.h") and run. Each header file contains a single function (e.g. igl/cotmatrix.h contains igl::cotmatrix()). Most are tailored to operate on a generic triangle mesh stored in an n×3 matrix of vertex positions V and an m×3 matrix of triangle indices F.

Optionally the library may also be pre-compiled into a statically linked library, for faster compile times with your projects. This only effects compile time (run-time performance and behavior is identical). If in doubt, use the header-only default mode: (i.e. just include the headers you want to use).

We use the Eigen library heavily in our code. Our group prototypes a lot in MATLAB, and we have a useful MATLAB to libigl+Eigen conversion table.

如何使用

Libigl is a header-only library. You do not need to build anything to install. Simply add libigl/include to your include path and include relevant headers. Here is a small “Hello, World” program:

#include <igl/cotmatrix.h>
#include <Eigen/Dense>
#include <Eigen/Sparse>
#include <iostream>
int main()
{
  Eigen::MatrixXd V(4,2);
  V<<0,0,
     1,0,
     1,1,
     0,1;
  Eigen::MatrixXi F(2,3);
  F<<0,1,2,
     0,2,3;
  Eigen::SparseMatrix<double> L;
  igl::cotmatrix(V,F,L);
  std::cout<<"Hello, mesh: "<<std::endl<<L*V<<std::endl;
  return 0;
}

If you save this in hello.cpp, then you could compile this with (assuming Eigen is installed in /usr/local/include/eigen3):

Running it would then produce:

Hello, mesh:
 0.5  0.5
-0.5  0.5
-0.5 -0.5
 0.5 -0.5

在visual C++里我只编译成果上面这段, 其它的代码都没搞定, 使用起来感觉比Eigen差; 估计作者大多还是在Linux,MacOS上用g++的

注意事项

  1. Dependencies are on a per-include basis and the majority of the functions in libigl depends only on the Eigen library. For more information see our tutorial.
    .

  2. Some of our functions will take advantage of OpenMP if available. However, it has come to our attention that Visual Studio + Eigen + OpenMP does NOT work properly. Since we use OpenMP only to improve performance, we recommend avoiding OpenMP on Windows or proceeding with caution.

计算几何与图形学有关的几种常用算法(一)

原文链接:http://blog.csdn.net/orbit/article/details/7082678 我的专业是计算机辅助设计(CAD),算是一半机械一半软件,《计算机图形...
  • puppet_master
  • puppet_master
  • 2015年11月04日 13:36
  • 1483

计算几何与图形学有关的几种常用算法

整理后转载。转载自:http://blog.csdn.net/orbit/article/details/7082678 向大神致敬!
  • Kiritow
  • Kiritow
  • 2016年07月10日 18:52
  • 2801

用C++语言写的计算几何例子

  • 2011年07月10日 14:05
  • 13KB
  • 下载

计算几何 C++模版

  • 2011年09月10日 09:36
  • 2KB
  • 下载

通用几何计算算法C++集合

  • 2011年07月04日 20:29
  • 13KB
  • 下载

创建一个几何类型类,其中有计算面积getArea()和周长getPerimeter()抽象方法,然后通过它派生出三角形类、圆形类、矩形类,并通过测试类进行测试

//先定义一个几何类型类,然后从中派生出三角形类,圆形类,矩形类,并进行测试; 1.interface Shape{ 2. public double getPerimeter(); 3. ...
  • dlh_sycamore
  • dlh_sycamore
  • 2017年04月03日 14:37
  • 941

计算几何----判断空间点是否在一个四面体(tetrahedron)内部

DESCRIPTION: 判断空间点 P(x, y, z)是否在一个四面体的内部? Let the tetrahedron have vertices V1 = (x1, y1, z...
  • u012653791
  • u012653791
  • 2013年12月20日 15:31
  • 1534

计算几何----判断点是否在一个矩形内

只需要判断该点是否在上下两条边和左右两条边之间就行,判断一个点是否在两条线段之间夹着,就转化成,判断一个点是否在某条线段的一边上,就可以利用叉乘的方向性,来判断夹角是否超过了180度 如下图:   ...
  • liangzhaoyang1
  • liangzhaoyang1
  • 2016年04月07日 23:42
  • 490

计算几何模板——平面最近点对(附C++源代码) - [转载经典]

转:http://anonympine.blogbus.com/logs/33968379.html 求平面最近点对的核心思想乃是二分,用递归实现。具体操作如下:      若点的个数很少(比如小...
  • zmlcool
  • zmlcool
  • 2011年08月28日 21:25
  • 2333

计算几何-求线段交点算法和代码(C++语言)

问题描述:已知两条线段P1P2和Q1Q2,判断P1P2和Q1Q2是否相交,若相交,求出交点。 两条线段的位置关系可以分为三类:有重合部分、无重合部分但有交点、无交点。 算法核心 算法的步骤...
  • tengchongwei
  • tengchongwei
  • 2017年06月08日 16:17
  • 951
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:迫不及待推荐一个C++计算几何库
举报原因:
原因补充:

(最多只允许输入30个字)