Introduction
Dans ce laboratoire, vous apprendrez à calculer le produit scalaire et le produit vectoriel de vecteurs 3D en langage C. Le laboratoire couvre les étapes suivantes :
- Lecture des composantes des vecteurs : Développez un programme permettant aux utilisateurs d'entrer les composantes de deux vecteurs 3D.
- Calcul du produit scalaire ou vectoriel : Implémentez des fonctions pour calculer le produit scalaire et le produit vectoriel des vecteurs d'entrée.
- Affichage du résultat : Affichez le produit scalaire ou vectoriel calculé à l'utilisateur.
À la fin de ce laboratoire, vous aurez une compréhension solide des opérations vectorielles et de leur implémentation en C.
Lecture des composantes des vecteurs
Dans cette étape, vous apprendrez à lire les composantes des vecteurs en programmation C pour effectuer des calculs de produit scalaire et de produit vectoriel. Nous allons créer un programme qui permet aux utilisateurs d'entrer les composantes des vecteurs et de les stocker pour des opérations mathématiques ultérieures.
Tout d'abord, créons un nouveau fichier C pour nos opérations vectorielles :
cd ~/project
nano vector_operations.c
Maintenant, ajoutez le code suivant pour définir une fonction permettant de lire les composantes des vecteurs :
#include <stdio.h>
#define VECTOR_SIZE 3
// Fonction pour lire les composantes d'un vecteur
void readVector(float vector[], int size) {
printf("Entrez %d composantes du vecteur (séparées par un espace) : ", size);
for (int i = 0; i < size; i++) {
scanf("%f", &vector[i]);
}
}
int main() {
float vector1[VECTOR_SIZE];
float vector2[VECTOR_SIZE];
printf("Vecteur 1 :\n");
readVector(vector1, VECTOR_SIZE);
printf("Vecteur 2 :\n");
readVector(vector2, VECTOR_SIZE);
return 0;
}
Compilons et exécutons le programme pour tester l'entrée des vecteurs :
gcc vector_operations.c -o vector_operations
./vector_operations
Exemple de sortie :
Vecteur 1 :
Entrez 3 composantes du vecteur (séparées par un espace) : 1 2 3
Vecteur 2 :
Entrez 3 composantes du vecteur (séparées par un espace) : 4 5 6
Explication
Dans ce code :
- Nous définissons une constante
VECTOR_SIZEà 3 pour les vecteurs 3D. - La fonction
readVector()prend un tableau et sa taille en paramètres. scanf()est utilisé pour lire les composantes flottantes du vecteur.- La fonction
main()démontre la lecture de deux vecteurs.
Calcul du produit scalaire ou vectoriel
Dans cette étape, vous apprendrez à calculer les produits scalaire et vectoriel de vecteurs 3D en programmation C. Nous allons étendre le programme précédent pour inclure les opérations mathématiques sur les vecteurs.
Mettez à jour le fichier vector_operations.c avec le code suivant :
cd ~/project
nano vector_operations.c
Ajoutez l'implémentation pour les calculs du produit scalaire et vectoriel :
#include <stdio.h>
#define VECTOR_SIZE 3
void readVector(float vector[], int size) {
printf("Entrez %d composantes du vecteur (séparées par un espace) : ", size);
for (int i = 0; i < size; i++) {
scanf("%f", &vector[i]);
}
}
// Calcul du produit scalaire
float computeDotProduct(float vector1[], float vector2[], int size) {
float dotProduct = 0.0;
for (int i = 0; i < size; i++) {
dotProduct += vector1[i] * vector2[i];
}
return dotProduct;
}
// Calcul du produit vectoriel
void computeCrossProduct(float vector1[], float vector2[], float result[]) {
result[0] = vector1[1] * vector2[2] - vector1[2] * vector2[1];
result[1] = vector1[2] * vector2[0] - vector1[0] * vector2[2];
result[2] = vector1[0] * vector2[1] - vector1[1] * vector2[0];
}
int main() {
float vector1[VECTOR_SIZE];
float vector2[VECTOR_SIZE];
float crossProductResult[VECTOR_SIZE];
printf("Vecteur 1 :\n");
readVector(vector1, VECTOR_SIZE);
printf("Vecteur 2 :\n");
readVector(vector2, VECTOR_SIZE);
// Calcul et affichage du produit scalaire
float dotProduct = computeDotProduct(vector1, vector2, VECTOR_SIZE);
printf("Produit scalaire : %.2f\n", dotProduct);
// Calcul et affichage du produit vectoriel
computeCrossProduct(vector1, vector2, crossProductResult);
printf("Produit vectoriel : [%.2f, %.2f, %.2f]\n",
crossProductResult[0],
crossProductResult[1],
crossProductResult[2]);
return 0;
}
Compilez et exécutez le programme mis à jour :
gcc vector_operations.c -o vector_operations
./vector_operations
Exemple de sortie :
Vecteur 1 :
Entrez 3 composantes du vecteur (séparées par un espace) : 1 2 3
Vecteur 2 :
Entrez 3 composantes du vecteur (séparées par un espace) : 4 5 6
Produit scalaire : 32.00
Produit vectoriel : [-3.00, 6.00, -3.00]
Explication
computeDotProduct()calcule le produit scalaire en multipliant les composantes correspondantes des vecteurs.computeCrossProduct()calcule le produit vectoriel en utilisant la formule standard du produit vectoriel en 3D.- La fonction
main()démontre le calcul et l'affichage du produit scalaire et vectoriel.
Affichage du Résultat
Dans cette dernière étape, vous améliorerez le programme d'opérations vectorielles en ajoutant une sortie formatée et en créant une fonction pour afficher les résultats vectoriels de manière claire et lisible.
Mettez à jour le fichier vector_operations.c avec l'implémentation améliorée suivante :
cd ~/project
nano vector_operations.c
Ajoutez la nouvelle fonction d'affichage et modifiez le programme principal :
#include <stdio.h>
#define VECTOR_SIZE 3
void readVector(float vector[], int size) {
printf("Entrez %d composantes du vecteur (séparées par un espace) : ", size);
for (int i = 0; i < size; i++) {
scanf("%f", &vector[i]);
}
}
float computeDotProduct(float vector1[], float vector2[], int size) {
float dotProduct = 0.0;
for (int i = 0; i < size; i++) {
dotProduct += vector1[i] * vector2[i];
}
return dotProduct;
}
void computeCrossProduct(float vector1[], float vector2[], float result[]) {
result[0] = vector1[1] * vector2[2] - vector1[2] * vector2[1];
result[1] = vector1[2] * vector2[0] - vector1[0] * vector2[2];
result[2] = vector1[0] * vector2[1] - vector1[1] * vector2[0];
}
// Nouvelle fonction pour afficher le vecteur avec formatage
void printVector(const char* label, float vector[], int size) {
printf("%s: [", label);
for (int i = 0; i < size; i++) {
printf("%.2f%s", vector[i], (i < size - 1) ? ", " : "");
}
printf("]\n");
}
int main() {
float vector1[VECTOR_SIZE];
float vector2[VECTOR_SIZE];
float crossProductResult[VECTOR_SIZE];
// Saisie des vecteurs
printf("Saisie des vecteurs :\n");
printVector("Vecteur 1", vector1, VECTOR_SIZE);
readVector(vector1, VECTOR_SIZE);
printVector("Vecteur 2", vector2, VECTOR_SIZE);
readVector(vector2, VECTOR_SIZE);
// Calcul des résultats
float dotProduct = computeDotProduct(vector1, vector2, VECTOR_SIZE);
computeCrossProduct(vector1, vector2, crossProductResult);
// Affichage des résultats formatés
printf("\nRésultats des opérations vectorielles :\n");
printVector("Vecteur 1", vector1, VECTOR_SIZE);
printVector("Vecteur 2", vector2, VECTOR_SIZE);
printf("Produit scalaire : %.2f\n", dotProduct);
printVector("Produit vectoriel", crossProductResult, VECTOR_SIZE);
return 0;
}
Compilez et exécutez le programme mis à jour :
gcc vector_operations.c -o vector_operations
./vector_operations
Exemple de sortie :
Saisie des vecteurs :
Vecteur 1: [0.00, 0.00, 0.00]
Entrez 3 composantes du vecteur (séparées par un espace) : 1 2 3
Vecteur 2: [0.00, 0.00, 0.00]
Entrez 3 composantes du vecteur (séparées par un espace) : 4 5 6
Résultats des opérations vectorielles :
Vecteur 1: [1.00, 2.00, 3.00]
Vecteur 2: [4.00, 5.00, 6.00]
Produit scalaire : 32.00
Produit vectoriel: [-3.00, 6.00, -3.00]
Explication
- Fonction
printVector()ajoutée pour une sortie vectorielle formatée cohérente. - Fonction
main()améliorée pour démontrer la saisie des vecteurs et l'affichage des résultats. - Lisibilité améliorée des vecteurs et des résultats de calcul.
- Format d'affichage propre et professionnel pour les opérations vectorielles.
Résumé
Dans ce laboratoire, vous avez appris à lire les composantes vectorielles en programmation C et à effectuer des calculs de produit scalaire et vectoriel. Vous avez créé un programme permettant aux utilisateurs d'entrer les composantes des vecteurs, puis de calculer le produit scalaire ou vectoriel de ces vecteurs. Les points clés de l'apprentissage incluent la définition d'une fonction pour lire les composantes vectorielles, la mise en œuvre des formules de produit scalaire et vectoriel, et l'affichage des résultats.
Le programme démontre comment travailler avec des vecteurs 3D en C et appliquer des opérations vectorielles fondamentales. En suivant les instructions étape par étape, vous avez acquis une expérience pratique dans la manipulation de structures de données vectorielles et l'exécution d'opérations arithmétiques vectorielles courantes.



