### Author Topic: Vector Maths Library...  (Read 5015 times)

#### bigsofty

• Community Developer
• Prof. Inline
•      • • Posts: 2645 ##### Vector Maths Library...
« on: 2007-Mar-28 »
Could some kind soul add German language comments plz? Code: (glbasic) [Select]
`// --------------------------------- //// Project: VectorLIB// Start: Wednesday, March 28, 2007// IDE Version: 4.132FUNCTION setup_veclib: //used TO normalize vectorGLOBAL vector_tol = 0.0001ENDFUNCTIONTYPE Tvector x y z magnitudeENDTYPEFUNCTION vector_calcMagnitude: vec AS Tvector //calc the magnitude of a vector AND stor in vector vec.magnitude=SQR(vec.x*vec.x + vec.y*vec.y + vec.z*vec.z)ENDFUNCTIONFUNCTION vector_normalize: vec AS Tvector    LOCAL m //normalize a vector so it's length = 1 AND apply tolerance based on our constant tolerance value m=SQR(SQR(vec.x*vec.x + vec.y*vec.y + vec.z*vec.z) ) IF m<= vector_tol THEN m=1 vec.x=vec.x/m vec.y=vec.y/m vec.z=vec.z/m IF ABS(vec.x) IF ABS(vec.y) IF ABS(vec.z)ENDFUNCTIONFUNCTION vector_reverse: vec AS Tvector //reverse a vector vec.x=-vec.x vec.y=-vec.y vec.z=-vec.zENDFUNCTIONFUNCTION vector_add AS Tvector: vec1 AS Tvector, vec2 AS Tvector //add two vectors together AND RETURN the resulting vector LOCAL result AS Tvector result.x=vec1.x+vec2.x result.y=vec1.y+vec2.y result.z=vec1.z+vec2.z RETURN resultENDFUNCTIONFUNCTION vector_subtract AS Tvector: vec1 AS Tvector, vec2 AS Tvector //subtract vec1 from vec2 AND RETURN the resulting vector LOCAL result AS Tvector result.x=vec1.x-vec2.x result.y=vec1.y-vec2.y result.z=vec1.z-vec2.z RETURN resultENDFUNCTIONFUNCTION vector_scalarMultiply AS Tvector: vec1 AS Tvector, scale //scalar multiplication of a vector with result returned AS new vector //used TO scale a vector by 'scale' LOCAL result AS Tvector result.x=vec1.x*scale result.y=vec1.y*scale result.z=vec1.z*scale RETURN resultENDFUNCTIONFUNCTION vector_scalarDivision AS Tvector: vec1 AS Tvector, scale //scalar division of a vector with result returned AS new vector //used TO scale a vector LOCAL result AS Tvector result.x=vec1.x/scale result.y=vec1.y/scale result.z=vec1.z/scale RETURN resultENDFUNCTIONFUNCTION vector_conjugate AS Tvector: vec1 AS Tvector //conjugate operator takes the negative of each vector component //can be used when subtracting one vector from another OR FOR //reversing the direction of a vector. //applying conjugate is the same AS reversing a vector //returns a new vector LOCAL result AS Tvector result.x=-vec1.x result.y=-vec1.y result.z=-vec1.z RETURN resultENDFUNCTIONFUNCTION vector_crossProduct AS Tvector: vec1 AS Tvector, vec2 AS Tvector //takes vec1 AND vec2 AND returns the cross product vec1 X vec2 //the cross product is a vector perpendicular TO both vec1 AND vec2 //this is the normal of 2 vectors LOCAL result AS Tvector result.x=(vec1.y*vec2.z) - (vec1.z*vec2.y) result.y=(vec1.z*vec2.x) - (vec1.x*vec2.z) result.z=(vec1.x*vec2.y) - (vec1.y*vec2.x) RETURN resultENDFUNCTIONFUNCTION vector_dotProduct: vec1 AS Tvector, vec2 AS Tvector //calculate AND RETURN the dot product of 2 vectors (distance) LOCAL result result=(vec1.x*vec2.x)+(vec1.y*vec2.y)+(vec1.z*vec2.z) RETURN resultENDFUNCTIONFUNCTION vector_tripleScalarProduct: vec1 AS Tvector, vec2 AS Tvector, vec3 AS Tvector //calculate the triple scalar FUNCTION AND RETURN it LOCAL result result=           vec1.x * ( (vec2.y*vec3.z ) - (vec2.z * vec3.y) ) result=result + ( vec1.y * ( (-vec2.x*vec3.z) + (vec2.z * vec3.x) ) ) result=result + ( vec1.z * ( ( vec2.x*vec3.y) + (vec2.y * vec3.x) ) ) RETURN resultENDFUNCTION`
Cheers,

Ian.

“It is practically impossible to teach good programming style to students that have had prior exposure to BASIC.  As potential programmers, they are mentally mutilated beyond hope of regeneration.”
(E. W. Dijkstra)

#### bigsofty

• Community Developer
• Prof. Inline
•      • • Posts: 2645 ##### Vector Maths Library...
« Reply #1 on: 2007-Mar-29 »
This library shows a bug in the 'jumps' window of the IDE.

When a return type is defined in the function name "FUNCTION vector_add AS Tvector:" the jump window shows the function name as "Tvector"... so in the case of this library there are six jumps all called "Tvector"... the actual jump works fine though.
Cheers,

Ian.

“It is practically impossible to teach good programming style to students that have had prior exposure to BASIC.  As potential programmers, they are mentally mutilated beyond hope of regeneration.”
(E. W. Dijkstra)

#### Kitty Hello

• code monkey
• Prof. Inline
•       • • Posts: 10725
• here on my island the sea says 'hello' ##### Vector Maths Library...
« Reply #2 on: 2007-Mar-29 »
Doh! Thank you.

#### Hemlos

• To boldy go where no pixel has gone before!
• Global Moderator
• Prof. Inline
•       • • Posts: 1635
• Particle Hawk ##### Re: Vector Maths Library...
« Reply #3 on: 2009-Jul-06 »
Code: (glbasic) [Select]
`IF ABS(vec.x) IF ABS(vec.y) IF ABS(vec.z)ENDFUNCTION`
This is in the first  normalize function, i dont think its right

Other than that, this library will be useful in making my flight simulator, possibly, later this year Volume_of_Earth(km^3) = 4/3*3.14*POW(6371.392896,3)