doors { name: "Red Puzzles" type: LOCATION_ONLY panels { room: "Main Area" name: "SUN" } panels { room: "Main Area" name: "KOI" } panels { room: "Main Area" name: "SUN KOI" } location_room: "Main Area" } doors { name: "Yellow Puzzles" type: LOCATION_ONLY panels { room: "Main Area" name: "CHOP" } panels { room: "Main Area" name: "YOU" } panels { room: "Main Area" name: "PLOT" } panels { room: "Main Area" name: "CHOP YOU PLOT" } location_room: "Main Area" } doors { name: "Green Puzzles" type: LOCATION_ONLY panels { room: "Main Area" name: "OUT" } panels { room: "Main Area" name: "SEW" } panels { room: "Main Area" name: "NEAR" } panels { room: "Main Area" name: "OUT SEW NEAR" } location_room: "Main Area" } doors { name: "Orange Puzzles" type: LOCATION_ONLY panels { room: "Main Area" name: "SHINE" } panels { room: "Main Area" name: "CURTSY" } panels { room: "Main Area" name: "SHINE CURTSY" } location_room: "Main Area" } doors { name: "Brown Puzzles" type: LOCATION_ONLY panels { room: "Main Area" name: "NEW" } panels { room: "Main Area" name: "DOLLARS" } panels { room: "Main Area" name: "NEW DOLLARS" } location_room: "Main Area" } doors { name: "Gray Puzzles" type: LOCATION_ONLY panels { room: "Main Area" name: "FOUR" } panels { room: "Main Area" name: "CAUGHT" } panels { room: "Main Area" name: "NET" } panels { room: "Main Area" name: "FOUR CAUGHT NET" } location_room: "Main Area" } doors { name: "Purple Puzzles" type: LOCATION_ONLY panels { room: "Main Area" name: "GREEN" } panels { room: "Main Area" name: "THINK" } panels { room: "Main Area" name: "LION" } panels { room: "Main Area" name: "GREEN THINK LION" } location_room: "Main Area" } doors { name: "Blue Puzzles" type: LOCATION_ONLY panels { room: "Main Area" name: "MOON" } panels { room: "Main Area" name: "POWER" } panels { room: "Main Area" name: "MOON POWER" } location_room: "Main Area" } doors { name: "Control Center Entrance" type: ITEM_ONLY receivers: "Components/Doors/entry_3" panels { room: "Main Area" name: "SUN" } panels { room: "Main Area" name: "KOI" } panels { room: "Main Area" name: "SUN KOI" } panels { room: "Main Area" name: "CHOP" } panels { room: "Main Area" name: "YOU" } panels { room: "Main Area" name: "PLOT" } panels { room: "Main Area" name: "CHOP YOU PLOT" } panels { room: "Main Area" name: "OUT" } panels { room: "Main Area" name: "SEW" } panels { room: "Main Area" name: "NEAR" } panels { room: "Main Area" name: "OUT SEW NEAR" } panels { room: "Main Area" name: "SHINE" } panels { room: "Main Area" name: "CURTSY" } panels { room: "Main Area" name: "SHINE CURTSY" } panels { room: "Main Area" name: "NEW" } panels { room: "Main Area" name: "DOLLARS" } panels { room: "Main Area" name: "NEW DOLLARS" } panels { room: "Main Area" name: "FOUR" } panels { room: "Main Area" name: "CAUGHT" } panels { room: "Main Area" name: "NET" } panels { room: "Main Area" name: "FOUR CAUGHT NET" } panels { room: "Main Area" name: "GREEN" } panels { room: "Main Area" name: "THINK" } panels { room: "Main Area" name: "LION" } panels { room: "Main Area" name: "GREEN THINK LION" } panels { room: "Main Area" name: "MOON" } panels { room: "Main Area" name: "POWER" } panels { room: "Main Area" name: "MOON POWER" } panels { room: "Control Center Side" name: "RIGHT" } complete_at: 10 } doors { name: "Plaza Entrance" type: ITEM_ONLY receivers: "Components/Doors/entry_4" panels { room: "Main Area" name: "SUN" } panels { room: "Main Area" name: "KOI" } panels { room: "Main Area" name: "SUN KOI" } panels { room: "Main Area" name: "CHOP" } panels { room: "Main Area" name: "YOU" } panels { room: "Main Area" name: "PLOT" } panels { room: "Main Area" name: "CHOP YOU PLOT" } panels { room: "Main Area" name: "OUT" } panels { room: "Main Area" name: "SEW" } panels { room: "Main Area" name: "NEAR" } panels { room: "Main Area" name: "OUT SEW NEAR" } panels { room: "Main Area" name: "SHINE" } panels { room: "Main Area" name: "CURTSY" } panels { room: "Main Area" name: "SHINE CURTSY" } panels { room: "Main Area" name: "NEW" } panels { room: "Main Area" name: "DOLLARS" } panels { room: "Main Area" name: "NEW DOLLARS" } panels { room: "Main Area" name: "FOUR" } panels { room: "Main Area" name: "CAUGHT" } panels { room: "Main Area" name: "NET" } panels { room: "Main Area" name: "FOUR CAUGHT NET" } panels { room: "Main Area" name: "GREEN" } panels { room: "Main Area" name: "THINK" } panels { room: "Main Area" name: "LION" } panels { room: "Main Area" name: "GREEN THINK LION" } panels { room: "Main Area" name: "MOON" } panels { room: "Main Area" name: "POWER" } panels { room: "Main Area" name: "MOON POWER" } panels { room: "Control Center Side" name: "RIGHT" } complete_at: 20 } doors { name: "B2 Door" type: ITEM_ONLY receivers: "Components/Doors/entry_1" panels { room: "Main Area" name: "SUN" } panels { room: "Main Area" name: "KOI" } panels { room: "Main Area" name: "SUN KOI" } panels { room: "Main Area" name: "CHOP" } panels { room: "Main Area" name: "YOU" } panels { room: "Main Area" name: "PLOT" } panels { room: "Main Area" name: "CHOP YOU PLOT" } panels { room: "Main Area" name: "OUT" } panels { room: "Main Area" name: "SEW" } panels { room: "Main Area" name: "NEAR" } panels { room: "Main Area" name: "OUT SEW NEAR" } panels { room: "Main Area" name: "SHINE" } panels { room: "Main Area" name: "CURTSY" } panels { room: "Main Area" name: "SHINE CURTSY" } panels { room: "Main Area" name: "NEW" } panels { room: "Main Area" name: "DOLLARS" } panels { room: "Main Area" name: "NEW DOLLARS" } panels { room: "Main Area" name: "FOUR" } panels { room: "Main Area" name: "CAUGHT" } panels { room: "Main Area" name: "NET" } panels { room: "Main Area" name: "FOUR CAUGHT NET" } panels { room: "Main Area" name: "GREEN" } panels { room: "Main Area" name: "THINK" } panels { room: "Main Area" name: "LION" } panels { room: "Main Area" name: "GREEN THINK LION" } panels { room: "Main Area" name: "MOON" } panels { room: "Main Area" name: "POWER" } panels { room: "Main Area" name: "MOON POWER" } panels { room: "Control Center Side" name: "RIGHT" } } 119 120 121 122 123 124 125 126 127 128 129 130
#ifndef VECTOR3D_H_26B75ED0
#define VECTOR3D_H_26B75ED0
#include <ostream>
#include <cmath>
class Vector3D {
public:
double x, y, z;
Vector3D() : x(0.0), y(0.0), z(0.0) {}
Vector3D(double x, double y, double z) : x(x), y(y), z(z) {}
Vector3D(double c) : x(c), y(c), z(c) {}
Vector3D(const Vector3D& v) : x(v.x), y(v.y), z(v.z) {}
inline double& operator[] (const int& index)
{
// Yuck
return ( &x )[ index ];
}
inline const double& operator[] (const int& index) const
{
return ( &x )[ index ];
}
inline bool operator==(const Vector3D& v) const
{
return v.x == x && v.y == y && v.z == z;
}
inline Vector3D operator-() const
{
return Vector3D( -x, -y, -z );
}
inline Vector3D operator+(const Vector3D& v) const
{
return Vector3D( x + v.x, y + v.y, z + v.z );
}
inline Vector3D operator-(const Vector3D& v) const
{
return Vector3D( x - v.x, y - v.y, z - v.z );
}
inline Vector3D operator*(const double& c) const
{
return Vector3D( x * c, y * c, z * c );
}
inline Vector3D operator/(const double& c) const
{
const double rc = 1.0/c;
return Vector3D( rc * x, rc * y, rc * z );
}
inline void operator+=(const Vector3D& v)
{
x += v.x;
y += v.y;
z += v.z;
}
inline void operator-=(const Vector3D& v)
{
x -= v.x;
y -= v.y;
z -= v.z;
}
inline void operator*=(const double& c)
{
x *= c;
y *= c;
z *= c;
}
inline void operator/=(const double& c)
{
(*this) *= ( 1./c );
}
inline double norm() const
{
return sqrt( x*x + y*y + z*z );
}
inline double norm2() const
{
return x*x + y*y + z*z;
}
inline Vector3D unit() const
{
double rNorm = 1. / sqrt( x*x + y*y + z*z );
return Vector3D( rNorm*x, rNorm*y, rNorm*z );
}
inline void normalize()
{
(*this) /= norm();
}
};
// left scalar multiplication
inline Vector3D operator* (const double& c, const Vector3D& v)
{
return Vector3D( c * v.x, c * v.y, c * v.z );
}
// dot product (a.k.a. inner or scalar product)
inline double dot(const Vector3D& u, const Vector3D& v)
{
return u.x*v.x + u.y*v.y + u.z*v.z ;
}
// cross product
inline Vector3D cross(const Vector3D& u, const Vector3D& v)
{
return Vector3D( u.y*v.z - u.z*v.y,
u.z*v.x - u.x*v.z,
u.x*v.y - u.y*v.x );
}
// prints components
std::ostream& operator<<(std::ostream& os, const Vector3D& v);
#endif /* end of include guard: VECTOR3D_H_26B75ED0 */