Revision: 55341
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at February 3, 2012 05:55 by binaryadder
Initial Code
#include <stdio.h>
struct vector {
float x;
float y;
float z;
};
void printVec(struct vector vec){
printf("x: %f\ny: %f\nz: %f\n\n", vec.x, vec.y, vec.z);
}
void addVec(struct vector op1, struct vector op2, struct vector *result){
result->x = op1.x + op2.x;
result->y = op1.y + op2.y;
result->z = op1.z + op2.z;
}
void initVec(float x, float y, float z, struct vector *vec){
vec->x = x; vec->y = y; vec->z = z;
}
void multVec(float scalar, struct vector *vec){
vec->x *= scalar; vec->y *= scalar; vec->z *= scalar;
}
float dotVec(struct vector A, struct vector B){
return ((A.x * B.x) + (A.y * B.y) + (A.z * B.z));
}
void crossVec(struct vector A, struct vector B, struct vector *C){
C->x = ((A.y * B.z) - (A.z * B.y));
C->y = ((A.z * B.x) - (A.x * B.z));
C->z = ((A.x * B.y) - (A.y * B.x));
}
void main(){
struct vector A;
struct vector B;
struct vector C;
initVec(1.0, 2.0, 3.0, &A);
initVec(2.0, 3.0, 4.0, &B);
printf("Vector A:\n");
printVec(A);
printf("Vector B:\n");
printVec(B);
printf("Adding A and B gives the vector:\n");
addVec(A, B, &C);
printVec(C);
printf("Dot product of A and B is %f.\n\n", dotVec(A, B));
printf("Cross product of A and B gives the vector:\n");
crossVec(A, B, &C);
printVec(C);
printf("Multiplying A by the scalar quantity 5.0 gives the vector:\n");
multVec(5.0, &A);
printVec(A);
}
Initial URL
Initial Description
Output: Vector A: x: 1.000000 y: 2.000000 z: 3.000000 Vector B: x: 2.000000 y: 3.000000 z: 4.000000 Adding A and B gives the vector: x: 3.000000 y: 5.000000 z: 7.000000 Dot product of A and B is 20.000000. Cross product of A and B gives the vector: x: -1.000000 y: 2.000000 z: -1.000000 Multiplying A by the scalar quantity 5.0 gives the vector: x: 5.000000 y: 10.000000 z: 15.000000
Initial Title
Vector Operations
Initial Tags
Initial Language
C