[Scummvm-cvs-logs] SF.net SVN: scummvm:[55478] scummvm/trunk/engines/sword25/math

thebluegr at users.sourceforge.net thebluegr at users.sourceforge.net
Sun Jan 23 20:06:36 CET 2011


Revision: 55478
          http://scummvm.svn.sourceforge.net/scummvm/?rev=55478&view=rev
Author:   thebluegr
Date:     2011-01-23 19:06:35 +0000 (Sun, 23 Jan 2011)

Log Message:
-----------
SWORD25: Removed several unused methods of the Vertex class, and made a subclass of the Common::Point class

Modified Paths:
--------------
    scummvm/trunk/engines/sword25/math/region.cpp
    scummvm/trunk/engines/sword25/math/vertex.h

Modified: scummvm/trunk/engines/sword25/math/region.cpp
===================================================================
--- scummvm/trunk/engines/sword25/math/region.cpp	2011-01-23 19:02:36 UTC (rev 55477)
+++ scummvm/trunk/engines/sword25/math/region.cpp	2011-01-23 19:06:35 UTC (rev 55478)
@@ -248,10 +248,10 @@
 
 		// If no point could be found that way that lies within the region, find the next point
 		closestVertex = polygon.vertices[0];
-		int shortestVertexDistance2 = polygon.vertices[0].distance2(point);
+		int shortestVertexDistance2 = polygon.vertices[0].sqrDist(point);
 		{
 			for (int i = 1; i < polygon.vertexCount; i++) {
-				int curDistance2 = polygon.vertices[i].distance2(point);
+				int curDistance2 = polygon.vertices[i].sqrDist(point);
 				if (curDistance2 < shortestVertexDistance2) {
 					closestVertex = polygon.vertices[i];
 					shortestVertexDistance2 = curDistance2;

Modified: scummvm/trunk/engines/sword25/math/vertex.h
===================================================================
--- scummvm/trunk/engines/sword25/math/vertex.h	2011-01-23 19:02:36 UTC (rev 55477)
+++ scummvm/trunk/engines/sword25/math/vertex.h	2011-01-23 19:06:35 UTC (rev 55478)
@@ -44,24 +44,12 @@
 
 // Includes
 #include <math.h>
+#include "common/rect.h"
 #include "sword25/kernel/common.h"
 #include "sword25/util/lua/lua.h"
 
 #if defined(MACOSX) || defined(SOLARIS) || defined(__MINGW32__)
-// Older versions of Mac OS X didn't supply a powf function, so using it
-// will cause a binary incompatibility when trying to run a binary built
-// on a newer OS X release on an olderr one. And Solaris 8 doesn't provide
-// powf, floorf, fabsf etc. at all.
-// Cross-compiled MinGW32 toolchains suffer from a cross-compile bug in
-// libstdc++. math/stubs.o should be empty, but it comes with a symbol for
-// powf, resulting in a linker error because of multiple definitions.
-// Hence we re-define them here. The only potential drawback is that it
-// might be a little bit slower this way.
-#define powf(x,y)	((float)pow(x,y))
-#define floorf(x)	((float)floor(x))
-#define fabsf(x)	((float)fabs(x))
 #define sqrtf(x)	((float)sqrt(x))
-#define atan2f(x,y)	((float)atan2(x,y))
 #endif
 
 namespace Sword25 {
@@ -69,117 +57,22 @@
 /**
  * Defines a 2-D Vertex
  */
-class Vertex {
+class Vertex : public Common::Point {
 public:
-	Vertex() : x(0), y(0) {}
-	Vertex(int x_, int y_) {
-		this->x = x_;
-		this->y = y_;
-	}
+	Vertex() : Point() {}
+	Vertex(int x_, int y_) : Point(x_, y_) {}
+	Vertex(Point p) : Point(p) {}
 
-	int x;
-	int y;
-
 	/**
-	 * Compares two Vertecies.
-	 */
-	inline bool operator==(const Vertex &rhs) const {
-		if (x == rhs.x && y == rhs.y) return true;
-		return false;
-	}
-	/**
-	 * Compares two Vertecies.
-	 */
-	inline bool operator!=(const Vertex &rhs) const {
-		if (x != rhs.x || y != rhs.y) return true;
-		return false;
-	}
-	/**
-	 * Adds a vertex to vertex
-	 */
-	inline void operator+=(const Vertex &delta) {
-		x += delta.x;
-		y += delta.y;
-	}
-
-	/**
-	 * Subtracts a vertex from a vertex
-	 */
-	inline void operator-=(const Vertex &delta) {
-		x -= delta.x;
-		y -= delta.y;
-	}
-
-	/**
-	 * Adds two vertecies
-	 */
-	inline Vertex operator+(const Vertex &delta) const {
-		return Vertex(x + delta.x, y + delta.y);
-	}
-
-	/**
-	 * Subtracts two vertecies
-	 */
-	inline Vertex operator-(const Vertex &delta) const {
-		return Vertex(x - delta.x, y - delta.y);
-	}
-
-	/**
 	 * Calculates the square of the distance between two Vertecies.
 	 * @param Vertex        The vertex for which the distance is to be calculated
 	 * @return              Returns the square of the distance between itself and the passed vertex
-	 * @remark              If only distances should be compared, this method should be used because
-	 * it is faster than Distance()
+	 * @remark              If only distances should be compared, sqrDist() should be used, since it is faster.
 	 */
-	inline int distance2(const Vertex &vertex) const {
-		return (x - vertex.x) * (x - vertex.x) + (y - vertex.y) * (y - vertex.y);
-	}
-
-	/**
-	 * Calculates the square of the distance between two Vertecies.
-	 * @param Vertex        The vertex for which the distance is to be calculated
-	 * @return              Returns the square of the distance between itself and the passed vertex
-	 * @remark              If only distances should be compared, Distance2() should be used, since it is faster.
-	 */
 	inline int distance(const Vertex &vertex) const {
-		return (int)(sqrtf(static_cast<float>(distance2(vertex))) + 0.5);
+		return (int)(sqrtf(static_cast<float>(sqrDist(vertex))) + 0.5);
 	}
 
-	/**
-	 * Calculates the cross product of the vertex with another vertex. Here the Vertecies will be
-	 * interpreted as vectors.
-	 * @param Vertex        The second vertex
-	 * @return              Returns the cross product of this vertex and the passed vertex.
-	 */
-	inline int computeCrossProduct(const Vertex &vertex) const {
-		return x * vertex.y - vertex.x * y;
-	}
-
-	/**
-	 * Returns the dot product of this vertex with another vertex. Here the Vertecies are interpreted as vectors.
-	 * @param Vertex        The second vertex
-	 * @return              Returns the dot product of this vertex and the passed vertex.
-	 */
-	inline int computeDotProduct(const Vertex &vertex) const {
-		return x * vertex.x + y * vertex.y;
-	}
-
-	/**
-	 * Calculates the angle between this vertex and another vertex. Here the Vertecies are interpreted as vectors.
-	 * @param Vertex        The second vertex
-	 * @return              Returns the angle between this vertex and the passed vertex in radians.
-	 */
-	inline float computeAngle(const Vertex &vertex) const {
-		return atan2f(static_cast<float>(computeCrossProduct(vertex)), static_cast<float>(computeDotProduct(vertex)));
-	}
-
-	/**
-	 * Calculates the length of the vector
-	 */
-	inline float computeLength() const {
-		return sqrtf(static_cast<float>(x * x + y * y));
-	}
-
 	static Vertex &luaVertexToVertex(lua_State *L, int StackIndex, Vertex &vertex);
 	static void vertexToLuaVertex(lua_State *L, const Vertex &vertex);
 };


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list