miAPI.h



Fonction

Description

int miOpenDataFile(char* filename);

Ouverture d’un fichier de données 3D et affichage dans Motion Inspector.
Renvoie FALSE en cas d’erreur

void miCloseData();

Fermeture du fichier de données en cours

int miSave();

Enregistre le fichier (au format C3D). Renvoie TRUE en cas de succès (sinon FALSE)

int miSaveAs(char* name, int format);

Enregistre le fichiers en modifiant le nom ‘name ‘ ainsi que le format (1 : TXT, 2 :MatLab, 3 :C3D). Renvoie TRUE en cas de succès (sinon FALSE).

char* miGetDataFileName();

Renvoie le nom du fichier en cours (ouvert)

void miSetModelFileName(char* name);

Associe le fichier de données au modèle biomécanique ‘name’.

Fonctions relatives aux données

int miGetFrameCount();

Renvoie le nombre de frames du fichier

int miGetAnalogFrameCount();

Renvoie le nombre de lignes analogiques

int miGetDimension();

Renvoie le nombre de dimensions du fichier

double miGetRate();

Renvoie la fréquence d’échantillonnage des données cinématiques

double miGetAnalogRate();

Renvoie la fréquence d’échantillonnage des données analogiques

int miGetFirstFrame();

Renvoie la première image de la sélection

int miGetLastFrame();

Renvoie la dernière image de la sélection

void miSetFirstFrame(int frame);

Fixe la première image de la sélection

void miSetLastFrame(int frame);

Fixe la dernière image de la sélection

void miCutBorder(int first_frame, int last_frame);

Efface les données en dehors de la sélection définie par ‘first_frame’ et ‘last_frame

Manipulation des données

double miGetKineData(int frame, int marker, int axe);

Renvoie la valeur cinématique correspondante à l’image ‘frame’, pour le marqueur ‘marker’ et l’axe ‘axe

void miPutKineData(int frame, int marker, int axe, double data);

Modifie la valeur correspondante à l’image ‘frame’, pour le marqueur ‘marker’ et l’axe ‘axe

double miGetAnalogData(int lig, int col);

Renvoie la valeur analogique correspondante à la ligne ‘lig’ et à la colonne ‘col

void miPutAnalogData(int lig, int col, double data);

Modifie la valeur analogique de la ligne ‘lig’ et de la colonne ‘col’ par la valeur ‘value

double* miGetKineDataBuffer(int marker, int axe);

Renvoie un vecteur contenant les données d’un marqueur ‘marker’ pour l’axe ‘axe’. Ce vecteur doit être ensuite libéré par la fonction ‘free

void miPutKineDataBuffer(int marker, int axe, double* values, int count);

Sauve un vecteur de données dans un marqueur.

double* miGetAnaogDataBuffer(int col);

Renvoie un vecteur de données analogiques correspondant à la colonne ‘col

void miPutAnalogDataBuffer(int col, double* values, int count);

Sauve un vecteur de données analogiques dans une colonne ‘col

Fonctions relatives aux marqueurs

int miGetMarkerCount();

Renvoie le nombre de marqueurs du fichier

int miGetMarkerNum(char* name);

Renvoie le numéro d’un marqueur portant le nom ‘name’.

char* miGetMarkerName(int mkr);

Renvoie le nom du marqueur dont le numéro est ‘mkr’. Revoie NULL en cas d’erreur

int miRenameMarker(int mkr, char* name, char* unit, char* desc);

Renomme le marqueur ‘mkr’ avec ‘name’ pour nom, ‘unit’ pour unité et ‘desc’ comme description. ‘unit’ et ‘desc’ peuvent être NULL.

int miNewMarker(char* name, char* unit, char* description);

Création d’un nouveau marqueur portant le nom ‘name’ ‘unit’ pour unité et ‘desc’ comme description. ‘unit’ et ‘desc’ peuvent être NULL. Renvoie (TRUE) en cas de succès sinon FALSE.

int miDeleteMarker(int num);

Destruction du marqueur ayant pour numéro ‘mkr’. Renvoie TRUE en cas de succès, sinon FALSE.

Gestion des événements

int miGetEventCount();

Retourne le nombre d’événement enregistré

char* miGetEventName(int id);

Retourne le nom de l’événement correspondant à id. Retourne NULL en cas d’échec

int miGetEventFrameFromName(char*);

Retourne le numéro d’image correspondant au nom ‘name’ de l’événement

int miGetEventFrameFromId(int id);

Retourne le numéro d’image correspondant au à l’événement numéro ‘id’

char* miGetEventContext(int id);

Retourne le nom du contexte de l’événement id. Retourne NULL en cas d’échec

int miSetEventPosition(int frame_pos, char* name, int context_id, int icon_id);

Création d’un nouvel événement portant le nom ‘name’, avec une position correspondante à ‘frame_pos’, et pour contexte ‘context_id (0, 1 ou 2) et comme icône ‘icone_id’ (0, 1 ou 2)

int miDeleteEvent(int frame);

Destruction d’un événement correspondant à l’image ‘frame’.

Fonctions relatives aux données analogiques

int miGetAnalogCount();

Renvoie le nombre de canaux analogiques

char* miGetAnalogName(int analog);

Renvoie le nom du canal analogique ‘analog’. Renvoie NULL en cas d’échec.

int miNewAnalog(char* name, char* unit, char* desc);

Création d’un nouveau canal analogique portant le nom ‘name’ ‘unit’ pour unité et ‘desc’ comme description. ‘unit’ et ‘desc’ peuvent être NULL. Renvoie (TRUE) en cas de succès sinon FALSE.

int miRenameAnalog(int analog, char* name, char* unit, char* desc);

Renomme le canal analogique ‘analog’ avec ‘name’ pour nom, ‘unit’ pour unité et ‘desc’ comme description. ‘unit’ et ‘desc’ peuvent être NULL. Renvoie TRUE en cas de succès.

int miDeleteAnalog(int analog);

Destruction du canal anaologique ayant pour numéro ‘analog’. Renvoie TRUE en cas de succès, sinon FALSE.

Fonctions relatives aux données supplémentaires

void miNewAngle(char* name, char* unit, char* description);

Création d’un nouveau marqueur virtuel ‘name’ contenant des données angulaires.

void miNewScalar(char* name, char* unit, char* description);

Création d’un nouveau marqueur virtuel ‘name’ contenant des données scalaires.

void miNewForce(char* name, char* unit, char* description);

Création d’un nouveau marqueur virtuel ‘name’ contenant des données de forces.

void miNewMoment(char* name, char* unit, char* description);

Création d’un nouveau marqueur virtuel ‘name’ contenant des données de moments de forces.

void miNewPower(char* name, char* unit, char* description);

Création d’un nouveau marqueur virtuel ‘name’ contenant des données de puissance.

void miNewReaction(char* name, char* unit, char* description);

Création d’un nouveau marqueur virtuel ‘name’ contenant des données de forces (de réaction).

int miGetAngleCount();

Retourne le nombre de données angulaires

int miGetScalarCount();

Retourne le nombre de données scalaires

int miGetForceCount();

Retourne le nombre de données de forces

int miGetMomentCount();

Retourne le nombre de données de moments

int miGetPowerCount();

Retourne le nombre de données de puissance

int miGetReactionCount();

Retourne le nombre de données de réaction

char* miGetAngleName(int id);

Renvoie le nom de la donnée angulaire (id). Renvoie NULL en cas d’échec.

char* miGetScalarName(int id);

Renvoie le nom de la donnée scalaire (id). Renvoie NULL en cas d’échec.

char* miGetForceName(int id);

Renvoie le nom de la donnée de force (id). Renvoie NULL en cas d’échec.

char* miGetMomentName(int id);

Renvoie le nom de la donnée de moment (id). Renvoie NULL en cas d’échec.

char* miGetPowerName(int id);

Renvoie le nom de la donnée de puissance (id). Renvoie NULL en cas d’échec.

char* miGetReactionName(int id);

Renvoie le nom de la donnée de force de réaction (id). Renvoie NULL en cas d’échec.

Plateformes de Forces

int miGetForcePlateCount();

Renvoie le nombre de plateformes de forces du fichier

int miAddForcePlate(int type, int* channels, double* corners, double* origin);

Ajoute une plateforme de forces aux données du fichier. ‘type’ correspond au type de plateforme (généralement 2). ‘channels’ correspond au numéro des voies analogiques. La taille de ‘channels’ est au moins de 6 (Fx, Fy, Fz, Mx, My, Mz) . ‘corners’ correspond aux coordonnées 3D des 4 coins de la plateforme (dans l’ordre des coins). La taille de ‘corners’ est donc de 12 éléments (3x4). ‘origin’ correspond au coordonnées 3D (x,y,z) du centre de la plateforme dans le repère de celle-ci. La taille est donc de 3. Revoie TRUE en cas de succès, sinon FALSE.

int miGetForcePlateInfo(int num, int *type, int* channels, double* corners, double* origin);

Cette fonction permet de connaitre les informations relatives à la plateforme ‘num’.
Ces informations correspondent au type , au voies analogiques (channels[12]), à la position de chaque coins de la plateforme (corners[12]) ainsi qu’à la position du centre (origin[3]).

int miSetForcePlateInfo(int num, int type, int* channels, double* corners, double* origin);

Cette fonction permet de modifier les informations relatives à la plateforme ‘num’.
Ces informations correspondent au type , au voies analogiques (channels[12]), à la position de chaque coins de la plateforme (corners[12]) ainsi qu’à la position du centre (origin[3]).

double** miGetForcePlateData(int num, int same_rate, int* channels, int* frames);

Cette fonction renvoie un tableau de valeurs (double) correspondant aux données de la plateforme ‘num’. Si ‘same_rate’ est égale à TRUE, la fréquence des données sera la même que celle des données cinématiques. ‘channels’ et ’frames’ correspondent à la taille du tableau. ‘channels’ est égale à 9 : Fx, Fy, Fz, Mx, My, Mz, Xp, Yp, Zp. Ce tableau doit être libéré (free) après utilisation.

Autres Fonctions

char* miGetFileName(char* filter, char* title, char* path);

Ouvre une boite de dialogue permettant de choisir un fichier. ‘Filter’ représente le filtre de fichier (par exemple ‘*.c3d’) et ‘path’ représente le répertoire des fichiers

char** miGetFileList(char* filter, char* title, char* path, int* count);

Ouvre une boite de dialogue permettant la sélection de multiple fichiers en fonction du filtre ‘filter. Cette fonction renvoie un tableau de chaines de caractères contenant les noms des fichiers sélectionnées. Le nombre de fichiers est donnée par la variable ‘count’. Ce tableau doit être libéré (free) après utilisation.