aboutsummaryrefslogtreecommitdiff
path: root/engines/sword25
diff options
context:
space:
mode:
authorFilippos Karapetis2011-01-23 19:06:35 +0000
committerFilippos Karapetis2011-01-23 19:06:35 +0000
commit3d15871ee2d6a9c0ce4819a6ab5925638bafa8b9 (patch)
tree850faefa1a7b0601a8fc31b99d393e5efe9768e0 /engines/sword25
parentb17d4ada86ec699213f449d5a26b03b6b4402ca3 (diff)
downloadscummvm-rg350-3d15871ee2d6a9c0ce4819a6ab5925638bafa8b9.tar.gz
scummvm-rg350-3d15871ee2d6a9c0ce4819a6ab5925638bafa8b9.tar.bz2
scummvm-rg350-3d15871ee2d6a9c0ce4819a6ab5925638bafa8b9.zip
SWORD25: Removed several unused methods of the Vertex class, and made a subclass of the Common::Point class
svn-id: r55478
Diffstat (limited to 'engines/sword25')
-rw-r--r--engines/sword25/math/region.cpp4
-rw-r--r--engines/sword25/math/vertex.h121
2 files changed, 9 insertions, 116 deletions
diff --git a/engines/sword25/math/region.cpp b/engines/sword25/math/region.cpp
index d0d0859906..5d08b0c14e 100644
--- a/engines/sword25/math/region.cpp
+++ b/engines/sword25/math/region.cpp
@@ -248,10 +248,10 @@ Vertex Region::findClosestRegionPoint(const Vertex &point) const {
// 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;
diff --git a/engines/sword25/math/vertex.h b/engines/sword25/math/vertex.h
index b923841a0f..0e6d14502c 100644
--- a/engines/sword25/math/vertex.h
+++ b/engines/sword25/math/vertex.h
@@ -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,115 +57,20 @@ namespace Sword25 {
/**
* 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_;
- }
-
- 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);
- }
+ Vertex() : Point() {}
+ Vertex(int x_, int y_) : Point(x_, y_) {}
+ Vertex(Point p) : Point(p) {}
/**
* 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()
- */
- 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.
+ * @remark If only distances should be compared, sqrDist() should be used, since it is faster.
*/
inline int distance(const Vertex &vertex) const {
- return (int)(sqrtf(static_cast<float>(distance2(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));
+ return (int)(sqrtf(static_cast<float>(sqrDist(vertex))) + 0.5);
}
static Vertex &luaVertexToVertex(lua_State *L, int StackIndex, Vertex &vertex);