Table of Contents
Génération de nombres aléatoires et manipulation de vecteurs en JavaScript
Introduction
La génération de nombres aléatoires est une tâche courante dans le développement de jeux, simulations ou autres applications nécessitant un comportement imprévisible. De même, la manipulation de vecteurs est essentielle pour les applications graphiques, les jeux, et bien d’autres cas d’utilisation. Dans ce tutoriel, nous allons aborder les deux sujets en profondeur, avec des exemples de code concis et pratiques.
Génération de nombres aléatoires
La fonction Math.random() génère un nombre aléatoire compris entre 0 (inclus) et 1 (exclus). Pour obtenir une gamme de valeurs plus large, on peut additionner plusieurs appels à Math.random(). Cependant, cela peut devenir rapidement compliqué. Voici une fonction qui permet de sélectionner la variance souhaitée :
/**
* Génère un nombre aléatoire avec la variance v.
*
* @param {number} v - Nombre d'appels à Math.random() additionnés.
*/
function randomG(v) {
let r = 0;
for (var i = v; i > 0; i--) {
r += Math.random();
}
return r / v;
}
En utilisant cette fonction, vous pouvez obtenir des nombres aléatoires avec une gamme plus large en ajustant la valeur de v.
Manipulation de vecteurs
Direction d’un vecteur ou d’une ligne
La fonction Math.atan2() permet de calculer l’angle entre deux points. Elle prend en compte le sens des aiguilles d’une montre pour les angles positifs.
// Calcul du direction d'un vecteur
var vec = { x: 4, y: 3 };
var dir = Math.atan2(vec.y, vec.x);
// Calcul de la direction d'une ligne
var line = { p1: { x: 100, y: 128 }, p2: { x: 320, y: 256 } };
var dir = Math.atan2(line.p2.y - line.p1.y, line.p2.x - line.p1.x);
Création d’un vecteur à partir de la direction et de la distance
La fonction Math.cos() permet de calculer la composante x d’un vecteur donné sa direction en radians et sa longueur. De même, la fonction Math.sin() permet de calculer la composante y.
// Création d'un vecteur à partir de la direction et de la distance
var dir = 1.4536; // direction en radians
var dist = 200;
var vec = {};
vec.x = Math.cos(dir) * dist;
vec.y = Math.sin(dir) * dist;
Calcul de la distance entre deux points
La fonction Math.hypot() permet de calculer la distance entre deux points. Elle prend en compte les composantes x et y du vecteur qui les relie.
// Calcul de la distance entre deux points
var v1 = { x: 10, y: 5 };
var v2 = { x: 20, y: 10 };
var distance = Math.hypot(v2.x - v1.x, v2.y - v1.y);
Fonctions périodiques
Les fonctions Math.sin() et Math.cos() sont cycliques avec une période de 2*PI radians (360 degrés). Elles sont utiles pour créer des ondes périodiques.
// Création d'une onde simple
function oscillator(time, frequency = 1) {
return Math.sin(time * 2 * Math.PI * frequency);
}
Conclusion
Dans cet article, nous avons vu comment générer des nombres aléatoires avec une gamme plus large et comment manipuler les vecteurs pour calculer la direction d’un vecteur ou d’une ligne, créer un vecteur à partir de la direction et de la distance, calculer la distance entre deux points, et créer des fonctions périodiques. Ces fonctionnalités sont essentielles dans beaucoup d’applications, et nous espérons que cet article vous a aidé à les comprendre et à les utiliser correctement.
Prochaines étapes
- Explorer d’autres fonctionnalités mathématiques disponibles en JavaScript.
- Utiliser ces connaissances pour résoudre des problèmes spécifiques dans vos applications.
In-Article Ad
Dev Mode
Tags
Mahmoud DEVO
Senior Full-Stack Developer
I'm a passionate full-stack developer with 10+ years of experience building scalable web applications. I write about Vue.js, Node.js, PostgreSQL, and modern DevOps practices.
Enjoyed this article?
Subscribe to get more tech content delivered to your inbox.
Related Articles
Manipulation des dates en JavaScript : UTC, conversion et formatage
Guide complet sur les dates JavaScript : conversion en chaine, creation de dates UTC, methodes setUTC et bonnes pratiques pour eviter les problemes de fuseaux.
La comparaison équivalente en JavaScript : une analyse appro
Here's a compelling meta description that summarizes the main value proposition, includes a subtle call-to-action, and meets the 150-160 character requirement:
Analyse des Dependances JavaScript : Guide npm audit et CI/CD
Securisez vos projets JS avec npm audit. Detectez les vulnerabilites, corrigez-les et integrez l'analyse dans votre pipeline GitHub Actions.