Tissue Forge C 0.2.1
Interactive, particle-based physics, chemistry and biology modeling and simulation environment
Loading...
Searching...
No Matches
tfCVertex.h
Go to the documentation of this file.
1/*******************************************************************************
2 * This file is part of Tissue Forge.
3 * Copyright (c) 2022-2024 T.J. Sego and Tien Comlekoglu
4 *
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU Lesser General Public License as published
7 * by the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 *
18 ******************************************************************************/
19
25#ifndef _WRAPS_C_VERTEX_SOLVER_TFCVERTEX_H_
26#define _WRAPS_C_VERTEX_SOLVER_TFCVERTEX_H_
27
28#include <tf_port_c.h>
29
30#include <tfCParticle.h>
31#include <tfC_io.h>
32
33// Handles
34
40 void *tfObj;
41};
42
43
45// Vertex //
47
48
55CAPI_DATA(HRESULT) tfVertexSolverVertexHandle_init(struct tfVertexSolverVertexHandleHandle *handle, int id);
56
64CAPI_DATA(HRESULT) tfVertexSolverVertexHandle_fromString(struct tfVertexSolverVertexHandleHandle *handle, const char *str);
65
72
79CAPI_DATA(HRESULT) tfVertexSolverVertexHandle_getId(struct tfVertexSolverVertexHandleHandle *handle, int *objId);
80
91 bool *result
92);
93
102 struct tfVertexSolverVertexHandleHandle *handle,
104 bool *result
105);
106
113CAPI_DATA(HRESULT) tfVertexSolverVertexHandle_objType(struct tfVertexSolverVertexHandleHandle *handle, int *label);
114
121
128CAPI_DATA(HRESULT) tfVertexSolverVertexHandle_destroyVertices(struct tfVertexSolverVertexHandleHandle **handles, unsigned int numObjs);
129
136CAPI_DATA(HRESULT) tfVertexSolverVertexHandle_validate(struct tfVertexSolverVertexHandleHandle *handle, bool *result);
137
144
152CAPI_DATA(HRESULT) tfVertexSolverVertexHandle_str(struct tfVertexSolverVertexHandleHandle *handle, char **str, unsigned int *numChars);
153
161CAPI_DATA(HRESULT) tfVertexSolverVertexHandle_toString(struct tfVertexSolverVertexHandleHandle *handle, char **str, unsigned int *numChars);
162
170
179 struct tfVertexSolverVertexHandleHandle *handle,
181 int idx
182);
183
192 struct tfVertexSolverVertexHandleHandle *handle,
195);
196
204
213 struct tfVertexSolverVertexHandleHandle *handle,
214 struct tfVertexSolverSurfaceHandleHandle *toInsert,
215 int idx
216);
217
226 struct tfVertexSolverVertexHandleHandle *handle,
227 struct tfVertexSolverSurfaceHandleHandle *toInsert,
228 struct tfVertexSolverSurfaceHandleHandle *toRemove
229);
230
237CAPI_DATA(HRESULT) tfVertexSolverVertexHandle_getPartId(struct tfVertexSolverVertexHandleHandle *handle, int *result);
238
247 struct tfVertexSolverVertexHandleHandle *handle,
248 struct tfVertexSolverBodyHandleHandle **objs,
249 int *numObjs
250);
251
260 struct tfVertexSolverVertexHandleHandle *handle,
262 int *numObjs
263);
264
273 struct tfVertexSolverVertexHandleHandle *handle,
274 tfFloatP_t *dir,
276);
277
286 struct tfVertexSolverVertexHandleHandle *handle,
287 tfFloatP_t *dir,
288 struct tfVertexSolverBodyHandleHandle *result
289);
290
301 struct tfVertexSolverVertexHandleHandle *handle,
303 int *numObjs
304);
305
312
322 struct tfVertexSolverVertexHandleHandle *handle,
324 struct tfVertexSolverSurfaceHandleHandle **result,
325 int *numObjs
326);
327
334CAPI_DATA(HRESULT) tfVertexSolverVertexHandle_getArea(struct tfVertexSolverVertexHandleHandle *handle, tfFloatP_t *result);
335
342CAPI_DATA(HRESULT) tfVertexSolverVertexHandle_getVolume(struct tfVertexSolverVertexHandleHandle *handle, tfFloatP_t *result);
343
350CAPI_DATA(HRESULT) tfVertexSolverVertexHandle_getMass(struct tfVertexSolverVertexHandleHandle *handle, tfFloatP_t *result);
351
358
366
373CAPI_DATA(HRESULT) tfVertexSolverVertexHandle_getPosition(struct tfVertexSolverVertexHandleHandle *handle, tfFloatP_t **result);
374
383 struct tfVertexSolverVertexHandleHandle *handle,
384 tfFloatP_t *pos,
385 bool updateChildren
386);
387
394CAPI_DATA(HRESULT) tfVertexSolverVertexHandle_getVelocity(struct tfVertexSolverVertexHandleHandle *handle, tfFloatP_t **result);
395
403 struct tfVertexSolverVertexHandleHandle *handle,
405);
406
414 struct tfVertexSolverVertexHandleHandle *handle,
415 struct tfVertexSolverSurfaceHandleHandle *toReplace
416);
417
425 struct tfVertexSolverVertexHandleHandle *handle,
426 struct tfVertexSolverBodyHandleHandle *toReplace
427);
428
437 struct tfVertexSolverVertexHandleHandle *handle,
438 struct tfVertexSolverVertexHandleHandle *toRemove,
439 tfFloatP_t lenCf
440);
441
453 struct tfVertexSolverVertexHandleHandle ***handles,
454 unsigned int numMerges,
455 unsigned int *numVertices,
456 tfFloatP_t lenCf
457);
458
467 struct tfVertexSolverVertexHandleHandle *handle,
470);
471
481 struct tfVertexSolverVertexHandleHandle *handle,
484 int numNbs
485);
486
501 struct tfVertexSolverVertexHandleHandle *handle,
502 tfFloatP_t *sep,
504);
505
506
508// Module functions //
510
517
524CAPI_DATA(HRESULT) tfVertexSolverCreateVertexByPartId(unsigned int &pid, int *objId);
525
532CAPI_DATA(HRESULT) tfVertexSolverCreateVertexByPosition(tfFloatP_t *position, int *objId);
533
540CAPI_DATA(HRESULT) tfVertexSolverCreateVertexByIOData(struct tfIoThreeDFVertexDataHandle *vdata, int *objId);
541
549CAPI_DATA(HRESULT) tfVertexSolverCreateVertexByPartIdA(unsigned int *pids, unsigned int numObjs, int **objIds);
550
558CAPI_DATA(HRESULT) tfVertexSolverCreateVertexByPositionA(tfFloatP_t **positions, unsigned int numObjs, int **objIds);
559
567CAPI_DATA(HRESULT) tfVertexSolverCreateVertexByIODataA(struct tfIoThreeDFVertexDataHandle **vdata, unsigned int numObjs, int **objIds);
568
569#endif // _WRAPS_C_VERTEX_SOLVER_TFCVERTEX_H_
Handle to a io::ThreeDFVertexData instance.
Definition tfC_io.h:70
Handle to a ParticleHandle instance.
Definition tfCParticle.h:111
Handle to a ParticleType instance.
Definition tfCParticle.h:119
Handle to a models::vertex::BodyHandle instance.
Definition tfCBody.h:57
Handle to a models::vertex::SurfaceHandle instance.
Definition tfCSurface.h:68
Handle to a models::vertex::VertexHandle instance.
Definition tfCVertex.h:39
HRESULT tfVertexSolverVertexHandle_updateConnectedVertices(struct tfVertexSolverVertexHandleHandle *handle)
Update internal connected vertex data.
HRESULT tfVertexSolverVertexHandle_destroyVertices(struct tfVertexSolverVertexHandleHandle **handles, unsigned int numObjs)
Destroy vertices.
HRESULT tfVertexSolverVertexHandle_particle(struct tfVertexSolverVertexHandleHandle *handle, struct tfParticleHandleHandle *result)
Get a handle to the underlying particle, if any.
HRESULT tfVertexSolverVertexHandle_replaceSurfaceAt(struct tfVertexSolverVertexHandleHandle *handle, struct tfVertexSolverSurfaceHandleHandle *toInsert, int idx)
Replace a surface at a location in the list of surfaces.
HRESULT tfVertexSolverVertexHandle_destroy(struct tfVertexSolverVertexHandleHandle *handle)
Destroy an instance.
HRESULT tfVertexSolverVertexHandle_definesSurface(struct tfVertexSolverVertexHandleHandle *handle, struct tfVertexSolverSurfaceHandleHandle *s, bool *result)
Test whether a vertex defines a surface.
HRESULT tfVertexSolverVertexHandle_getPosition(struct tfVertexSolverVertexHandleHandle *handle, tfFloatP_t **result)
Get the current position.
HRESULT tfVertexSolverVertexHandle_replaceSurface(struct tfVertexSolverVertexHandleHandle *handle, struct tfVertexSolverSurfaceHandleHandle *toReplace)
Replace a surface.
HRESULT tfVertexSolverVertexHandle_objType(struct tfVertexSolverVertexHandleHandle *handle, int *label)
Get the mesh object type.
HRESULT tfVertexSolverVertexHandle_getSurfaces(struct tfVertexSolverVertexHandleHandle *handle, struct tfVertexSolverSurfaceHandleHandle **objs, int *numObjs)
Get the surfaces defined by the vertex.
HRESULT tfVertexSolverVertexHandle_validate(struct tfVertexSolverVertexHandleHandle *handle, bool *result)
Validate the vertex.
HRESULT tfVertexSolverVertexHandle_split(struct tfVertexSolverVertexHandleHandle *handle, tfFloatP_t *sep, struct tfVertexSolverVertexHandleHandle *newObj)
Split a vertex into an edge.
HRESULT tfVertexSolverVertexHandle_mergeA(struct tfVertexSolverVertexHandleHandle ***handles, unsigned int numMerges, unsigned int *numVertices, tfFloatP_t lenCf)
Merge sets of vertices.
HRESULT tfVertexSolverVertexHandle_updateProperties(struct tfVertexSolverVertexHandleHandle *handle)
Update the properties of the underlying particle.
HRESULT tfVertexSolverMeshParticleType_get(struct tfParticleTypeHandle *handle)
Get the particle type of the solver.
HRESULT tfVertexSolverCreateVertexByPositionA(tfFloatP_t **positions, unsigned int numObjs, int **objIds)
Create vertices at positions.
HRESULT tfVertexSolverVertexHandle_destroyVertex(struct tfVertexSolverVertexHandleHandle *handle)
Destroy the vertex.
HRESULT tfVertexSolverVertexHandle_toString(struct tfVertexSolverVertexHandleHandle *handle, char **str, unsigned int *numChars)
Get a JSON string representation.
HRESULT tfVertexSolverVertexHandle_getPartId(struct tfVertexSolverVertexHandleHandle *handle, int *result)
Get the id of the underlying particle.
HRESULT tfVertexSolverVertexHandle_findBody(struct tfVertexSolverVertexHandleHandle *handle, tfFloatP_t *dir, struct tfVertexSolverBodyHandleHandle *result)
Find a body defined by this vertex.
HRESULT tfVertexSolverCreateVertexByPosition(tfFloatP_t *position, int *objId)
Create a vertex at a position.
HRESULT tfVertexSolverCreateVertexByIODataA(struct tfIoThreeDFVertexDataHandle **vdata, unsigned int numObjs, int **objIds)
Create vertices using I/O data.
HRESULT tfVertexSolverVertexHandle_sharedSurfaces(struct tfVertexSolverVertexHandleHandle *handle, struct tfVertexSolverVertexHandleHandle *other, struct tfVertexSolverSurfaceHandleHandle **result, int *numObjs)
Get the surfaces that this vertex and another vertex both define.
HRESULT tfVertexSolverVertexHandle_definesBody(struct tfVertexSolverVertexHandleHandle *handle, struct tfVertexSolverBodyHandleHandle *b, bool *result)
Test whether a vertex defines a body.
HRESULT tfVertexSolverVertexHandle_getArea(struct tfVertexSolverVertexHandleHandle *handle, tfFloatP_t *result)
Get the current area.
HRESULT tfVertexSolverVertexHandle_insertSurfaceBefore(struct tfVertexSolverVertexHandleHandle *handle, struct tfVertexSolverSurfaceHandleHandle *s, struct tfVertexSolverSurfaceHandleHandle *before)
Insert a surface before another surface.
HRESULT tfVertexSolverVertexHandle_getBodies(struct tfVertexSolverVertexHandleHandle *handle, struct tfVertexSolverBodyHandleHandle **objs, int *numObjs)
Get the bodies defined by the vertex.
HRESULT tfVertexSolverVertexHandle_init(struct tfVertexSolverVertexHandleHandle *handle, int id)
Initialize an instance.
HRESULT tfVertexSolverVertexHandle_insertBetweenNeighbors(struct tfVertexSolverVertexHandleHandle *handle, struct tfVertexSolverVertexHandleHandle *vf, struct tfVertexSolverVertexHandleHandle **nbs, int numNbs)
Insert a vertex between a vertex and each of a set of vertices.
HRESULT tfVertexSolverVertexHandle_fromString(struct tfVertexSolverVertexHandleHandle *handle, const char *str)
Create an instance from a JSON string representation.
HRESULT tfVertexSolverVertexHandle_getId(struct tfVertexSolverVertexHandleHandle *handle, int *objId)
Get the id of an instance.
HRESULT tfVertexSolverVertexHandle_setPosition(struct tfVertexSolverVertexHandleHandle *handle, tfFloatP_t *pos, bool updateChildren)
Set the current position.
HRESULT tfVertexSolverVertexHandle_replaceSurfaceWith(struct tfVertexSolverVertexHandleHandle *handle, struct tfVertexSolverSurfaceHandleHandle *toInsert, struct tfVertexSolverSurfaceHandleHandle *toRemove)
Replace a surface with another surface.
HRESULT tfVertexSolverVertexHandle_remove(struct tfVertexSolverVertexHandleHandle *handle, struct tfVertexSolverSurfaceHandleHandle *s)
Remove a surface.
HRESULT tfVertexSolverVertexHandle_str(struct tfVertexSolverVertexHandleHandle *handle, char **str, unsigned int *numChars)
Get a summary string.
HRESULT tfVertexSolverVertexHandle_getMass(struct tfVertexSolverVertexHandleHandle *handle, tfFloatP_t *result)
Get the current mass.
HRESULT tfVertexSolverVertexHandle_positionChanged(struct tfVertexSolverVertexHandleHandle *handle)
Update internal data due to a change in position.
HRESULT tfVertexSolverVertexHandle_insertSurfaceAt(struct tfVertexSolverVertexHandleHandle *handle, struct tfVertexSolverSurfaceHandleHandle *s, int idx)
Insert a surface at a location in the list of surfaces.
HRESULT tfVertexSolverVertexHandle_getVelocity(struct tfVertexSolverVertexHandleHandle *handle, tfFloatP_t **result)
Get the current velocity.
HRESULT tfVertexSolverVertexHandle_findSurface(struct tfVertexSolverVertexHandleHandle *handle, tfFloatP_t *dir, struct tfVertexSolverSurfaceHandleHandle *result)
Find a surface defined by this vertex.
HRESULT tfVertexSolverCreateVertexByIOData(struct tfIoThreeDFVertexDataHandle *vdata, int *objId)
Create a vertex using I/O data.
HRESULT tfVertexSolverVertexHandle_merge(struct tfVertexSolverVertexHandleHandle *handle, struct tfVertexSolverVertexHandleHandle *toRemove, tfFloatP_t lenCf)
Merge with a vertex. The passed vertex is destroyed.
HRESULT tfVertexSolverVertexHandle_insertBetween(struct tfVertexSolverVertexHandleHandle *handle, struct tfVertexSolverVertexHandleHandle *v1, struct tfVertexSolverVertexHandleHandle *v2)
Inserts a vertex between two vertices.
HRESULT tfVertexSolverVertexHandle_connectedVertices(struct tfVertexSolverVertexHandleHandle *handle, struct tfVertexSolverVertexHandleHandle **objs, int *numObjs)
Get the connected vertices.
HRESULT tfVertexSolverVertexHandle_getVolume(struct tfVertexSolverVertexHandleHandle *handle, tfFloatP_t *result)
Get the current volume.
HRESULT tfVertexSolverVertexHandle_addSurface(struct tfVertexSolverVertexHandleHandle *handle, struct tfVertexSolverSurfaceHandleHandle *s)
Add a surface.
HRESULT tfVertexSolverVertexHandle_replaceBody(struct tfVertexSolverVertexHandleHandle *handle, struct tfVertexSolverBodyHandleHandle *toReplace)
Replace a body.
HRESULT tfVertexSolverVertexHandle_transferBondsTo(struct tfVertexSolverVertexHandleHandle *handle, struct tfVertexSolverVertexHandleHandle *other)
Transfer all bonds to another vertex.
HRESULT tfVertexSolverCreateVertexByPartId(unsigned int &pid, int *objId)
Create a vertex using the id of an existing particle.
HRESULT tfVertexSolverCreateVertexByPartIdA(unsigned int *pids, unsigned int numObjs, int **objIds)
Create vertices using the id of an existing particles.