1. 程式人生 > >迫不及待推薦一個C++計算幾何庫

迫不及待推薦一個C++計算幾何庫

怎麼發現的

有事沒事就喜歡找一些感興趣的問題,然後循著問題中的答案或相關的引用到處漫遊,點連結或者偶爾放狗搜一下,然後就找到這個地方了:

謹慎使用: 這個庫應該是不錯的;但是感覺缺乏Eigen那樣嚴格的程式碼的peer review機制和大量而有效的測試; 加上對作者程式設計的風格的不瞭解, 感覺在使用中碰到問題的可能性會比較大.

簡單介紹

這個庫自己的主頁和名稱:

主頁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.

相關推薦

迫不及待推薦一個C++計算幾何

怎麼發現的 有事沒事就喜歡找一些感興趣的問題,然後循著問題中的答案或相關的引用到處漫遊,點連結或者偶爾放狗搜一下,然後就找到這個地方了: 謹慎使用: 這個庫應該是不錯的;但是感覺缺乏Eigen那樣嚴格的程式碼的peer review機制和大量而有效的測試

Codeforces Round #488 by NEAR (Div. 2) A模擬 B貪心,排序C計算幾何D討論思維

A Code: #include <bits/stdc++.h> #define LL long long using namespace std; const int AX = 1e2

向大家推薦一個C/C++通用Makefile

本文推薦了一個用於對 C/C++ 程式進行編譯和連線以產生可執行程式的通用 Makefile。 在使用 Makefile 之前,只需對它進行一些簡單的設定即可;而且一經設定,即使以後對源程式檔案有所增減一般也不再需要改動 Makefile。因此,即便是一個沒有學習過 Makefile 書寫規則的人,也可以

mlpack: 一個C++機器學習

簡介 mlpack是一個C++機器學習庫,側重於可擴充套件性、速度和易用性。它的目的是通過一個簡單的、前後一致的API讓新使用

Codeforces Round #558 (Div. 2)C(計算幾何,排列組合,模擬)

urn 計算 ont out turn long long using truct c++ #include<bits/stdc++.h>using namespace std;typedef struct{ double k,b;}node;node k[10

極力推薦一個簡單好用的C++JSON

  極力推薦一個簡單好用的C++JSON庫CJsonObject,讓使用json如使用C++原生的結構體那般方便,隨心所欲。CJsonObject是個優秀的C++JSON庫,也許會是你見過的最為簡單易用的C++json庫。CJsonObject的開源地址是https://github.com/Bwar/CJs

值得推薦C/C++框架和

its ++ sqli 解析生成 得到 types dns java 定時 Webbench是一個在linux下使用的非常簡單的網站壓測工具。它使用fork()模擬多個客戶端同時訪問我們設定的URL,測試網站在壓力下工作的性能,最多可以模擬3萬個並發連接去測試網站的負載

推薦一個好的數據工具Embarcadero DBArtisan

san sql 數據 需要 其他 方法 bsp 功能 輸出參數 最近的項目中用到了DB2數據庫,由於DB2數據庫客戶端在操作操作和控制方面不是很方便,如存儲過程的編寫。後來我們在數據庫的操作都轉在DBArtisan上了,最新版好像是8.12。 下面介紹一下使用

值得推薦C/C++開源框架和

跨語言 return .net npr 粘貼 python3.x xcod nasm pop 值得推薦的C/C++開源框架和庫 轉自:http://www.cnblogs.com/lidabo/p/5514155.html - 1. Webbench Webb

(轉載)值得推薦C/C++框架和 (真的很強大)

libxml 滿足 ml2 代碼量 evo overview turn method 集合 原文地址 http://blog.csdn.net/xiaoxiaoyeyaya/article/details/42541419 值得學習的C語言開源項目 - 1. Webbe

關於怎麽在VS2017中建立一個C/C++函數

and 函數 動態鏈接 mic view microsoft 自己 uil lin 想起來自己在大一暑假時做過飛機大戰的小遊戲,於是選擇在VS中創建一個自己的動態鏈接庫(C++),也是為了將加強自己對於數據結構的鞏固。 因為自己也是第一次接觸,於是百度來

2017ACM/ICPC亞洲區沈陽站 C Hdu-6219 Empty Convex Polygons 計算幾何 最大空凸包

sort get 沈陽 for mes c++ 幾何 targe oid 題面 題意:給你一堆點,求一個最大面積的空凸包,裏面沒有點. 題解:紅書板子,照抄完事,因為題目給的都是整點,所以最後答案一定是.5或者.0結尾,不用對答案多做處理 1 #inc

推薦一個markdown格式轉html格式的開源JavaScript

ron 輸入框 com world 字符 scrip ogr gem load 這個markdown格式轉html格式的開源JavaScript庫在github上的地址: https://github.com/millerblack/markdown-js 從markdow

牛客第二場 C.message(計算幾何+二分)

題目傳送:https://www.nowcoder.com/acm/contest/140/C 題意:有n個雲層,每個雲層可以表示為y=ax+b。每個飛機的航線可以表示為時間x時,座標為(x,cx+d)。問飛機旅程與最後一個雲層相交的x座標。不存在 分析: 可以確定兩直線聯立後解得交點x=(b-d)/(

kuangbin基礎計算幾何C - Segments (判斷直線和線段相交)

題目大意:給出n條線段兩個端點的座標,問所有線段投影到一條直線上,如果這些所有投影至少相交於一點就輸出Yes!,否則輸出No!。 解題思路:如果有存在這樣的直線,過投影相交區域作直線的垂線,該垂線必定與每條線段相交,問題轉化為問是否存在一條線和所有線段相交。 顯然所求線段若存在,那麼一定可以

幾個開源幾何計算數學

幾個開源幾何計算數學庫 簡單介紹幾個計算幾何的資源 a) Geos Geos的全稱就是Geometry Engine Open Source,參考網站就是:http://geos.refractions.net,從名稱就可以看出,Geos就是判斷幾何體的過程。 Geos是用C++語言

值得推薦C/C++框架和 (真的很強大) (轉)

  2017年02月11日 21:28:13 typeofGeek 閱讀數:2445 轉自http://blog.csdn.net/xiaoxiaoyeyaya/article/details/42541419 值得學習的C語言開源專案- 1. Webben

關於 C#呼叫一個C/C++dll執行時實現多個應用(靜態變數區分) 的解決方法

需求         VS編寫了純C(windows)通訊庫,需要多例項(靜態變數標誌一個例項,達到互相靜態變數不干涉)。   當前問題         dll中使用了全域性static的標

POJ2318 Toys(計算幾何C++, 叉積判斷線段與點的位置關係,二分法)

目錄 題目描述: Toy Input 演算法實現 優化 具體程式: 題目描述: 出自ACM Toy Description Calculate the number of toys that land in each bin of a par

C++矩陣運算推薦

Armadillo:C++下的Matlab替代品 Eigen3:強大且只需標頭檔案 OpenCV:方便的計算機視覺計算庫 ViennaCL:並行矩陣計算 PETSc:大規模並行科學計算 其他的矩陣計算庫和資料 最近在幾個地方都看到有人問C++下用什麼矩陣運算庫