py_doc.cpp 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632
  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_cotmatrix = R"igl_Qu8mg5v7(// Constructs the cotangent stiffness matrix (discrete laplacian) for a given
  36. // mesh (V,F).
  37. //
  38. // Templates:
  39. // DerivedV derived type of eigen matrix for V (e.g. derived from
  40. // MatrixXd)
  41. // DerivedF derived type of eigen matrix for F (e.g. derived from
  42. // MatrixXi)
  43. // Scalar scalar type for eigen sparse matrix (e.g. double)
  44. // Inputs:
  45. // V #V by dim list of mesh vertex positions
  46. // F #F by simplex_size list of mesh faces (must be triangles)
  47. // Outputs:
  48. // L #V by #V cotangent matrix, each row i corresponding to V(i,:)
  49. //
  50. // See also: adjacency_matrix
  51. //
  52. // Note: This Laplacian uses the convention that diagonal entries are
  53. // **minus** the sum of off-diagonal entries. The diagonal entries are
  54. // therefore in general negative and the matrix is **negative** semi-definite
  55. // (immediately, -L is **positive** semi-definite)
  56. //
  57. // Known bugs: off by 1e-16 on regular grid. I think its a problem of
  58. // arithmetic order in cotmatrix_entries.h: C(i,e) = (arithmetic)/dblA/4)igl_Qu8mg5v7";
  59. const char *__doc_igl_floor = R"igl_Qu8mg5v7(// Floor a given matrix to nearest integers
  60. //
  61. // Inputs:
  62. // X m by n matrix of scalars
  63. // Outputs:
  64. // Y m by n matrix of floored integers)igl_Qu8mg5v7";
  65. const char *__doc_igl_slice = R"igl_Qu8mg5v7(// Act like the matlab X(row_indices,col_indices) operator, where
  66. // row_indices, col_indices are non-negative integer indices.
  67. //
  68. // Inputs:
  69. // X m by n matrix
  70. // R list of row indices
  71. // C list of column indices
  72. // Output:
  73. // Y #R by #C matrix
  74. //
  75. // See also: slice_mask)igl_Qu8mg5v7";
  76. const char *__doc_igl_per_face_normals = R"igl_Qu8mg5v7(// Compute face normals via vertex position list, face list
  77. // Inputs:
  78. // V #V by 3 eigen Matrix of mesh vertex 3D positions
  79. // F #F by 3 eigen Matrix of face (triangle) indices
  80. // Z 3 vector normal given to faces with degenerate normal.
  81. // Output:
  82. // N #F by 3 eigen Matrix of mesh face (triangle) 3D normals
  83. //
  84. // Example:
  85. // // Give degenerate faces (1/3,1/3,1/3)^0.5
  86. // per_face_normals(V,F,Vector3d(1,1,1).normalized(),N);)igl_Qu8mg5v7";
  87. const char *__doc_igl_per_face_normals_stable = R"igl_Qu8mg5v7(// Special version where order of face indices is guaranteed not to effect
  88. // output.)igl_Qu8mg5v7";
  89. const char *__doc_igl_readOFF = R"igl_Qu8mg5v7(// Read a mesh from an ascii obj file, filling in vertex positions, normals
  90. // and texture coordinates. Mesh may have faces of any number of degree
  91. //
  92. // Templates:
  93. // Scalar type for positions and vectors (will be read as double and cast
  94. // to Scalar)
  95. // Index type for indices (will be read as int and cast to Index)
  96. // Inputs:
  97. // str path to .obj file
  98. // Outputs:
  99. // V double matrix of vertex positions #V by 3
  100. // F #F list of face indices into vertex positions
  101. // TC double matrix of texture coordinats #TC by 2
  102. // FTC #F list of face indices into vertex texture coordinates
  103. // N double matrix of corner normals #N by 3
  104. // FN #F list of face indices into vertex normals
  105. // Returns true on success, false on errors)igl_Qu8mg5v7";
  106. const char *__doc_igl_per_vertex_normals = R"igl_Qu8mg5v7(// Compute vertex normals via vertex position list, face list
  107. // Inputs:
  108. // V #V by 3 eigen Matrix of mesh vertex 3D positions
  109. // F #F by 3 eigne Matrix of face (triangle) indices
  110. // weighting Weighting type
  111. // Output:
  112. // N #V by 3 eigen Matrix of mesh vertex 3D normals)igl_Qu8mg5v7";
  113. const char *__doc_igl_sortrows = R"igl_Qu8mg5v7(// Act like matlab's [Y,I] = sortrows(X)
  114. //
  115. // Templates:
  116. // DerivedX derived scalar type, e.g. MatrixXi or MatrixXd
  117. // DerivedI derived integer type, e.g. MatrixXi
  118. // Inputs:
  119. // X m by n matrix whose entries are to be sorted
  120. // ascending sort ascending (true, matlab default) or descending (false)
  121. // Outputs:
  122. // Y m by n matrix whose entries are sorted (**should not** be same
  123. // reference as X)
  124. // I m list of indices so that
  125. // Y = X(I,:);)igl_Qu8mg5v7";
  126. const char *__doc_igl_barycenter = R"igl_Qu8mg5v7(// Computes the barycenter of every simplex
  127. //
  128. // Inputs:
  129. // V #V x dim matrix of vertex coordinates
  130. // F #F x simplex_size matrix of indices of simplex corners into V
  131. // Output:
  132. // BC #F x dim matrix of 3d vertices
  133. //)igl_Qu8mg5v7";
  134. const char *__doc_igl_jet = R"igl_Qu8mg5v7(// JET like MATLAB's jet
  135. //
  136. // Inputs:
  137. // m number of colors
  138. // Outputs:
  139. // J m by list of RGB colors between 0 and 1
  140. //
  141. //#ifndef IGL_NO_EIGEN
  142. // void jet(const int m, Eigen::MatrixXd & J);
  143. //#endif
  144. // Wrapper for directly computing [r,g,b] values for a given factor f between
  145. // 0 and 1
  146. //
  147. // Inputs:
  148. // f factor determining color value as if 0 was min and 1 was max
  149. // Outputs:
  150. // r red value
  151. // g green value
  152. // b blue value)igl_Qu8mg5v7";
  153. const char *__doc_igl_eigs = R"igl_Qu8mg5v7(See eigs for the documentation.)igl_Qu8mg5v7";
  154. const char *__doc_igl_per_corner_normals = R"igl_Qu8mg5v7(// Compute vertex normals via vertex position list, face list
  155. // Inputs:
  156. // V #V by 3 eigen Matrix of mesh vertex 3D positions
  157. // F #F by 3 eigne Matrix of face (triangle) indices
  158. // corner_threshold threshold in degrees on sharp angles
  159. // Output:
  160. // CN #F*3 by 3 eigen Matrix of mesh vertex 3D normals, where the normal
  161. // for corner F(i,j) is at CN(i*3+j,:) )igl_Qu8mg5v7";
  162. const char *__doc_igl_massmatrix = R"igl_Qu8mg5v7(// Constructs the mass (area) matrix for a given mesh (V,F).
  163. //
  164. // Templates:
  165. // DerivedV derived type of eigen matrix for V (e.g. derived from
  166. // MatrixXd)
  167. // DerivedF derived type of eigen matrix for F (e.g. derived from
  168. // MatrixXi)
  169. // Scalar scalar type for eigen sparse matrix (e.g. double)
  170. // Inputs:
  171. // V #V by dim list of mesh vertex positions
  172. // F #F by simplex_size list of mesh faces (must be triangles)
  173. // type one of the following ints:
  174. // MASSMATRIX_TYPE_BARYCENTRIC barycentric
  175. // MASSMATRIX_TYPE_VORONOI voronoi-hybrid {default}
  176. // MASSMATRIX_TYPE_FULL full {not implemented}
  177. // Outputs:
  178. // M #V by #V mass matrix
  179. //
  180. // See also: adjacency_matrix
  181. //)igl_Qu8mg5v7";
  182. const char *__doc_igl_colon = R"igl_Qu8mg5v7(// Colon operator like matlab's colon operator. Enumerats values between low
  183. // and hi with step step.
  184. // Templates:
  185. // L should be a eigen matrix primitive type like int or double
  186. // S should be a eigen matrix primitive type like int or double
  187. // H should be a eigen matrix primitive type like int or double
  188. // T should be a eigen matrix primitive type like int or double
  189. // Inputs:
  190. // low starting value if step is valid then this is *always* the first
  191. // element of I
  192. // step step difference between sequential elements returned in I,
  193. // remember this will be cast to template T at compile time. If low<hi
  194. // then step must be positive. If low>hi then step must be negative.
  195. // Otherwise I will be set to empty.
  196. // hi ending value, if (hi-low)%step is zero then this will be the last
  197. // element in I. If step is positive there will be no elements greater
  198. // than hi, vice versa if hi<low
  199. // Output:
  200. // I list of values from low to hi with step size step)igl_Qu8mg5v7";
  201. const char *__doc_igl_rotate_vectors = R"igl_Qu8mg5v7(// Rotate the vectors V by A radiants on the tangent plane spanned by B1 and
  202. // B2
  203. //
  204. // Inputs:
  205. // V #V by 3 eigen Matrix of vectors
  206. // A #V eigen vector of rotation angles or a single angle to be applied
  207. // to all vectors
  208. // B1 #V by 3 eigen Matrix of base vector 1
  209. // B2 #V by 3 eigen Matrix of base vector 2
  210. //
  211. // Output:
  212. // Returns the rotated vectors
  213. //)igl_Qu8mg5v7";
  214. const char *__doc_igl_read_triangle_mesh = R"igl_Qu8mg5v7(// read mesh from an ascii file with automatic detection of file format.
  215. // supported: obj, off, stl, wrl, ply, mesh)
  216. //
  217. // Templates:
  218. // Scalar type for positions and vectors (will be read as double and cast
  219. // to Scalar)
  220. // Index type for indices (will be read as int and cast to Index)
  221. // Inputs:
  222. // str path to file
  223. // Outputs:
  224. // V eigen double matrix #V by 3
  225. // F eigen int matrix #F by 3
  226. // Returns true iff success)igl_Qu8mg5v7";
  227. const char *__doc_igl_gaussian_curvature = R"igl_Qu8mg5v7(// Compute discrete local integral gaussian curvature (angle deficit, without
  228. // averaging by local area).
  229. //
  230. // Inputs:
  231. // V #V by 3 eigen Matrix of mesh vertex 3D positions
  232. // F #F by 3 eigen Matrix of face (triangle) indices
  233. // Output:
  234. // K #V by 1 eigen Matrix of discrete gaussian curvature values
  235. //)igl_Qu8mg5v7";
  236. const char *__doc_igl_avg_edge_length = R"igl_Qu8mg5v7(// Compute the average edge length for the given triangle mesh
  237. // Templates:
  238. // DerivedV derived from vertex positions matrix type: i.e. MatrixXd
  239. // DerivedF derived from face indices matrix type: i.e. MatrixXi
  240. // DerivedL derived from edge lengths matrix type: i.e. MatrixXd
  241. // Inputs:
  242. // V eigen matrix #V by 3
  243. // F #F by simplex-size list of mesh faces (must be simplex)
  244. // Outputs:
  245. // l average edge length
  246. //
  247. // See also: adjacency_matrix)igl_Qu8mg5v7";
  248. const char *__doc_igl_lscm = R"igl_Qu8mg5v7(// Compute a Least-squares conformal map parametrization (equivalently
  249. // derived in "Intrinsic Parameterizations of Surface Meshes" [Desbrun et al.
  250. // 2002] and "Least Squares Conformal Maps for Automatic Texture Atlas
  251. // Generation" [Lévy et al. 2002]), though this implementation follows the
  252. // derivation in: "Spectral Conformal Parameterization" [Mullen et al. 2008]
  253. // (note, this does **not** implement the Eigen-decomposition based method in
  254. // [Mullen et al. 2008], which is not equivalent). Input should be a manifold
  255. // mesh (also no unreferenced vertices) and "boundary" (fixed vertices) `b`
  256. // should contain at least two vertices per connected component.
  257. //
  258. // Inputs:
  259. // V #V by 3 list of mesh vertex positions
  260. // F #F by 3 list of mesh faces (must be triangles)
  261. // b #b boundary indices into V
  262. // bc #b by 3 list of boundary values
  263. // Outputs:
  264. // UV #V by 2 list of 2D mesh vertex positions in UV space
  265. // Returns true only on solver success.
  266. //)igl_Qu8mg5v7";
  267. const char *__doc_igl_find_cross_field_singularities = R"igl_Qu8mg5v7(// Inputs:
  268. // V #V by 3 eigen Matrix of mesh vertex 3D positions
  269. // F #F by 3 eigen Matrix of face (quad) indices
  270. // Handle_MMatch #F by 3 eigen Matrix containing the integer missmatch of the cross field
  271. // across all face edges
  272. // Output:
  273. // isSingularity #V by 1 boolean eigen Vector indicating the presence of a singularity on a vertex
  274. // singularityIndex #V by 1 integer eigen Vector containing the singularity indices
  275. //)igl_Qu8mg5v7";
  276. const char *__doc_igl_parula = R"igl_Qu8mg5v7(// PARULA like MATLAB's parula
  277. //
  278. // Inputs:
  279. // m number of colors
  280. // Outputs:
  281. // J m by list of RGB colors between 0 and 1
  282. //
  283. // Wrapper for directly computing [r,g,b] values for a given factor f between
  284. // 0 and 1
  285. //
  286. // Inputs:
  287. // f factor determining color value as if 0 was min and 1 was max
  288. // Outputs:
  289. // r red value
  290. // g green value
  291. // b blue value)igl_Qu8mg5v7";
  292. const char *__doc_igl_setdiff = R"igl_Qu8mg5v7(// Set difference of elements of matrices
  293. //
  294. // Inputs:
  295. // A m-long vector of indices
  296. // B n-long vector of indices
  297. // Outputs:
  298. // C (k<=m)-long vector of unique elements appearing in A but not in B
  299. // IA (k<=m)-long list of indices into A so that C = A(IA)
  300. //)igl_Qu8mg5v7";
  301. const char *__doc_igl_comb_frame_field = R"igl_Qu8mg5v7(// Inputs:
  302. // V #V by 3 eigen Matrix of mesh vertex 3D positions
  303. // F #F by 4 eigen Matrix of face (quad) indices
  304. // PD1 #F by 3 eigen Matrix of the first per face cross field vector
  305. // PD2 #F by 3 eigen Matrix of the second per face cross field vector
  306. // BIS1_combed #F by 3 eigen Matrix of the first combed bisector field vector
  307. // BIS2_combed #F by 3 eigen Matrix of the second combed bisector field vector
  308. // Output:
  309. // PD1_combed #F by 3 eigen Matrix of the first combed cross field vector
  310. // PD2_combed #F by 3 eigen Matrix of the second combed cross field vector
  311. //)igl_Qu8mg5v7";
  312. 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
  313. // unit circle with spacing proportional to the original boundary edge
  314. // lengths.
  315. //
  316. // Inputs:
  317. // V #V by dim list of mesh vertex positions
  318. // b #W list of vertex ids
  319. // Outputs:
  320. // UV #W by 2 list of 2D position on the unit circle for the vertices in b)igl_Qu8mg5v7";
  321. const char *__doc_igl_writeOBJ = R"igl_Qu8mg5v7(// Write a mesh in an ascii obj file
  322. // Inputs:
  323. // str path to outputfile
  324. // V #V by 3 mesh vertex positions
  325. // F #F by 3|4 mesh indices into V
  326. // CN #CN by 3 normal vectors
  327. // FN #F by 3|4 corner normal indices into CN
  328. // TC #TC by 2|3 texture coordinates
  329. // FTC #F by 3|4 corner texture coord indices into TC
  330. // Returns true on success, false on error)igl_Qu8mg5v7";
  331. const char *__doc_igl_active_set = R"igl_Qu8mg5v7(// Known Bugs: rows of [Aeq;Aieq] **must** be linearly independent. Should be
  332. // using QR decomposition otherwise:
  333. // http://www.okstate.edu/sas/v8/sashtml/ormp/chap5/sect32.htm
  334. //
  335. // ACTIVE_SET Minimize quadratic energy
  336. //
  337. // 0.5*Z'*A*Z + Z'*B + C with constraints
  338. //
  339. // that Z(known) = Y, optionally also subject to the constraints Aeq*Z = Beq,
  340. // and further optionally subject to the linear inequality constraints that
  341. // Aieq*Z <= Bieq and constant inequality constraints lx <= x <= ux
  342. //
  343. // Inputs:
  344. // A n by n matrix of quadratic coefficients
  345. // B n by 1 column of linear coefficients
  346. // known list of indices to known rows in Z
  347. // Y list of fixed values corresponding to known rows in Z
  348. // Aeq meq by n list of linear equality constraint coefficients
  349. // Beq meq by 1 list of linear equality constraint constant values
  350. // Aieq mieq by n list of linear inequality constraint coefficients
  351. // Bieq mieq by 1 list of linear inequality constraint constant values
  352. // lx n by 1 list of lower bounds [] implies -Inf
  353. // ux n by 1 list of upper bounds [] implies Inf
  354. // params struct of additional parameters (see below)
  355. // Z if not empty, is taken to be an n by 1 list of initial guess values
  356. // (see output)
  357. // Outputs:
  358. // Z n by 1 list of solution values
  359. // Returns true on success, false on error
  360. //
  361. // Benchmark: For a harmonic solve on a mesh with 325K facets, matlab 2.2
  362. // secs, igl/min_quad_with_fixed.h 7.1 secs
  363. //)igl_Qu8mg5v7";
  364. const char *__doc_igl_boundary_facets = R"igl_Qu8mg5v7(// BOUNDARY_FACETS Determine boundary faces (edges) of tetrahedra (triangles)
  365. // stored in T (analogous to qptoolbox's `outline` and `boundary_faces`).
  366. //
  367. // Templates:
  368. // IntegerT integer-value: e.g. int
  369. // IntegerF integer-value: e.g. int
  370. // Input:
  371. // T tetrahedron (triangle) index list, m by 4 (3), where m is the number of tetrahedra
  372. // Output:
  373. // F list of boundary faces, n by 3 (2), where n is the number of boundary faces
  374. //
  375. //)igl_Qu8mg5v7";
  376. const char *__doc_igl_compute_frame_field_bisectors = R"igl_Qu8mg5v7(// Compute bisectors of a frame field defined on mesh faces
  377. // Inputs:
  378. // V #V by 3 eigen Matrix of mesh vertex 3D positions
  379. // F #F by 3 eigen Matrix of face (triangle) indices
  380. // B1 #F by 3 eigen Matrix of face (triangle) base vector 1
  381. // B2 #F by 3 eigen Matrix of face (triangle) base vector 2
  382. // PD1 #F by 3 eigen Matrix of the first per face frame field vector
  383. // PD2 #F by 3 eigen Matrix of the second per face frame field vector
  384. // Output:
  385. // BIS1 #F by 3 eigen Matrix of the first per face frame field bisector
  386. // BIS2 #F by 3 eigen Matrix of the second per face frame field bisector
  387. //)igl_Qu8mg5v7";
  388. const char *__doc_igl_readOBJ = R"igl_Qu8mg5v7(// Read a mesh from an ascii obj file, filling in vertex positions, normals
  389. // and texture coordinates. Mesh may have faces of any number of degree
  390. //
  391. // Templates:
  392. // Scalar type for positions and vectors (will be read as double and cast
  393. // to Scalar)
  394. // Index type for indices (will be read as int and cast to Index)
  395. // Inputs:
  396. // str path to .obj file
  397. // Outputs:
  398. // V double matrix of vertex positions #V by 3
  399. // TC double matrix of texture coordinats #TC by 2
  400. // N double matrix of corner normals #N by 3
  401. // F #F list of face indices into vertex positions
  402. // FTC #F list of face indices into vertex texture coordinates
  403. // FN #F list of face indices into vertex normals
  404. // Returns true on success, false on errors)igl_Qu8mg5v7";
  405. 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
  406. // (MMatch), finds the cut_graph connecting the singularities (seams) and the
  407. // degree of the singularities singularity_index
  408. //
  409. // Input:
  410. // V #V by 3 list of mesh vertex positions
  411. // F #F by 3 list of faces
  412. // MMatch #F by 3 list of per corner integer mismatch
  413. // Outputs:
  414. // seams #F by 3 list of per corner booleans that denotes if an edge is a
  415. // seam or not
  416. //)igl_Qu8mg5v7";
  417. const char *__doc_igl_readDMAT = R"igl_Qu8mg5v7(See readDMAT for the documentation.)igl_Qu8mg5v7";
  418. const char *__doc_igl_doublearea = R"igl_Qu8mg5v7(// DOUBLEAREA computes twice the area for each input triangle[quad]
  419. //
  420. // Templates:
  421. // DerivedV derived type of eigen matrix for V (e.g. derived from
  422. // MatrixXd)
  423. // DerivedF derived type of eigen matrix for F (e.g. derived from
  424. // MatrixXi)
  425. // DeriveddblA derived type of eigen matrix for dblA (e.g. derived from
  426. // MatrixXd)
  427. // Inputs:
  428. // V #V by dim list of mesh vertex positions
  429. // F #F by simplex_size list of mesh faces (must be triangles or quads)
  430. // Outputs:
  431. // dblA #F list of triangle[quad] double areas (SIGNED only for 2D input)
  432. //
  433. // Known bug: For dim==3 complexity is O(#V + #F)!! Not just O(#F). This is a big deal
  434. // if you have 1million unreferenced vertices and 1 face)igl_Qu8mg5v7";
  435. const char *__doc_igl_doublearea_single = R"igl_Qu8mg5v7(// Single triangle in 2D!
  436. //
  437. // This should handle streams of corners not just single corners)igl_Qu8mg5v7";
  438. const char *__doc_igl_doublearea_quad = R"igl_Qu8mg5v7(// DOUBLEAREA_QUAD computes twice the area for each input quadrilateral
  439. //
  440. // Inputs:
  441. // V #V by dim list of mesh vertex positions
  442. // F #F by simplex_size list of mesh faces (must be quadrilaterals)
  443. // Outputs:
  444. // dblA #F list of quadrilateral double areas
  445. //)igl_Qu8mg5v7";
  446. const char *__doc_igl_min_quad_with_fixed_precompute = R"igl_Qu8mg5v7(// Known Bugs: rows of Aeq **should probably** be linearly independent.
  447. // During precomputation, the rows of a Aeq are checked via QR. But in case
  448. // they're not then resulting probably will no longer be sparse: it will be
  449. // slow.
  450. //
  451. // MIN_QUAD_WITH_FIXED Minimize quadratic energy
  452. //
  453. // 0.5*Z'*A*Z + Z'*B + C with
  454. //
  455. // constraints that Z(known) = Y, optionally also subject to the constraints
  456. // Aeq*Z = Beq
  457. //
  458. // Templates:
  459. // T should be a eigen matrix primitive type like int or double
  460. // Inputs:
  461. // A n by n matrix of quadratic coefficients
  462. // known list of indices to known rows in Z
  463. // Y list of fixed values corresponding to known rows in Z
  464. // Aeq m by n list of linear equality constraint coefficients
  465. // pd flag specifying whether A(unknown,unknown) is positive definite
  466. // Outputs:
  467. // data factorization struct with all necessary information to solve
  468. // using min_quad_with_fixed_solve
  469. // Returns true on success, false on error
  470. //
  471. // Benchmark: For a harmonic solve on a mesh with 325K facets, matlab 2.2
  472. // secs, igl/min_quad_with_fixed.h 7.1 secs
  473. //)igl_Qu8mg5v7";
  474. const char *__doc_igl_min_quad_with_fixed_solve = R"igl_Qu8mg5v7(// Solves a system previously factored using min_quad_with_fixed_precompute
  475. //
  476. // Template:
  477. // T type of sparse matrix (e.g. double)
  478. // DerivedY type of Y (e.g. derived from VectorXd or MatrixXd)
  479. // DerivedZ type of Z (e.g. derived from VectorXd or MatrixXd)
  480. // Inputs:
  481. // data factorization struct with all necessary precomputation to solve
  482. // B n by 1 column of linear coefficients
  483. // Y b by 1 list of constant fixed values
  484. // Beq m by 1 list of linear equality constraint constant values
  485. // Outputs:
  486. // Z n by cols solution
  487. // sol #unknowns+#lagrange by cols solution to linear system
  488. // Returns true on success, false on error)igl_Qu8mg5v7";
  489. const char *__doc_igl_min_quad_with_fixed = R"igl_Qu8mg5v7(See min_quad_with_fixed for the documentation.)igl_Qu8mg5v7";
  490. const char *__doc_igl_unique = R"igl_Qu8mg5v7(// Act like matlab's [C,IA,IC] = unique(X)
  491. //
  492. // Templates:
  493. // T comparable type T
  494. // Inputs:
  495. // A #A vector of type T
  496. // Outputs:
  497. // C #C vector of unique entries in A
  498. // IA #C index vector so that C = A(IA);
  499. // IC #A index vector so that A = C(IC);)igl_Qu8mg5v7";
  500. const char *__doc_igl_unique_rows = R"igl_Qu8mg5v7(// Act like matlab's [C,IA,IC] = unique(X,'rows')
  501. //
  502. // Templates:
  503. // DerivedA derived scalar type, e.g. MatrixXi or MatrixXd
  504. // DerivedIA derived integer type, e.g. MatrixXi
  505. // DerivedIC derived integer type, e.g. MatrixXi
  506. // Inputs:
  507. // A m by n matrix whose entries are to unique'd according to rows
  508. // Outputs:
  509. // C #C vector of unique rows in A
  510. // IA #C index vector so that C = A(IA,:);
  511. // IC #A index vector so that A = C(IC,:);)igl_Qu8mg5v7";
  512. const char *__doc_igl_arap_precomputation = R"igl_Qu8mg5v7(// Compute necessary information to start using an ARAP deformation
  513. //
  514. // Inputs:
  515. // V #V by dim list of mesh positions
  516. // F #F by simplex-size list of triangle|tet indices into V
  517. // dim dimension being used at solve time. For deformation usually dim =
  518. // V.cols(), for surface parameterization V.cols() = 3 and dim = 2
  519. // b #b list of "boundary" fixed vertex indices into V
  520. // Outputs:
  521. // data struct containing necessary precomputation)igl_Qu8mg5v7";
  522. const char *__doc_igl_arap_solve = R"igl_Qu8mg5v7(// Inputs:
  523. // bc #b by dim list of boundary conditions
  524. // data struct containing necessary precomputation and parameters
  525. // U #V by dim initial guess)igl_Qu8mg5v7";
  526. const char *__doc_igl_cross_field_missmatch = R"igl_Qu8mg5v7(// Inputs:
  527. // V #V by 3 eigen Matrix of mesh vertex 3D positions
  528. // F #F by 3 eigen Matrix of face (quad) indices
  529. // PD1 #F by 3 eigen Matrix of the first per face cross field vector
  530. // PD2 #F by 3 eigen Matrix of the second per face cross field vector
  531. // isCombed boolean, specifying whether the field is combed (i.e. matching has been precomputed.
  532. // If not, the field is combed first.
  533. // Output:
  534. // Handle_MMatch #F by 3 eigen Matrix containing the integer missmatch of the cross field
  535. // across all face edges
  536. //)igl_Qu8mg5v7";
  537. const char *__doc_igl_grad = R"igl_Qu8mg5v7(// Gradient of a scalar function defined on piecewise linear elements (mesh)
  538. // is constant on each triangle i,j,k:
  539. // grad(Xijk) = (Xj-Xi) * (Vi - Vk)^R90 / 2A + (Xk-Xi) * (Vj - Vi)^R90 / 2A
  540. // where Xi is the scalar value at vertex i, Vi is the 3D position of vertex
  541. // i, and A is the area of triangle (i,j,k). ^R90 represent a rotation of
  542. // 90 degrees
  543. //)igl_Qu8mg5v7";
  544. const char *__doc_igl_slice_into = R"igl_Qu8mg5v7(// Act like the matlab Y(row_indices,col_indices) = X
  545. //
  546. // Inputs:
  547. // X xm by xn rhs matrix
  548. // R list of row indices
  549. // C list of column indices
  550. // Y ym by yn lhs matrix
  551. // Output:
  552. // Y ym by yn lhs matrix, same as input but Y(R,C) = X)igl_Qu8mg5v7";
  553. const char *__doc_igl_n_polyvector = R"igl_Qu8mg5v7(// Inputs:
  554. // v0, v1 the two #3 by 1 vectors
  555. // normalized boolean, if false, then the vectors are normalized prior to the calculation
  556. // Output:
  557. // 3 by 3 rotation matrix that takes v0 to v1
  558. //)igl_Qu8mg5v7";
  559. const char *__doc_igl_harmonic = R"igl_Qu8mg5v7(// Compute k-harmonic weight functions "coordinates".
  560. //
  561. //
  562. // Inputs:
  563. // V #V by dim vertex positions
  564. // F #F by simplex-size list of element indices
  565. // b #b boundary indices into V
  566. // bc #b by #W list of boundary values
  567. // k power of harmonic operation (1: harmonic, 2: biharmonic, etc)
  568. // Outputs:
  569. // W #V by #W list of weights
  570. //)igl_Qu8mg5v7";
  571. const char *__doc_igl_boundary_loop = R"igl_Qu8mg5v7(// Compute list of ordered boundary loops for a manifold mesh.
  572. //
  573. // Templates:
  574. // Index index type
  575. // Inputs:
  576. // F #V by dim list of mesh faces
  577. // Outputs:
  578. // L list of loops where L[i] = ordered list of boundary vertices in loop i
  579. //)igl_Qu8mg5v7";
  580. const char *__doc_igl_comb_cross_field = R"igl_Qu8mg5v7(// Inputs:
  581. // V #V by 3 eigen Matrix of mesh vertex 3D positions
  582. // F #F by 4 eigen Matrix of face (quad) indices
  583. // PD1in #F by 3 eigen Matrix of the first per face cross field vector
  584. // PD2in #F by 3 eigen Matrix of the second per face cross field vector
  585. // Output:
  586. // PD1out #F by 3 eigen Matrix of the first combed cross field vector
  587. // PD2out #F by 3 eigen Matrix of the second combed cross field vector
  588. //)igl_Qu8mg5v7";
  589. const char *__doc_igl_invert_diag = R"igl_Qu8mg5v7(// Templates:
  590. // T should be a eigen sparse matrix primitive type like int or double
  591. // Inputs:
  592. // X an m by n sparse matrix
  593. // Outputs:
  594. // Y an m by n sparse matrix)igl_Qu8mg5v7";
  595. const char *__doc_igl_copyleft_comiso_miq = R"igl_Qu8mg5v7(// Inputs:
  596. // V #V by 3 list of mesh vertex 3D positions
  597. // F #F by 3 list of faces indices in V
  598. // PD1 #V by 3 first line of the Jacobian per triangle
  599. // PD2 #V by 3 second line of the Jacobian per triangle
  600. // (optional, if empty it will be a vector in the tangent plane orthogonal to PD1)
  601. // scale global scaling for the gradient (controls the quads resolution)
  602. // stiffness weight for the stiffness iterations
  603. // direct_round greedily round all integer variables at once (greatly improves optimization speed but lowers quality)
  604. // iter stiffness iterations (0 = no stiffness)
  605. // local_iter number of local iterations for the integer rounding
  606. // do_round enables the integer rounding (disabling it could be useful for debugging)
  607. // round_vertices id of additional vertices that should be snapped to integer coordinates
  608. // hard_features #H by 2 list of pairs of vertices that belongs to edges that should be snapped to integer coordinates
  609. //
  610. // Output:
  611. // UV #UV by 2 list of vertices in 2D
  612. // FUV #FUV by 3 list of face indices in UV
  613. //
  614. // TODO: rename the parameters name in the cpp consistenly
  615. // improve the handling of hard_features, right now it might fail in difficult cases)igl_Qu8mg5v7";
  616. const char *__doc_igl_copyleft_comiso_nrosy = R"igl_Qu8mg5v7(// Generate a N-RoSy field from a sparse set of constraints
  617. //
  618. // Inputs:
  619. // V #V by 3 list of mesh vertex coordinates
  620. // F #F by 3 list of mesh faces (must be triangles)
  621. // b #B by 1 list of constrained face indices
  622. // bc #B by 3 list of representative vectors for the constrained
  623. // faces
  624. // b_soft #S by 1 b for soft constraints
  625. // w_soft #S by 1 weight for the soft constraints (0-1)
  626. // bc_soft #S by 3 bc for soft constraints
  627. // N the degree of the N-RoSy vector field
  628. // soft the strenght of the soft contraints w.r.t. smoothness
  629. // (0 -> smoothness only, 1->constraints only)
  630. // Outputs:
  631. // R #F by 3 the representative vectors of the interpolated field
  632. // S #V by 1 the singularity index for each vertex (0 = regular))igl_Qu8mg5v7";