迫不及待推薦一個C++計算幾何庫
怎麼發現的
有事沒事就喜歡找一些感興趣的問題,然後循著問題中的答案或相關的引用到處漫遊,點連結或者偶爾放狗搜一下,然後就找到這個地方了:
謹慎使用: 這個庫應該是不錯的;但是感覺缺乏Eigen那樣嚴格的程式碼的peer review機制和大量而有效的測試; 加上對作者程式設計的風格的不瞭解, 感覺在使用中碰到問題的可能性會比較大.
簡單介紹
這個庫自己的主頁和名稱:
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
containsigl::cotmatrix()
). Most are tailored to operate on a generic triangle mesh stored in ann matrix of vertex positions×3V and anm×3 matrix of triangle indicesF .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++的
注意事項
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.
.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++下用什麼矩陣運算庫