py_doc.cpp 43 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931
  1. const char *__doc_igl_principal_curvature = R"igl_Qu8mg5v7(// Compute the principal curvature directions and magnitude of the given triangle mesh
  2. // DerivedV derived from vertex positions matrix type: i.e. MatrixXd
  3. // DerivedF derived from face indices matrix type: i.e. MatrixXi
  4. // Inputs:
  5. // V eigen matrix #V by 3
  6. // F #F by 3 list of mesh faces (must be triangles)
  7. // radius controls the size of the neighbourhood used, 1 = average edge lenght
  8. //
  9. // Outputs:
  10. // PD1 #V by 3 maximal curvature direction for each vertex.
  11. // PD2 #V by 3 minimal curvature direction for each vertex.
  12. // PV1 #V by 1 maximal curvature value for each vertex.
  13. // PV2 #V by 1 minimal curvature value for each vertex.
  14. //
  15. // See also: average_onto_faces, average_onto_vertices
  16. //
  17. // This function has been developed by: Nikolas De Giorgis, Luigi Rocca and Enrico Puppo.
  18. // The algorithm is based on:
  19. // Efficient Multi-scale Curvature and Crease Estimation
  20. // Daniele Panozzo, Enrico Puppo, Luigi Rocca
  21. // GraVisMa, 2010)igl_Qu8mg5v7";
  22. const char *__doc_igl_local_basis = R"igl_Qu8mg5v7(// Compute a local orthogonal reference system for each triangle in the given mesh
  23. // Templates:
  24. // DerivedV derived from vertex positions matrix type: i.e. MatrixXd
  25. // DerivedF derived from face indices matrix type: i.e. MatrixXi
  26. // Inputs:
  27. // V eigen matrix #V by 3
  28. // F #F by 3 list of mesh faces (must be triangles)
  29. // Outputs:
  30. // B1 eigen matrix #F by 3, each vector is tangent to the triangle
  31. // B2 eigen matrix #F by 3, each vector is tangent to the triangle and perpendicular to B1
  32. // B3 eigen matrix #F by 3, normal of the triangle
  33. //
  34. // See also: adjacency_matrix)igl_Qu8mg5v7";
  35. const char *__doc_igl_signed_distance = R"igl_Qu8mg5v7(// Computes signed distance to a mesh
  36. //
  37. // Inputs:
  38. // P #P by 3 list of query point positions
  39. // V #V by 3 list of vertex positions
  40. // F #F by ss list of triangle indices, ss should be 3 unless sign_type ==
  41. // SIGNED_DISTANCE_TYPE_UNSIGNED
  42. // sign_type method for computing distance _sign_ S
  43. // Outputs:
  44. // S #P list of smallest signed distances
  45. // I #P list of facet indices corresponding to smallest distances
  46. // C #P by 3 list of closest points
  47. // N #P by 3 list of closest normals (only set if
  48. // sign_type=SIGNED_DISTANCE_TYPE_PSEUDONORMAL)
  49. //
  50. // Known bugs: This only computes distances to triangles. So unreferenced
  51. // vertices and degenerate triangles are ignored.)igl_Qu8mg5v7";
  52. const char *__doc_igl_signed_distance_pseudonormal = R"igl_Qu8mg5v7(// Computes signed distance to mesh
  53. //
  54. // Inputs:
  55. // tree AABB acceleration tree (see AABB.h)
  56. // F #F by 3 list of triangle indices
  57. // FN #F by 3 list of triangle normals
  58. // VN #V by 3 list of vertex normals (ANGLE WEIGHTING)
  59. // EN #E by 3 list of edge normals (UNIFORM WEIGHTING)
  60. // EMAP #F*3 mapping edges in F to E
  61. // q Query point
  62. // Returns signed distance to mesh
  63. //)igl_Qu8mg5v7";
  64. const char *__doc_igl_signed_distance_winding_number = R"igl_Qu8mg5v7(// Inputs:
  65. // tree AABB acceleration tree (see cgal/point_mesh_squared_distance.h)
  66. // hier Winding number evaluation hierarchy
  67. // q Query point
  68. // Returns signed distance to mesh)igl_Qu8mg5v7";
  69. const char *__doc_igl_cotmatrix = R"igl_Qu8mg5v7(// Constructs the cotangent stiffness matrix (discrete laplacian) for a given
  70. // mesh (V,F).
  71. //
  72. // Templates:
  73. // DerivedV derived type of eigen matrix for V (e.g. derived from
  74. // MatrixXd)
  75. // DerivedF derived type of eigen matrix for F (e.g. derived from
  76. // MatrixXi)
  77. // Scalar scalar type for eigen sparse matrix (e.g. double)
  78. // Inputs:
  79. // V #V by dim list of mesh vertex positions
  80. // F #F by simplex_size list of mesh faces (must be triangles)
  81. // Outputs:
  82. // L #V by #V cotangent matrix, each row i corresponding to V(i,:)
  83. //
  84. // See also: adjacency_matrix
  85. //
  86. // Note: This Laplacian uses the convention that diagonal entries are
  87. // **minus** the sum of off-diagonal entries. The diagonal entries are
  88. // therefore in general negative and the matrix is **negative** semi-definite
  89. // (immediately, -L is **positive** semi-definite)
  90. //
  91. // Known bugs: off by 1e-16 on regular grid. I think its a problem of
  92. // arithmetic order in cotmatrix_entries.h: C(i,e) = (arithmetic)/dblA/4)igl_Qu8mg5v7";
  93. const char *__doc_igl_floor = R"igl_Qu8mg5v7(// Floor a given matrix to nearest integers
  94. //
  95. // Inputs:
  96. // X m by n matrix of scalars
  97. // Outputs:
  98. // Y m by n matrix of floored integers)igl_Qu8mg5v7";
  99. const char *__doc_igl_slice = R"igl_Qu8mg5v7(// Act like the matlab X(row_indices,col_indices) operator, where
  100. // row_indices, col_indices are non-negative integer indices.
  101. //
  102. // Inputs:
  103. // X m by n matrix
  104. // R list of row indices
  105. // C list of column indices
  106. // Output:
  107. // Y #R by #C matrix
  108. //
  109. // See also: slice_mask)igl_Qu8mg5v7";
  110. const char *__doc_igl_per_face_normals = R"igl_Qu8mg5v7(// Compute face normals via vertex position list, face list
  111. // Inputs:
  112. // V #V by 3 eigen Matrix of mesh vertex 3D positions
  113. // F #F by 3 eigen Matrix of face (triangle) indices
  114. // Z 3 vector normal given to faces with degenerate normal.
  115. // Output:
  116. // N #F by 3 eigen Matrix of mesh face (triangle) 3D normals
  117. //
  118. // Example:
  119. // // Give degenerate faces (1/3,1/3,1/3)^0.5
  120. // per_face_normals(V,F,Vector3d(1,1,1).normalized(),N);)igl_Qu8mg5v7";
  121. const char *__doc_igl_per_face_normals_stable = R"igl_Qu8mg5v7(// Special version where order of face indices is guaranteed not to effect
  122. // output.)igl_Qu8mg5v7";
  123. const char *__doc_igl_quad_planarity = R"igl_Qu8mg5v7(// Compute planarity of the faces of a quad mesh
  124. // Inputs:
  125. // V #V by 3 eigen Matrix of mesh vertex 3D positions
  126. // F #F by 4 eigen Matrix of face (quad) indices
  127. // Output:
  128. // P #F by 1 eigen Matrix of mesh face (quad) planarities
  129. //)igl_Qu8mg5v7";
  130. const char *__doc_igl_readOFF = R"igl_Qu8mg5v7(// Read a mesh from an ascii obj file, filling in vertex positions, normals
  131. // and texture coordinates. Mesh may have faces of any number of degree
  132. //
  133. // Templates:
  134. // Scalar type for positions and vectors (will be read as double and cast
  135. // to Scalar)
  136. // Index type for indices (will be read as int and cast to Index)
  137. // Inputs:
  138. // str path to .obj file
  139. // Outputs:
  140. // V double matrix of vertex positions #V by 3
  141. // F #F list of face indices into vertex positions
  142. // TC double matrix of texture coordinats #TC by 2
  143. // FTC #F list of face indices into vertex texture coordinates
  144. // N double matrix of corner normals #N by 3
  145. // FN #F list of face indices into vertex normals
  146. // Returns true on success, false on errors)igl_Qu8mg5v7";
  147. const char *__doc_igl_per_vertex_normals = R"igl_Qu8mg5v7(// Compute vertex normals via vertex position list, face list
  148. // Inputs:
  149. // V #V by 3 eigen Matrix of mesh vertex 3D positions
  150. // F #F by 3 eigne Matrix of face (triangle) indices
  151. // weighting Weighting type
  152. // Output:
  153. // N #V by 3 eigen Matrix of mesh vertex 3D normals)igl_Qu8mg5v7";
  154. const char *__doc_igl_sortrows = R"igl_Qu8mg5v7(// Act like matlab's [Y,I] = sortrows(X)
  155. //
  156. // Templates:
  157. // DerivedX derived scalar type, e.g. MatrixXi or MatrixXd
  158. // DerivedI derived integer type, e.g. MatrixXi
  159. // Inputs:
  160. // X m by n matrix whose entries are to be sorted
  161. // ascending sort ascending (true, matlab default) or descending (false)
  162. // Outputs:
  163. // Y m by n matrix whose entries are sorted (**should not** be same
  164. // reference as X)
  165. // I m list of indices so that
  166. // Y = X(I,:);)igl_Qu8mg5v7";
  167. const char *__doc_igl_barycenter = R"igl_Qu8mg5v7(// Computes the barycenter of every simplex
  168. //
  169. // Inputs:
  170. // V #V x dim matrix of vertex coordinates
  171. // F #F x simplex_size matrix of indices of simplex corners into V
  172. // Output:
  173. // BC #F x dim matrix of 3d vertices
  174. //)igl_Qu8mg5v7";
  175. const char *__doc_igl_jet = R"igl_Qu8mg5v7(// JET like MATLAB's jet
  176. //
  177. // Inputs:
  178. // m number of colors
  179. // Outputs:
  180. // J m by list of RGB colors between 0 and 1
  181. //
  182. //#ifndef IGL_NO_EIGEN
  183. // void jet(const int m, Eigen::MatrixXd & J);
  184. //#endif
  185. // Wrapper for directly computing [r,g,b] values for a given factor f between
  186. // 0 and 1
  187. //
  188. // Inputs:
  189. // f factor determining color value as if 0 was min and 1 was max
  190. // Outputs:
  191. // r red value
  192. // g green value
  193. // b blue value)igl_Qu8mg5v7";
  194. const char *__doc_igl_cat = R"igl_Qu8mg5v7(// Perform concatenation of a two matrices along a single dimension
  195. // If dim == 1, then C = [A;B]. If dim == 2 then C = [A B]
  196. //
  197. // Template:
  198. // Scalar scalar data type for sparse matrices like double or int
  199. // Mat matrix type for all matrices (e.g. MatrixXd, SparseMatrix)
  200. // MatC matrix type for ouput matrix (e.g. MatrixXd) needs to support
  201. // resize
  202. // Inputs:
  203. // A first input matrix
  204. // B second input matrix
  205. // dim dimension along which to concatenate, 0 or 1
  206. // Outputs:
  207. // C output matrix
  208. // )igl_Qu8mg5v7";
  209. const char *__doc_igl_eigs = R"igl_Qu8mg5v7(See eigs for the documentation.)igl_Qu8mg5v7";
  210. const char *__doc_igl_per_corner_normals = R"igl_Qu8mg5v7(// Compute vertex normals via vertex position list, face list
  211. // Inputs:
  212. // V #V by 3 eigen Matrix of mesh vertex 3D positions
  213. // F #F by 3 eigne Matrix of face (triangle) indices
  214. // corner_threshold threshold in degrees on sharp angles
  215. // Output:
  216. // CN #F*3 by 3 eigen Matrix of mesh vertex 3D normals, where the normal
  217. // for corner F(i,j) is at CN(i*3+j,:) )igl_Qu8mg5v7";
  218. const char *__doc_igl_massmatrix = R"igl_Qu8mg5v7(// Constructs the mass (area) matrix for a given mesh (V,F).
  219. //
  220. // Templates:
  221. // DerivedV derived type of eigen matrix for V (e.g. derived from
  222. // MatrixXd)
  223. // DerivedF derived type of eigen matrix for F (e.g. derived from
  224. // MatrixXi)
  225. // Scalar scalar type for eigen sparse matrix (e.g. double)
  226. // Inputs:
  227. // V #V by dim list of mesh vertex positions
  228. // F #F by simplex_size list of mesh faces (must be triangles)
  229. // type one of the following ints:
  230. // MASSMATRIX_TYPE_BARYCENTRIC barycentric
  231. // MASSMATRIX_TYPE_VORONOI voronoi-hybrid {default}
  232. // MASSMATRIX_TYPE_FULL full {not implemented}
  233. // Outputs:
  234. // M #V by #V mass matrix
  235. //
  236. // See also: adjacency_matrix
  237. //)igl_Qu8mg5v7";
  238. const char *__doc_igl_unproject_onto_mesh = R"igl_Qu8mg5v7(// Unproject a screen location (using current opengl viewport, projection, and
  239. // model view) to a 3D position _onto_ a given mesh, if the ray through the
  240. // given screen location (x,y) _hits_ the mesh.
  241. //
  242. // Inputs:
  243. // pos screen space coordinates
  244. // model model matrix
  245. // proj projection matrix
  246. // viewport vieweport vector
  247. // V #V by 3 list of mesh vertex positions
  248. // F #F by 3 list of mesh triangle indices into V
  249. // Outputs:
  250. // fid id of the first face hit
  251. // bc barycentric coordinates of hit
  252. // Returns true if there's a hit)igl_Qu8mg5v7";
  253. const char *__doc_igl_colon = R"igl_Qu8mg5v7(// Colon operator like matlab's colon operator. Enumerats values between low
  254. // and hi with step step.
  255. // Templates:
  256. // L should be a eigen matrix primitive type like int or double
  257. // S should be a eigen matrix primitive type like int or double
  258. // H should be a eigen matrix primitive type like int or double
  259. // T should be a eigen matrix primitive type like int or double
  260. // Inputs:
  261. // low starting value if step is valid then this is *always* the first
  262. // element of I
  263. // step step difference between sequential elements returned in I,
  264. // remember this will be cast to template T at compile time. If low<hi
  265. // then step must be positive. If low>hi then step must be negative.
  266. // Otherwise I will be set to empty.
  267. // hi ending value, if (hi-low)%step is zero then this will be the last
  268. // element in I. If step is positive there will be no elements greater
  269. // than hi, vice versa if hi<low
  270. // Output:
  271. // I list of values from low to hi with step size step)igl_Qu8mg5v7";
  272. const char *__doc_igl_fit_rotations = R"igl_Qu8mg5v7(// Known issues: This seems to be implemented in Eigen/Geometry:
  273. // Eigen::umeyama
  274. //
  275. // FIT_ROTATIONS Given an input mesh and new positions find rotations for
  276. // every covariance matrix in a stack of covariance matrices
  277. //
  278. // Inputs:
  279. // S nr*dim by dim stack of covariance matrices
  280. // single_precision whether to use single precision (faster)
  281. // Outputs:
  282. // R dim by dim * nr list of rotations
  283. //)igl_Qu8mg5v7";
  284. const char *__doc_igl_fit_rotations_planar = R"igl_Qu8mg5v7(// FIT_ROTATIONS Given an input mesh and new positions find 2D rotations for
  285. // every vertex that best maps its one ring to the new one ring
  286. //
  287. // Inputs:
  288. // S nr*dim by dim stack of covariance matrices, third column and every
  289. // third row will be ignored
  290. // Outputs:
  291. // R dim by dim * nr list of rotations, third row and third column of each
  292. // rotation will just be identity
  293. //)igl_Qu8mg5v7";
  294. const char *__doc_igl_fit_rotations_SSE = R"igl_Qu8mg5v7(See fit_rotations_SSE for the documentation.)igl_Qu8mg5v7";
  295. const char *__doc_igl_rotate_vectors = R"igl_Qu8mg5v7(// Rotate the vectors V by A radiants on the tangent plane spanned by B1 and
  296. // B2
  297. //
  298. // Inputs:
  299. // V #V by 3 eigen Matrix of vectors
  300. // A #V eigen vector of rotation angles or a single angle to be applied
  301. // to all vectors
  302. // B1 #V by 3 eigen Matrix of base vector 1
  303. // B2 #V by 3 eigen Matrix of base vector 2
  304. //
  305. // Output:
  306. // Returns the rotated vectors
  307. //)igl_Qu8mg5v7";
  308. const char *__doc_igl_read_triangle_mesh = R"igl_Qu8mg5v7(// read mesh from an ascii file with automatic detection of file format.
  309. // supported: obj, off, stl, wrl, ply, mesh)
  310. //
  311. // Templates:
  312. // Scalar type for positions and vectors (will be read as double and cast
  313. // to Scalar)
  314. // Index type for indices (will be read as int and cast to Index)
  315. // Inputs:
  316. // str path to file
  317. // Outputs:
  318. // V eigen double matrix #V by 3
  319. // F eigen int matrix #F by 3
  320. // Returns true iff success)igl_Qu8mg5v7";
  321. const char *__doc_igl_gaussian_curvature = R"igl_Qu8mg5v7(// Compute discrete local integral gaussian curvature (angle deficit, without
  322. // averaging by local area).
  323. //
  324. // Inputs:
  325. // V #V by 3 eigen Matrix of mesh vertex 3D positions
  326. // F #F by 3 eigen Matrix of face (triangle) indices
  327. // Output:
  328. // K #V by 1 eigen Matrix of discrete gaussian curvature values
  329. //)igl_Qu8mg5v7";
  330. const char *__doc_igl_planarize_quad_mesh = R"igl_Qu8mg5v7(// Inputs:
  331. // Vin #V by 3 eigen Matrix of mesh vertex 3D positions
  332. // F #F by 4 eigen Matrix of face (quad) indices
  333. // maxIter maximum numbers of iterations
  334. // threshold minimum allowed threshold for non-planarity
  335. // Output:
  336. // Vout #V by 3 eigen Matrix of planar mesh vertex 3D positions
  337. //)igl_Qu8mg5v7";
  338. const char *__doc_igl_avg_edge_length = R"igl_Qu8mg5v7(// Compute the average edge length for the given triangle mesh
  339. // Templates:
  340. // DerivedV derived from vertex positions matrix type: i.e. MatrixXd
  341. // DerivedF derived from face indices matrix type: i.e. MatrixXi
  342. // DerivedL derived from edge lengths matrix type: i.e. MatrixXd
  343. // Inputs:
  344. // V eigen matrix #V by 3
  345. // F #F by simplex-size list of mesh faces (must be simplex)
  346. // Outputs:
  347. // l average edge length
  348. //
  349. // See also: adjacency_matrix)igl_Qu8mg5v7";
  350. const char *__doc_igl_barycentric_coordinates = R"igl_Qu8mg5v7(// Compute barycentric coordinates in a tet
  351. //
  352. // Inputs:
  353. // P #P by 3 Query points in 3d
  354. // A #P by 3 Tet corners in 3d
  355. // B #P by 3 Tet corners in 3d
  356. // C #P by 3 Tet corners in 3d
  357. // D #P by 3 Tet corners in 3d
  358. // Outputs:
  359. // L #P by 4 list of barycentric coordinates
  360. // )igl_Qu8mg5v7";
  361. const char *__doc_igl_lscm = R"igl_Qu8mg5v7(// Compute a Least-squares conformal map parametrization (equivalently
  362. // derived in "Intrinsic Parameterizations of Surface Meshes" [Desbrun et al.
  363. // 2002] and "Least Squares Conformal Maps for Automatic Texture Atlas
  364. // Generation" [Lévy et al. 2002]), though this implementation follows the
  365. // derivation in: "Spectral Conformal Parameterization" [Mullen et al. 2008]
  366. // (note, this does **not** implement the Eigen-decomposition based method in
  367. // [Mullen et al. 2008], which is not equivalent). Input should be a manifold
  368. // mesh (also no unreferenced vertices) and "boundary" (fixed vertices) `b`
  369. // should contain at least two vertices per connected component.
  370. //
  371. // Inputs:
  372. // V #V by 3 list of mesh vertex positions
  373. // F #F by 3 list of mesh faces (must be triangles)
  374. // b #b boundary indices into V
  375. // bc #b by 3 list of boundary values
  376. // Outputs:
  377. // UV #V by 2 list of 2D mesh vertex positions in UV space
  378. // Returns true only on solver success.
  379. //)igl_Qu8mg5v7";
  380. const char *__doc_igl_find_cross_field_singularities = R"igl_Qu8mg5v7(// Inputs:
  381. // V #V by 3 eigen Matrix of mesh vertex 3D positions
  382. // F #F by 3 eigen Matrix of face (quad) indices
  383. // Handle_MMatch #F by 3 eigen Matrix containing the integer missmatch of the cross field
  384. // across all face edges
  385. // Output:
  386. // isSingularity #V by 1 boolean eigen Vector indicating the presence of a singularity on a vertex
  387. // singularityIndex #V by 1 integer eigen Vector containing the singularity indices
  388. //)igl_Qu8mg5v7";
  389. const char *__doc_igl_upsample = R"igl_Qu8mg5v7(// Subdivide a mesh without moving vertices: loop subdivision but odd
  390. // vertices stay put and even vertices are just edge midpoints
  391. //
  392. // Templates:
  393. // MatV matrix for vertex positions, e.g. MatrixXd
  394. // MatF matrix for vertex positions, e.g. MatrixXi
  395. // Inputs:
  396. // V #V by dim mesh vertices
  397. // F #F by 3 mesh triangles
  398. // Outputs:
  399. // NV new vertex positions, V is guaranteed to be at top
  400. // NF new list of face indices
  401. //
  402. // NOTE: V should not be the same as NV,
  403. // NOTE: F should not be the same as NF, use other proto
  404. //
  405. // Known issues:
  406. // - assumes (V,F) is edge-manifold.)igl_Qu8mg5v7";
  407. const char *__doc_igl_slice_mask = R"igl_Qu8mg5v7(// Act like the matlab X(row_mask,col_mask) operator, where
  408. // row_mask, col_mask are non-negative integer indices.
  409. //
  410. // Inputs:
  411. // X m by n matrix
  412. // R m list of row bools
  413. // C n list of column bools
  414. // Output:
  415. // Y #trues-in-R by #trues-in-C matrix
  416. //
  417. // See also: slice_mask)igl_Qu8mg5v7";
  418. const char *__doc_igl_point_mesh_squared_distance = R"igl_Qu8mg5v7(// Compute distances from a set of points P to a triangle mesh (V,F)
  419. //
  420. // Inputs:
  421. // P #P by 3 list of query point positions
  422. // V #V by 3 list of vertex positions
  423. // Ele #Ele by (3|2|1) list of (triangle|edge|point) indices
  424. // Outputs:
  425. // sqrD #P list of smallest squared distances
  426. // I #P list of primitive indices corresponding to smallest distances
  427. // C #P by 3 list of closest points
  428. //
  429. // Known bugs: This only computes distances to given primitivess. So
  430. // unreferenced vertices are ignored. However, degenerate primitives are
  431. // handled correctly: triangle [1 2 2] is treated as a segment [1 2], and
  432. // triangle [1 1 1] is treated as a point. So one _could_ add extra
  433. // combinatorially degenerate rows to Ele for all unreferenced vertices to
  434. // also get distances to points.)igl_Qu8mg5v7";
  435. const char *__doc_igl_parula = R"igl_Qu8mg5v7(// PARULA like MATLAB's parula
  436. //
  437. // Inputs:
  438. // m number of colors
  439. // Outputs:
  440. // J m by list of RGB colors between 0 and 1
  441. //
  442. // Wrapper for directly computing [r,g,b] values for a given factor f between
  443. // 0 and 1
  444. //
  445. // Inputs:
  446. // f factor determining color value as if 0 was min and 1 was max
  447. // Outputs:
  448. // r red value
  449. // g green value
  450. // b blue value)igl_Qu8mg5v7";
  451. const char *__doc_igl_setdiff = R"igl_Qu8mg5v7(// Set difference of elements of matrices
  452. //
  453. // Inputs:
  454. // A m-long vector of indices
  455. // B n-long vector of indices
  456. // Outputs:
  457. // C (k<=m)-long vector of unique elements appearing in A but not in B
  458. // IA (k<=m)-long list of indices into A so that C = A(IA)
  459. //)igl_Qu8mg5v7";
  460. const char *__doc_igl_comb_frame_field = R"igl_Qu8mg5v7(// Inputs:
  461. // V #V by 3 eigen Matrix of mesh vertex 3D positions
  462. // F #F by 4 eigen Matrix of face (quad) indices
  463. // PD1 #F by 3 eigen Matrix of the first per face cross field vector
  464. // PD2 #F by 3 eigen Matrix of the second per face cross field vector
  465. // BIS1_combed #F by 3 eigen Matrix of the first combed bisector field vector
  466. // BIS2_combed #F by 3 eigen Matrix of the second combed bisector field vector
  467. // Output:
  468. // PD1_combed #F by 3 eigen Matrix of the first combed cross field vector
  469. // PD2_combed #F by 3 eigen Matrix of the second combed cross field vector
  470. //)igl_Qu8mg5v7";
  471. const char *__doc_igl_map_vertices_to_circle = R"igl_Qu8mg5v7(// Map the vertices whose indices are in a given boundary loop (bnd) on the
  472. // unit circle with spacing proportional to the original boundary edge
  473. // lengths.
  474. //
  475. // Inputs:
  476. // V #V by dim list of mesh vertex positions
  477. // b #W list of vertex ids
  478. // Outputs:
  479. // UV #W by 2 list of 2D position on the unit circle for the vertices in b)igl_Qu8mg5v7";
  480. const char *__doc_igl_writeOBJ = R"igl_Qu8mg5v7(// Write a mesh in an ascii obj file
  481. // Inputs:
  482. // str path to outputfile
  483. // V #V by 3 mesh vertex positions
  484. // F #F by 3|4 mesh indices into V
  485. // CN #CN by 3 normal vectors
  486. // FN #F by 3|4 corner normal indices into CN
  487. // TC #TC by 2|3 texture coordinates
  488. // FTC #F by 3|4 corner texture coord indices into TC
  489. // Returns true on success, false on error)igl_Qu8mg5v7";
  490. const char *__doc_igl_active_set = R"igl_Qu8mg5v7(// Known Bugs: rows of [Aeq;Aieq] **must** be linearly independent. Should be
  491. // using QR decomposition otherwise:
  492. // http://www.okstate.edu/sas/v8/sashtml/ormp/chap5/sect32.htm
  493. //
  494. // ACTIVE_SET Minimize quadratic energy
  495. //
  496. // 0.5*Z'*A*Z + Z'*B + C with constraints
  497. //
  498. // that Z(known) = Y, optionally also subject to the constraints Aeq*Z = Beq,
  499. // and further optionally subject to the linear inequality constraints that
  500. // Aieq*Z <= Bieq and constant inequality constraints lx <= x <= ux
  501. //
  502. // Inputs:
  503. // A n by n matrix of quadratic coefficients
  504. // B n by 1 column of linear coefficients
  505. // known list of indices to known rows in Z
  506. // Y list of fixed values corresponding to known rows in Z
  507. // Aeq meq by n list of linear equality constraint coefficients
  508. // Beq meq by 1 list of linear equality constraint constant values
  509. // Aieq mieq by n list of linear inequality constraint coefficients
  510. // Bieq mieq by 1 list of linear inequality constraint constant values
  511. // lx n by 1 list of lower bounds [] implies -Inf
  512. // ux n by 1 list of upper bounds [] implies Inf
  513. // params struct of additional parameters (see below)
  514. // Z if not empty, is taken to be an n by 1 list of initial guess values
  515. // (see output)
  516. // Outputs:
  517. // Z n by 1 list of solution values
  518. // Returns true on success, false on error
  519. //
  520. // Benchmark: For a harmonic solve on a mesh with 325K facets, matlab 2.2
  521. // secs, igl/min_quad_with_fixed.h 7.1 secs
  522. //)igl_Qu8mg5v7";
  523. const char *__doc_igl_per_edge_normals = R"igl_Qu8mg5v7(// Compute face normals via vertex position list, face list
  524. // Inputs:
  525. // V #V by 3 eigen Matrix of mesh vertex 3D positions
  526. // F #F by 3 eigen Matrix of face (triangle) indices
  527. // weight weighting type
  528. // FN #F by 3 matrix of 3D face normals per face
  529. // Output:
  530. // N #2 by 3 matrix of mesh edge 3D normals per row
  531. // E #E by 2 matrix of edge indices per row
  532. // EMAP #E by 1 matrix of indices from all edges to E
  533. //)igl_Qu8mg5v7";
  534. const char *__doc_igl_covariance_scatter_matrix = R"igl_Qu8mg5v7(// Construct the covariance scatter matrix for a given arap energy
  535. // Inputs:
  536. // V #V by Vdim list of initial domain positions
  537. // F #F by 3 list of triangle indices into V
  538. // energy ARAPEnergyType enum value defining which energy is being used.
  539. // See ARAPEnergyType.h for valid options and explanations.
  540. // Outputs:
  541. // CSM dim*#V/#F by dim*#V sparse matrix containing special laplacians along
  542. // the diagonal so that when multiplied by V gives covariance matrix
  543. // elements, can be used to speed up covariance matrix computation)igl_Qu8mg5v7";
  544. const char *__doc_igl_boundary_facets = R"igl_Qu8mg5v7(// BOUNDARY_FACETS Determine boundary faces (edges) of tetrahedra (triangles)
  545. // stored in T (analogous to qptoolbox's `outline` and `boundary_faces`).
  546. //
  547. // Templates:
  548. // IntegerT integer-value: e.g. int
  549. // IntegerF integer-value: e.g. int
  550. // Input:
  551. // T tetrahedron (triangle) index list, m by 4 (3), where m is the number of tetrahedra
  552. // Output:
  553. // F list of boundary faces, n by 3 (2), where n is the number of boundary faces
  554. //
  555. //)igl_Qu8mg5v7";
  556. const char *__doc_igl_compute_frame_field_bisectors = R"igl_Qu8mg5v7(// Compute bisectors of a frame field defined on mesh faces
  557. // Inputs:
  558. // V #V by 3 eigen Matrix of mesh vertex 3D positions
  559. // F #F by 3 eigen Matrix of face (triangle) indices
  560. // B1 #F by 3 eigen Matrix of face (triangle) base vector 1
  561. // B2 #F by 3 eigen Matrix of face (triangle) base vector 2
  562. // PD1 #F by 3 eigen Matrix of the first per face frame field vector
  563. // PD2 #F by 3 eigen Matrix of the second per face frame field vector
  564. // Output:
  565. // BIS1 #F by 3 eigen Matrix of the first per face frame field bisector
  566. // BIS2 #F by 3 eigen Matrix of the second per face frame field bisector
  567. //)igl_Qu8mg5v7";
  568. const char *__doc_igl_edge_lengths = R"igl_Qu8mg5v7(// Constructs a list of lengths of edges opposite each index in a face
  569. // (triangle/tet) list
  570. //
  571. // Templates:
  572. // DerivedV derived from vertex positions matrix type: i.e. MatrixXd
  573. // DerivedF derived from face indices matrix type: i.e. MatrixXi
  574. // DerivedL derived from edge lengths matrix type: i.e. MatrixXd
  575. // Inputs:
  576. // V eigen matrix #V by 3
  577. // F #F by 2 list of mesh edges
  578. // or
  579. // F #F by 3 list of mesh faces (must be triangles)
  580. // or
  581. // T #T by 4 list of mesh elements (must be tets)
  582. // Outputs:
  583. // L #F by {1|3|6} list of edge lengths
  584. // for edges, column of lengths
  585. // for triangles, columns correspond to edges [1,2],[2,0],[0,1]
  586. // for tets, columns correspond to edges
  587. // [3 0],[3 1],[3 2],[1 2],[2 0],[0 1]
  588. //)igl_Qu8mg5v7";
  589. const char *__doc_igl_readOBJ = R"igl_Qu8mg5v7(// Read a mesh from an ascii obj file, filling in vertex positions, normals
  590. // and texture coordinates. Mesh may have faces of any number of degree
  591. //
  592. // Templates:
  593. // Scalar type for positions and vectors (will be read as double and cast
  594. // to Scalar)
  595. // Index type for indices (will be read as int and cast to Index)
  596. // Inputs:
  597. // str path to .obj file
  598. // Outputs:
  599. // V double matrix of vertex positions #V by 3
  600. // TC double matrix of texture coordinats #TC by 2
  601. // N double matrix of corner normals #N by 3
  602. // F #F list of face indices into vertex positions
  603. // FTC #F list of face indices into vertex texture coordinates
  604. // FN #F list of face indices into vertex normals
  605. // Returns true on success, false on errors)igl_Qu8mg5v7";
  606. const char *__doc_igl_cut_mesh_from_singularities = R"igl_Qu8mg5v7(// Given a mesh (V,F) and the integer mismatch of a cross field per edge
  607. // (MMatch), finds the cut_graph connecting the singularities (seams) and the
  608. // degree of the singularities singularity_index
  609. //
  610. // Input:
  611. // V #V by 3 list of mesh vertex positions
  612. // F #F by 3 list of faces
  613. // MMatch #F by 3 list of per corner integer mismatch
  614. // Outputs:
  615. // seams #F by 3 list of per corner booleans that denotes if an edge is a
  616. // seam or not
  617. //)igl_Qu8mg5v7";
  618. const char *__doc_igl_readDMAT = R"igl_Qu8mg5v7(See readDMAT for the documentation.)igl_Qu8mg5v7";
  619. const char *__doc_igl_doublearea = R"igl_Qu8mg5v7(// DOUBLEAREA computes twice the area for each input triangle[quad]
  620. //
  621. // Templates:
  622. // DerivedV derived type of eigen matrix for V (e.g. derived from
  623. // MatrixXd)
  624. // DerivedF derived type of eigen matrix for F (e.g. derived from
  625. // MatrixXi)
  626. // DeriveddblA derived type of eigen matrix for dblA (e.g. derived from
  627. // MatrixXd)
  628. // Inputs:
  629. // V #V by dim list of mesh vertex positions
  630. // F #F by simplex_size list of mesh faces (must be triangles or quads)
  631. // Outputs:
  632. // dblA #F list of triangle[quad] double areas (SIGNED only for 2D input)
  633. //
  634. // Known bug: For dim==3 complexity is O(#V + #F)!! Not just O(#F). This is a big deal
  635. // if you have 1million unreferenced vertices and 1 face)igl_Qu8mg5v7";
  636. const char *__doc_igl_doublearea_single = R"igl_Qu8mg5v7(// Single triangle in 2D!
  637. //
  638. // This should handle streams of corners not just single corners)igl_Qu8mg5v7";
  639. const char *__doc_igl_doublearea_quad = R"igl_Qu8mg5v7(// DOUBLEAREA_QUAD computes twice the area for each input quadrilateral
  640. //
  641. // Inputs:
  642. // V #V by dim list of mesh vertex positions
  643. // F #F by simplex_size list of mesh faces (must be quadrilaterals)
  644. // Outputs:
  645. // dblA #F list of quadrilateral double areas
  646. //)igl_Qu8mg5v7";
  647. const char *__doc_igl_min_quad_with_fixed_precompute = R"igl_Qu8mg5v7(// Known Bugs: rows of Aeq **should probably** be linearly independent.
  648. // During precomputation, the rows of a Aeq are checked via QR. But in case
  649. // they're not then resulting probably will no longer be sparse: it will be
  650. // slow.
  651. //
  652. // MIN_QUAD_WITH_FIXED Minimize quadratic energy
  653. //
  654. // 0.5*Z'*A*Z + Z'*B + C with
  655. //
  656. // constraints that Z(known) = Y, optionally also subject to the constraints
  657. // Aeq*Z = Beq
  658. //
  659. // Templates:
  660. // T should be a eigen matrix primitive type like int or double
  661. // Inputs:
  662. // A n by n matrix of quadratic coefficients
  663. // known list of indices to known rows in Z
  664. // Y list of fixed values corresponding to known rows in Z
  665. // Aeq m by n list of linear equality constraint coefficients
  666. // pd flag specifying whether A(unknown,unknown) is positive definite
  667. // Outputs:
  668. // data factorization struct with all necessary information to solve
  669. // using min_quad_with_fixed_solve
  670. // Returns true on success, false on error
  671. //
  672. // Benchmark: For a harmonic solve on a mesh with 325K facets, matlab 2.2
  673. // secs, igl/min_quad_with_fixed.h 7.1 secs
  674. //)igl_Qu8mg5v7";
  675. const char *__doc_igl_min_quad_with_fixed_solve = R"igl_Qu8mg5v7(// Solves a system previously factored using min_quad_with_fixed_precompute
  676. //
  677. // Template:
  678. // T type of sparse matrix (e.g. double)
  679. // DerivedY type of Y (e.g. derived from VectorXd or MatrixXd)
  680. // DerivedZ type of Z (e.g. derived from VectorXd or MatrixXd)
  681. // Inputs:
  682. // data factorization struct with all necessary precomputation to solve
  683. // B n by 1 column of linear coefficients
  684. // Y b by 1 list of constant fixed values
  685. // Beq m by 1 list of linear equality constraint constant values
  686. // Outputs:
  687. // Z n by cols solution
  688. // sol #unknowns+#lagrange by cols solution to linear system
  689. // Returns true on success, false on error)igl_Qu8mg5v7";
  690. const char *__doc_igl_min_quad_with_fixed = R"igl_Qu8mg5v7(See min_quad_with_fixed for the documentation.)igl_Qu8mg5v7";
  691. const char *__doc_igl_writeMESH = R"igl_Qu8mg5v7(// save a tetrahedral volume mesh to a .mesh file
  692. //
  693. // Templates:
  694. // Scalar type for positions and vectors (will be cast as double)
  695. // Index type for indices (will be cast to int)
  696. // Input:
  697. // mesh_file_name path of .mesh file
  698. // V double matrix of vertex positions #V by 3
  699. // T #T list of tet indices into vertex positions
  700. // F #F list of face indices into vertex positions
  701. //
  702. // Known bugs: Holes and regions are not supported)igl_Qu8mg5v7";
  703. const char *__doc_igl_unique = R"igl_Qu8mg5v7(// Act like matlab's [C,IA,IC] = unique(X)
  704. //
  705. // Templates:
  706. // T comparable type T
  707. // Inputs:
  708. // A #A vector of type T
  709. // Outputs:
  710. // C #C vector of unique entries in A
  711. // IA #C index vector so that C = A(IA);
  712. // IC #A index vector so that A = C(IC);)igl_Qu8mg5v7";
  713. const char *__doc_igl_unique_rows = R"igl_Qu8mg5v7(// Act like matlab's [C,IA,IC] = unique(X,'rows')
  714. //
  715. // Templates:
  716. // DerivedA derived scalar type, e.g. MatrixXi or MatrixXd
  717. // DerivedIA derived integer type, e.g. MatrixXi
  718. // DerivedIC derived integer type, e.g. MatrixXi
  719. // Inputs:
  720. // A m by n matrix whose entries are to unique'd according to rows
  721. // Outputs:
  722. // C #C vector of unique rows in A
  723. // IA #C index vector so that C = A(IA,:);
  724. // IC #A index vector so that A = C(IC,:);)igl_Qu8mg5v7";
  725. const char *__doc_igl_arap_precomputation = R"igl_Qu8mg5v7(// Compute necessary information to start using an ARAP deformation
  726. //
  727. // Inputs:
  728. // V #V by dim list of mesh positions
  729. // F #F by simplex-size list of triangle|tet indices into V
  730. // dim dimension being used at solve time. For deformation usually dim =
  731. // V.cols(), for surface parameterization V.cols() = 3 and dim = 2
  732. // b #b list of "boundary" fixed vertex indices into V
  733. // Outputs:
  734. // data struct containing necessary precomputation)igl_Qu8mg5v7";
  735. const char *__doc_igl_arap_solve = R"igl_Qu8mg5v7(// Inputs:
  736. // bc #b by dim list of boundary conditions
  737. // data struct containing necessary precomputation and parameters
  738. // U #V by dim initial guess)igl_Qu8mg5v7";
  739. const char *__doc_igl_cross_field_missmatch = R"igl_Qu8mg5v7(// Inputs:
  740. // V #V by 3 eigen Matrix of mesh vertex 3D positions
  741. // F #F by 3 eigen Matrix of face (quad) indices
  742. // PD1 #F by 3 eigen Matrix of the first per face cross field vector
  743. // PD2 #F by 3 eigen Matrix of the second per face cross field vector
  744. // isCombed boolean, specifying whether the field is combed (i.e. matching has been precomputed.
  745. // If not, the field is combed first.
  746. // Output:
  747. // Handle_MMatch #F by 3 eigen Matrix containing the integer missmatch of the cross field
  748. // across all face edges
  749. //)igl_Qu8mg5v7";
  750. const char *__doc_igl_grad = R"igl_Qu8mg5v7(// Gradient of a scalar function defined on piecewise linear elements (mesh)
  751. // is constant on each triangle i,j,k:
  752. // grad(Xijk) = (Xj-Xi) * (Vi - Vk)^R90 / 2A + (Xk-Xi) * (Vj - Vi)^R90 / 2A
  753. // where Xi is the scalar value at vertex i, Vi is the 3D position of vertex
  754. // i, and A is the area of triangle (i,j,k). ^R90 represent a rotation of
  755. // 90 degrees
  756. //)igl_Qu8mg5v7";
  757. const char *__doc_igl_slice_into = R"igl_Qu8mg5v7(// Act like the matlab Y(row_indices,col_indices) = X
  758. //
  759. // Inputs:
  760. // X xm by xn rhs matrix
  761. // R list of row indices
  762. // C list of column indices
  763. // Y ym by yn lhs matrix
  764. // Output:
  765. // Y ym by yn lhs matrix, same as input but Y(R,C) = X)igl_Qu8mg5v7";
  766. const char *__doc_igl_slice_tets = R"igl_Qu8mg5v7(// SLICE_TETS Slice through a tet mesh (V,T) along a given plane (via its
  767. // implicit equation).
  768. //
  769. // Inputs:
  770. // V #V by 3 list of tet mesh vertices
  771. // T #T by 4 list of tet indices into V
  772. // plane list of 4 coefficients in the plane equation: [x y z 1]'*plane = 0
  773. // Optional:
  774. // 'Manifold' followed by whether to stitch together triangles into a
  775. // manifold mesh {true}: results in more compact U but slightly slower.
  776. // Outputs:
  777. // U #U by 3 list of triangle mesh vertices along slice
  778. // G #G by 3 list of triangles indices into U
  779. // J #G list of indices into T revealing from which tet each faces comes
  780. // BC #U by #V list of barycentric coordinates (or more generally: linear
  781. // interpolation coordinates) so that U = BC*V
  782. // )igl_Qu8mg5v7";
  783. const char *__doc_igl_n_polyvector = R"igl_Qu8mg5v7(// Inputs:
  784. // v0, v1 the two #3 by 1 vectors
  785. // normalized boolean, if false, then the vectors are normalized prior to the calculation
  786. // Output:
  787. // 3 by 3 rotation matrix that takes v0 to v1
  788. //)igl_Qu8mg5v7";
  789. const char *__doc_igl_harmonic = R"igl_Qu8mg5v7(// Compute k-harmonic weight functions "coordinates".
  790. //
  791. //
  792. // Inputs:
  793. // V #V by dim vertex positions
  794. // F #F by simplex-size list of element indices
  795. // b #b boundary indices into V
  796. // bc #b by #W list of boundary values
  797. // k power of harmonic operation (1: harmonic, 2: biharmonic, etc)
  798. // Outputs:
  799. // W #V by #W list of weights
  800. //)igl_Qu8mg5v7";
  801. const char *__doc_igl_boundary_loop = R"igl_Qu8mg5v7(// Compute list of ordered boundary loops for a manifold mesh.
  802. //
  803. // Templates:
  804. // Index index type
  805. // Inputs:
  806. // F #V by dim list of mesh faces
  807. // Outputs:
  808. // L list of loops where L[i] = ordered list of boundary vertices in loop i
  809. //)igl_Qu8mg5v7";
  810. const char *__doc_igl_polar_svd = R"igl_Qu8mg5v7(// Computes the polar decomposition (R,T) of a matrix A using SVD singular
  811. // value decomposition
  812. //
  813. // Inputs:
  814. // A 3 by 3 matrix to be decomposed
  815. // Outputs:
  816. // R 3 by 3 rotation matrix part of decomposition (**always rotataion**)
  817. // T 3 by 3 stretch matrix part of decomposition
  818. // U 3 by 3 left-singular vectors
  819. // S 3 by 1 singular values
  820. // V 3 by 3 right-singular vectors
  821. //
  822. //)igl_Qu8mg5v7";
  823. const char *__doc_igl_comb_cross_field = R"igl_Qu8mg5v7(// Inputs:
  824. // V #V by 3 eigen Matrix of mesh vertex 3D positions
  825. // F #F by 4 eigen Matrix of face (quad) indices
  826. // PD1in #F by 3 eigen Matrix of the first per face cross field vector
  827. // PD2in #F by 3 eigen Matrix of the second per face cross field vector
  828. // Output:
  829. // PD1out #F by 3 eigen Matrix of the first combed cross field vector
  830. // PD2out #F by 3 eigen Matrix of the second combed cross field vector
  831. //)igl_Qu8mg5v7";
  832. const char *__doc_igl_invert_diag = R"igl_Qu8mg5v7(// Templates:
  833. // T should be a eigen sparse matrix primitive type like int or double
  834. // Inputs:
  835. // X an m by n sparse matrix
  836. // Outputs:
  837. // Y an m by n sparse matrix)igl_Qu8mg5v7";
  838. const char *__doc_igl_readMESH = R"igl_Qu8mg5v7(// load a tetrahedral volume mesh from a .mesh file
  839. //
  840. // Templates:
  841. // Scalar type for positions and vectors (will be read as double and cast
  842. // to Scalar)
  843. // Index type for indices (will be read as int and cast to Index)
  844. // Input:
  845. // mesh_file_name path of .mesh file
  846. // Outputs:
  847. // V double matrix of vertex positions #V by 3
  848. // T #T list of tet indices into vertex positions
  849. // F #F list of face indices into vertex positions
  850. //
  851. // Known bugs: Holes and regions are not supported)igl_Qu8mg5v7";
  852. const char *__doc_igl_triangle_triangulate = R"igl_Qu8mg5v7(// Triangulate the interior of a polygon using the triangle library.
  853. //
  854. // Inputs:
  855. // V #V by 2 list of 2D vertex positions
  856. // E #E by 2 list of vertex ids forming unoriented edges of the boundary of the polygon
  857. // H #H by 2 coordinates of points contained inside holes of the polygon
  858. // flags string of options pass to triangle (see triangle documentation)
  859. // Outputs:
  860. // V2 #V2 by 2 coordinates of the vertives of the generated triangulation
  861. // F2 #F2 by 3 list of indices forming the faces of the generated triangulation
  862. //
  863. // TODO: expose the option to prevent Steiner points on the boundary
  864. //)igl_Qu8mg5v7";
  865. const char *__doc_igl_copyleft_tetgen_tetrahedralize = R"igl_Qu8mg5v7(// Mesh the interior of a surface mesh (V,F) using tetgen
  866. //
  867. // Inputs:
  868. // V #V by 3 vertex position list
  869. // F #F list of polygon face indices into V (0-indexed)
  870. // switches string of tetgen options (See tetgen documentation) e.g.
  871. // "pq1.414a0.01" tries to mesh the interior of a given surface with
  872. // quality and area constraints
  873. // "" will mesh the convex hull constrained to pass through V (ignores F)
  874. // Outputs:
  875. // TV #V by 3 vertex position list
  876. // TT #T by 4 list of tet face indices
  877. // TF #F by 3 list of triangle face indices
  878. // Returns status:
  879. // 0 success
  880. // 1 tetgen threw exception
  881. // 2 tetgen did not crash but could not create any tets (probably there are
  882. // holes, duplicate faces etc.)
  883. // -1 other error)igl_Qu8mg5v7";
  884. const char *__doc_igl_copyleft_comiso_miq = R"igl_Qu8mg5v7(// Inputs:
  885. // V #V by 3 list of mesh vertex 3D positions
  886. // F #F by 3 list of faces indices in V
  887. // PD1 #V by 3 first line of the Jacobian per triangle
  888. // PD2 #V by 3 second line of the Jacobian per triangle
  889. // (optional, if empty it will be a vector in the tangent plane orthogonal to PD1)
  890. // scale global scaling for the gradient (controls the quads resolution)
  891. // stiffness weight for the stiffness iterations
  892. // direct_round greedily round all integer variables at once (greatly improves optimization speed but lowers quality)
  893. // iter stiffness iterations (0 = no stiffness)
  894. // local_iter number of local iterations for the integer rounding
  895. // do_round enables the integer rounding (disabling it could be useful for debugging)
  896. // round_vertices id of additional vertices that should be snapped to integer coordinates
  897. // hard_features #H by 2 list of pairs of vertices that belongs to edges that should be snapped to integer coordinates
  898. //
  899. // Output:
  900. // UV #UV by 2 list of vertices in 2D
  901. // FUV #FUV by 3 list of face indices in UV
  902. //
  903. // TODO: rename the parameters name in the cpp consistenly
  904. // improve the handling of hard_features, right now it might fail in difficult cases)igl_Qu8mg5v7";
  905. const char *__doc_igl_copyleft_comiso_nrosy = R"igl_Qu8mg5v7(// Generate a N-RoSy field from a sparse set of constraints
  906. //
  907. // Inputs:
  908. // V #V by 3 list of mesh vertex coordinates
  909. // F #F by 3 list of mesh faces (must be triangles)
  910. // b #B by 1 list of constrained face indices
  911. // bc #B by 3 list of representative vectors for the constrained
  912. // faces
  913. // b_soft #S by 1 b for soft constraints
  914. // w_soft #S by 1 weight for the soft constraints (0-1)
  915. // bc_soft #S by 3 bc for soft constraints
  916. // N the degree of the N-RoSy vector field
  917. // soft the strenght of the soft contraints w.r.t. smoothness
  918. // (0 -> smoothness only, 1->constraints only)
  919. // Outputs:
  920. // R #F by 3 the representative vectors of the interpolated field
  921. // S #V by 1 the singularity index for each vertex (0 = regular))igl_Qu8mg5v7";
  922. const char *__doc_igl_embree_ambient_occlusion = R"igl_Qu8mg5v7(// Compute ambient occlusion per given point
  923. //
  924. // Inputs:
  925. // ei EmbreeIntersector containing (V,F)
  926. // P #P by 3 list of origin points
  927. // N #P by 3 list of origin normals
  928. // Outputs:
  929. // S #P list of ambient occlusion values between 1 (fully occluded) and
  930. // 0 (not occluded)
  931. //)igl_Qu8mg5v7";