summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorProgramerus <alcadeias95@gmail.com>2012-03-23 21:37:55 +0100
committerProgramerus <alcadeias95@gmail.com>2012-03-23 21:37:55 +0100
commitc0b77d38eb5a1d7f2d33783cfa0336bff5e4320a (patch)
tree2c135eaa26fb8fde82152d76e62eef7d59d6881d /src
parent39f32f2a1487ab7362b366a8851757c8151696bc (diff)
downloadcolobot-c0b77d38eb5a1d7f2d33783cfa0336bff5e4320a.tar.gz
colobot-c0b77d38eb5a1d7f2d33783cfa0336bff5e4320a.tar.bz2
colobot-c0b77d38eb5a1d7f2d33783cfa0336bff5e4320a.zip
Comments translated from French to English.
Diffstat (limited to 'src')
-rw-r--r--src/math3d.cpp185
1 files changed, 90 insertions, 95 deletions
diff --git a/src/math3d.cpp b/src/math3d.cpp
index c18efa7..492c9b3 100644
--- a/src/math3d.cpp
+++ b/src/math3d.cpp
@@ -12,7 +12,9 @@
// * GNU General Public License for more details.
// *
// * You should have received a copy of the GNU General Public License
-// * along with this program. If not, see http://www.gnu.org/licenses/.// math3d.cpp
+// * along with this program. If not, see http://www.gnu.org/licenses/.
+
+// math3d.cpp
#define STRICT
#define D3D_OVERLOADS
@@ -29,7 +31,7 @@
-// Retourne TRUE si 2 nombres sont presques égaux.
+// Returns TRUE if two numbers are nearly equal.
BOOL IsEqual(float a, float b)
{
@@ -37,7 +39,7 @@ BOOL IsEqual(float a, float b)
}
-// Retourne la valeur minimale.
+// Returns the minimum value.
inline float Min(float a, float b)
{
@@ -61,7 +63,7 @@ inline float Min(float a, float b, float c, float d, float e)
}
-// Retourne la valeur maximale.
+// Returns the maximum value.
inline float Max(float a, float b)
{
@@ -85,7 +87,7 @@ inline float Max(float a, float b, float c, float d, float e)
}
-// Retourne la valeur normalisée (0..1).
+// Returns the normalized value (0 .. 1).
inline float Norm(float a)
{
@@ -95,7 +97,7 @@ inline float Norm(float a)
}
-// Retourne la valeur absolue d'un nombre.
+// Returns the absolute value of a number.
inline float Abs(float a)
{
@@ -103,7 +105,7 @@ inline float Abs(float a)
}
-// Permute deux entiers.
+// Swaps two integers.
inline void Swap(int &a, int &b)
{
@@ -114,7 +116,7 @@ inline void Swap(int &a, int &b)
b = c;
}
-// Permute deux réels.
+// Swaps two real numbers.
inline void Swap(float &a, float &b)
{
@@ -125,7 +127,7 @@ inline void Swap(float &a, float &b)
b = c;
}
-// Permute deux points.
+// Permutes two points.
inline void Swap(FPOINT &a, FPOINT &b)
{
@@ -136,17 +138,16 @@ inline void Swap(FPOINT &a, FPOINT &b)
b = c;
}
-// Retourne le modulo d'un nombre flottant.
+// Returns the modulo of a floating point number.
// Mod(8.1, 4) = 0.1
-// Mod(n, 1) = partie fractionnaire de n
+// Mod(n, 1) = fractional part of n
inline float Mod(float a, float m)
{
return a - ((int)(a/m))*m;
}
-// Retourne un angle normalisé, c'est-à-dire compris entre
-// 0 et 2*PI.
+// Returns a normalized angle, that is in other words between 0 and 2 * PI.
inline float NormAngle(float angle)
{
@@ -161,7 +162,7 @@ inline float NormAngle(float angle)
}
}
-// Teste si un angle est compris entre 2 bornes.
+// Test if a angle is between two terminals.
BOOL TestAngle(float angle, float min, float max)
{
@@ -180,8 +181,8 @@ BOOL TestAngle(float angle, float min, float max)
}
-// Calcule l'angle permettant de tourner de l'angle a vers l'angle g.
-// Un angle positif est anti-horaire (CCW).
+// Calculates the angle to rotate the angle a to the angle g.
+// A positive angle is counterclockwise (CCW).
float Direction(float a, float g)
{
@@ -200,9 +201,9 @@ float Direction(float a, float g)
}
-// Fait tourner un point autour d'un centre.
-// L'angle est exprimé en radians.
-// Un angle positif est anti-horaire (CCW).
+// Rotates a point around a center.
+// The angle is in radians.
+// A positive angle is counterclockwise (CCW).
FPOINT RotatePoint(FPOINT center, float angle, FPOINT p)
{
@@ -219,9 +220,9 @@ FPOINT RotatePoint(FPOINT center, float angle, FPOINT p)
return b;
}
-// Fait tourner un point autour de l'origine.
-// L'angle est exprimé en radians.
-// Un angle positif est anti-horaire (CCW).
+// Rotates a point around the origin.
+// The angle is in radians.
+// A positive angle is counterclockwise (CCW).
FPOINT RotatePoint(float angle, FPOINT p)
{
@@ -233,9 +234,9 @@ FPOINT RotatePoint(float angle, FPOINT p)
return a;
}
-// Fait tourner un vecteur (dist;0).
-// L'angle est exprimé en radians.
-// Un angle positif est anti-horaire (CCW).
+// Rotates a vector (dist, 0).
+// The angle is in radians.
+// A positive angle is counterclockwise (CCW).
FPOINT RotatePoint(float angle, float dist)
{
@@ -247,9 +248,9 @@ FPOINT RotatePoint(float angle, float dist)
return a;
}
-// Calcule l'angle d'un triangle rectangle.
-// L'angle est anti-horaire (CCW), compris entre 0 et 2*PI.
-// Pour obtenir un angle horaire (CW), il suffit de passer -y.
+// Calculates the angle of a right triangle.
+// The angle is counterclockwise (CCW), between 0 and 2 * PI.
+// For an angle clockwise (CW), just go ahead.
//
// ^
// |
@@ -317,9 +318,9 @@ float RotateAngle(float x, float y)
#endif
}
-// Calcule l'angle entre deux points et un centre.
-// L'angle est exprimé en radians.
-// Un angle positif est anti-horaire (CCW).
+// Calculates the angle between two points and one center.
+// The angle is in radians.
+// A positive angle is counterclockwise (CCW).
float RotateAngle(FPOINT center, FPOINT p1, FPOINT p2)
{
@@ -342,7 +343,7 @@ float RotateAngle(FPOINT center, FPOINT p1, FPOINT p2)
return a;
}
-// Retourne py placé sur la droite ab.
+// Returns py up on the line ab.
float MidPoint(FPOINT a, FPOINT b, float px)
{
@@ -354,14 +355,14 @@ float MidPoint(FPOINT a, FPOINT b, float px)
return (b.y-a.y)*(px-a.x)/(b.x-a.x)+a.y;
}
-// Avance de "dist" le long du segment p1-p2.
+// Advance "dist" along the segment p1-p2.
D3DVECTOR SegmentDist(const D3DVECTOR &p1, const D3DVECTOR &p2, float dist)
{
return p1+Normalize(p2-p1)*dist;
}
-// Vérifie si un point est dans un triangle.
+// Check if a point is inside a triangle.
BOOL IsInsideTriangle(FPOINT a, FPOINT b, FPOINT c, FPOINT p)
{
@@ -388,7 +389,7 @@ BOOL IsInsideTriangle(FPOINT a, FPOINT b, FPOINT c, FPOINT p)
return TRUE;
}
-// Calcule l'intersection "i" de la droite "de" avec le plan "abc".
+// Calculates the intersection "i" right "of" the plan "abc".
BOOL Intersect(D3DVECTOR a, D3DVECTOR b, D3DVECTOR c,
D3DVECTOR d, D3DVECTOR e, D3DVECTOR &i)
@@ -411,8 +412,8 @@ BOOL Intersect(D3DVECTOR a, D3DVECTOR b, D3DVECTOR c,
return TRUE;
}
-// Calcule l'intersection de la droite passant par p(x,z) parallèle
-// à l'axe y, avec le plan abc. Retourne p.y.
+// Calculates the intersection of the straight line passing through p (x, z)
+// parallel to the y axis, with the plane abc. Returns p.y.
BOOL IntersectY(D3DVECTOR a, D3DVECTOR b, D3DVECTOR c, D3DVECTOR &p)
{
@@ -443,9 +444,9 @@ BOOL IntersectY(D3DVECTOR a, D3DVECTOR b, D3DVECTOR c, D3DVECTOR &p)
}
-// Fait tourner un point autour d'un centre dans le plan.
-// L'angle est exprimé en radians.
-// Un angle positif est anti-horaire (CCW).
+// Rotates a point around a center in the plan.
+// The angle is in radians.
+// A positive angle is counterclockwise (CCW).
void RotatePoint(float cx, float cy, float angle, float &px, float &py)
{
@@ -461,9 +462,9 @@ void RotatePoint(float cx, float cy, float angle, float &px, float &py)
py = cy+ay;
}
-// Fait tourner un point autour d'un centre dans l'espace.
-// L'angles sont exprimés en radians.
-// Un angle positif est anti-horaire (CCW).
+// Rotates a point around a center in space.
+// The angle is in radians.
+// A positive angle is counterclockwise (CCW).
void RotatePoint(D3DVECTOR center, float angleH, float angleV, D3DVECTOR &p)
{
@@ -482,9 +483,9 @@ void RotatePoint(D3DVECTOR center, float angleH, float angleV, D3DVECTOR &p)
p.z = center.z+b.z;
}
-// Fait tourner un point autour d'un centre dans l'espace.
-// L'angles sont exprimés en radians.
-// Un angle positif est anti-horaire (CCW).
+// Rotates a point around a center in space.
+// The angle is in radians.
+// A positive angle is counterclockwise (CCW).
void RotatePoint2(D3DVECTOR center, float angleH, float angleV, D3DVECTOR &p)
{
@@ -507,8 +508,8 @@ void RotatePoint2(D3DVECTOR center, float angleH, float angleV, D3DVECTOR &p)
p.z = center.z+b.z;
}
-// Calcul le point de vue permettant de regarder un centre selon deux
-// angles et à une certaine distance.
+// Calculation point of view to look at a center
+// two angles and a distance.
D3DVECTOR RotateView(D3DVECTOR center, float angleH, float angleV, float dist)
{
@@ -527,7 +528,7 @@ D3DVECTOR RotateView(D3DVECTOR center, float angleH, float angleV, float dist)
return eye+center;
}
-// Calcule le point d'arrivée.
+// Calculates the end point.
D3DVECTOR LookatPoint( D3DVECTOR eye, float angleH, float angleV, float length )
{
@@ -544,7 +545,7 @@ D3DVECTOR LookatPoint( D3DVECTOR eye, float angleH, float angleV, float length )
}
-// Retourne la distance entre deux points.
+// Returns the distance between two points.
inline float Length(FPOINT a, FPOINT b)
{
@@ -552,21 +553,21 @@ inline float Length(FPOINT a, FPOINT b)
(a.y-b.y)*(a.y-b.y) );
}
-// Retourne l'hypothénuse d'un triangle rectangle.
+// Returns the hypotenuse of a right triangle.
inline float Length(float x, float y)
{
return sqrtf( (x*x) + (y*y) );
}
-// Retourne la longueur d'un vecteur.
+// Returns the length of a vector.
inline float Length(const D3DVECTOR &u)
{
return sqrtf( (u.x*u.x) + (u.y*u.y) + (u.z*u.z) );
}
-// Retourne la distance entre deux points.
+// Returns the distance between two points.
inline float Length(const D3DVECTOR &a, const D3DVECTOR &b)
{
@@ -575,7 +576,7 @@ inline float Length(const D3DVECTOR &a, const D3DVECTOR &b)
(a.z-b.z)*(a.z-b.z) );
}
-// Retourne la distance "à plat" entre deux points.
+// Returns the distance "a flat" between two points.
inline float Length2d(const D3DVECTOR &a, const D3DVECTOR &b)
{
@@ -584,7 +585,7 @@ inline float Length2d(const D3DVECTOR &a, const D3DVECTOR &b)
}
-// Retourne l'angle formé par deux vecteurs.
+// Returns the angle formed by two vectors.
float Angle( D3DVECTOR u, D3DVECTOR v )
{
@@ -609,7 +610,7 @@ float Angle( D3DVECTOR u, D3DVECTOR v )
#endif
}
-// Retourne le produit vectoriel de deux vecteurs.
+// Returns the product of two vectors.
inline D3DVECTOR Cross( D3DVECTOR u, D3DVECTOR v )
{
@@ -618,7 +619,7 @@ inline D3DVECTOR Cross( D3DVECTOR u, D3DVECTOR v )
u.x*v.y - u.y*v.x );
}
-// Retourne le vecteur normal d'une face triangulaire.
+// Returns the normal vector of a triangular face.
D3DVECTOR ComputeNormal( D3DVECTOR p1, D3DVECTOR p2, D3DVECTOR p3 )
{
@@ -631,8 +632,7 @@ D3DVECTOR ComputeNormal( D3DVECTOR p1, D3DVECTOR p2, D3DVECTOR p3 )
}
-// Transforme un point selon une matrice, exactement de la
-// même façon que Direct3D.
+// Transforms a point in a matrix, in exactly the same manner as Direct3D.
D3DVECTOR Transform(const D3DMATRIX &m, D3DVECTOR p)
{
@@ -646,7 +646,7 @@ D3DVECTOR Transform(const D3DMATRIX &m, D3DVECTOR p)
}
-// Calcule la projection d'un point P sur une droite AB.
+// Calculates the projection of a point P on a straight line AB.
D3DVECTOR Projection(const D3DVECTOR &a, const D3DVECTOR &b, const D3DVECTOR &p)
{
@@ -658,7 +658,7 @@ D3DVECTOR Projection(const D3DVECTOR &a, const D3DVECTOR &b, const D3DVECTOR &p)
return a + k*(b-a);
}
-// Plaque la texture dans le plan xz.
+// The texture plate in the xz plane.
void MappingObject(D3DVERTEX2* pVertices, int nb, float scale)
{
@@ -671,7 +671,7 @@ void MappingObject(D3DVERTEX2* pVertices, int nb, float scale)
}
}
-// Adoucit les normales.
+// Smooths normal.
void SmoothObject(D3DVERTEX2* pVertices, int nb)
{
@@ -726,16 +726,16 @@ void SmoothObject(D3DVERTEX2* pVertices, int nb)
-// Calcule les paramètres a et b du segment passant par
-// les points p1 et p2, sachant que :
+// Calculates the parameters a and b of the segment passing
+// through the points p1 and p2, knowing that:
// f(x) = ax+b
-// Retourne FALSE si la droite est verticale.
+// Returns FALSE if the line is vertical.
BOOL LineFunction(FPOINT p1, FPOINT p2, float &a, float &b)
{
if ( D3DMath_IsZero(p1.x-p2.x) )
{
- a = g_HUGE; // pente infinie !
+ a = g_HUGE; // infinite slope!
b = p2.x;
return FALSE;
}
@@ -746,7 +746,7 @@ BOOL LineFunction(FPOINT p1, FPOINT p2, float &a, float &b)
}
-// Calcule la distance entre un plan ABC et un point P.
+// Calculates the distance between a plane ABC and a point P.
float DistancePlanPoint(const D3DVECTOR &a, const D3DVECTOR &b,
const D3DVECTOR &c, const D3DVECTOR &p)
@@ -764,8 +764,7 @@ float DistancePlanPoint(const D3DVECTOR &a, const D3DVECTOR &b,
return Abs(aa*p.x + bb*p.y + cc*p.z + dd);
}
-// Vérifie si deux plans définis par 3 points font partie
-// du même plan.
+// Check if two planes defined by 3 points are part of the same plan.
BOOL IsSamePlane(D3DVECTOR *plan1, D3DVECTOR *plan2)
{
@@ -786,9 +785,8 @@ BOOL IsSamePlane(D3DVECTOR *plan1, D3DVECTOR *plan2)
}
-// Calcule la matrice permettant de faire 3 rotations
-// dans l'ordre X, Z et Y.
-// >>>>>> A OPTIMISER !!!
+// Calculates the matrix to make three rotations in the X, Y and Z
+// >>>>>> OPTIMIZING!!!
void MatRotateXZY(D3DMATRIX &mat, D3DVECTOR angle)
{
@@ -801,9 +799,8 @@ void MatRotateXZY(D3DMATRIX &mat, D3DVECTOR angle)
D3DMath_MatrixMultiply(mat, mat, temp); // X-Z-Y
}
-// Calcule la matrice permettant de faire 3 rotations
-// dans l'ordre Z, X et Y.
-// >>>>>> A OPTIMISER !!!
+// Calculates the matrix to make three rotations in the order Z, X and Y.
+// >>>>>> OPTIMIZING!!!
void MatRotateZXY(D3DMATRIX &mat, D3DVECTOR angle)
{
@@ -817,7 +814,7 @@ void MatRotateZXY(D3DMATRIX &mat, D3DVECTOR angle)
}
-// Retourne une valeur aléatoire comprise entre 0 et 1.
+// Returns a random value between 0 and 1.
float Rand()
{
@@ -825,7 +822,7 @@ float Rand()
}
-// Gestion de la zone neutre d'un joystick.
+// Managing the dead zone of a joystick.
// in: -1 0 1
// --|-------|----o----|-------|-->
@@ -847,8 +844,7 @@ float Neutral(float value, float dead)
}
-// Calcule une valeur (radians) proportionnelle comprise
-// entre a et b (degrés).
+// Calculates a value (radians) proportional between a and b (degrees).
inline float Prop(int a, int b, float p)
{
@@ -860,9 +856,8 @@ inline float Prop(int a, int b, float p)
return aa+p*(bb-aa);
}
-// Fait progresser mollement une valeur souhaitée à partir de
-// sa valeur actuelle. Plus le temps est grand et plus la
-// progression est rapide.
+// Gently advanced a desired value from its current value.
+// Over time, the greater the progression is rapid.
float Smooth(float actual, float hope, float time)
{
@@ -883,7 +878,7 @@ float Smooth(float actual, float hope, float time)
}
-// Fait reboudir un mouvement quelconque.
+// Bounces any movement.
// out
// |
@@ -911,7 +906,7 @@ float Bounce(float progress, float middle, float bounce)
}
-// Retourne la couleur D3DCOLOR correspondante.
+// Returns the color corresponding D3DCOLOR.
D3DCOLOR RetColor(float intensity)
{
@@ -928,7 +923,7 @@ D3DCOLOR RetColor(float intensity)
return color;
}
-// Retourne la couleur D3DCOLOR correspondante.
+// Returns the color corresponding D3DCOLOR.
D3DCOLOR RetColor(D3DCOLORVALUE intensity)
{
@@ -942,7 +937,7 @@ D3DCOLOR RetColor(D3DCOLORVALUE intensity)
return color;
}
-// Retourne la couleur D3DCOLORVALUE correspondante.
+// Returns the color corresponding D3DCOLORVALUE.
D3DCOLORVALUE RetColor(D3DCOLOR intensity)
{
@@ -957,7 +952,7 @@ D3DCOLORVALUE RetColor(D3DCOLOR intensity)
}
-// Conversion RGB vers HSV.
+// RGB to HSV conversion.
void RGB2HSV(D3DCOLORVALUE src, ColorHSV &dest)
{
@@ -966,12 +961,12 @@ void RGB2HSV(D3DCOLORVALUE src, ColorHSV &dest)
min = Min(src.r, src.g, src.b);
max = Max(src.r, src.g, src.b);
- dest.v = max; // intensité
+ dest.v = max; // intensity
if ( max == 0.0f )
{
dest.s = 0.0f; // saturation
- dest.h = 0.0f; // teinte indéfinie !
+ dest.h = 0.0f; // undefined color!
}
else
{
@@ -991,13 +986,13 @@ void RGB2HSV(D3DCOLORVALUE src, ColorHSV &dest)
dest.h = 4.0f+(src.r-src.g)/delta;
}
- dest.h *= 60.0f; // en degrés
+ dest.h *= 60.0f; // in degrees
if ( dest.h < 0.0f ) dest.h += 360.0f;
dest.h /= 360.0f; // 0..1
}
}
-// Conversion HSV vers RGB.
+// HSV to RGB conversion.
void HSV2RGB(ColorHSV src, D3DCOLORVALUE &dest)
{
@@ -1008,18 +1003,18 @@ void HSV2RGB(ColorHSV src, D3DCOLORVALUE &dest)
src.s = Norm(src.s);
src.v = Norm(src.v);
- if ( src.s == 0.0f ) // saturation nulle ?
+ if ( src.s == 0.0f ) // zero saturation?
{
dest.r = src.v;
dest.g = src.v;
- dest.b = src.v; // gris
+ dest.b = src.v; // gray
}
else
{
if ( src.h == 360.0f ) src.h = 0.0f;
src.h /= 60.0f;
- i = (int)src.h; // partie entière (0..5)
- f = src.h-i; // partie fractionnaire
+ i = (int)src.h; // integer part (0 .. 5)
+ f = src.h-i; // fractional part
v = src.v;
p = src.v*(1.0f-src.s);