est-il une fonction en C ou C++ pour faire de “saturation” sur un entier

Je suis en train de faire quelques graphiques 3D et j'ai un océan ouvert. Pour cet océan, j'ai une matrice représentant l'état de la mer (c'est à dire la hauteur des vagues) pour un particulier rectangulaire paragraphe de la mer. Le reste de l'océan est à plat. Mon problème est que mon contrôlée de la mer, où il y a des vagues, est positionné au milieu de l'ouvrir à plat de la mer, et la discontinuité sur les bords de ma grille causes des mauvais objets. La raison pour laquelle je suis seulement en générant des vagues pour un paragraphe et non pas l'ensemble de la mer est parce que ma fonction de bruit est trop coûteux de calculer sur l'ensemble de la mer (et je sais que la solution la plus simple est d'utiliser un moins cher fonction de bruit comme simplex de bruit, mais ce n'est pas une option).

Avoir dit que ma question est assez simple. Si par exemple, j'ai une grille (aka matrice aka tableau 2d), de la taille 100x40, et je veux trouver la valeur pour la position 120x33, je veux simplement prendre le voisin le plus proche, qui serait 100x33. Donc, pour tout nombre qui se situe à l'extérieur d'une plage donnée, je veux que nombre de saturer à se situer dans la plage donnée. Est-il une fonction en C ou C++ qui fait cela?

Edit: les paramètres de position sont de type float

Je sais que je peux le faire avec un simple if, mais il semble juste comme quelque chose que les bibliothèques standard.

Il y a des instructions SSE qui prend en charge la saturation.
est-ce à entraîner le codage dans l'assemblée? aussi puis-je spécifier la plage ou juste saturer à des gammes de types de données primitifs?
Je pense que toute moderne de la machine doit être en mesure de faire toute une mer sans aucun problème. Mon logiciel (orcina.com/SoftwareProducts/OrcaFlex) n'a donc même si c'est un peu différent en ce qu'il tente de modéliser la physique réaliste.
Ils peuvent et ils le font, mais je reçois ma mer spectre à travers le réseau à partir de certains code MATLAB, ATM n'est pas compilé fonctionne donc environ 100 fois plus lent que le C indigènes, et dans MATLAB c'est plus difficile de le faire en temps réel pour l'ensemble de la mer. Si vous avez des idées sur la façon de le faire rapidement (200Hz) dans MATLAB en temps réel pour une grille avec ~1k points de données à l'aide de 38 superposées péché fonctions, je serais ravi de l'entendre.
le plus évident truc, c'est uniquement pour évaluer les fonctions trigonométriques à t0 et puis pour les t1, t2, etc. se servir de l'addition de la formule. De cette façon, vous avez juste à FP multiplication/addition et pas de trig.

OriginalL'auteur lms | 2010-12-06