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.
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
Vous devez vous connecter pour publier un commentaire.
OriginalL'auteur etarion
Et maintenant il y a, dans la forme de
std::pince
. Et je suis à peine sept ans de retard 🙂OriginalL'auteur Quentin
ISO/IEC JTC1 SC22 WG14 N1169 (Langages de programmation - C - Extensions de support des processeurs embarqués) indique une
_Sat
type de qualificatif pour saturer les types de données. Je n'ai jamais essayé de l'utiliser dans n'importe quel compilateur, mais il est inclus dans le GCC 4.x de la documentation.VC++ 2003, prend en charge MMX intrinsèques qui permettent de saturer l'arithmétique.
Qui ne devrait pas être une surprise puisque le poste est >6 ans. Je ne suis pas sur à maintenir des liens dans plus de 2000 réponses postées! Les principales conditions nécessaires à la recherche de MSDN ou Google ont été fournis. Documentation archivée pour VS2010 ici, et pour VS2015 ici - mais non plus bien classés. J'imagine en 2017.
OriginalL'auteur Clifford
Min et Max non?
Qui est facilement changé.
OriginalL'auteur OrangeDog
Ou si vous le souhaitez compliqué définit !
OriginalL'auteur Guillaume Charland-Arcand