#ifndef SCRIPTMATHCOMPLEX_H #define SCRIPTMATHCOMPLEX_H #ifndef ANGELSCRIPT_H // Avoid having to inform include path if header is already include before #include #endif BEGIN_AS_NAMESPACE // This class implements complex numbers and the common // operations that can be done with it. // // Ref: http://mathworld.wolfram.com/ComplexNumber.html struct Complex { Complex(); Complex(const Complex &other); Complex(float r, float i = 0); // Assignment operator Complex &operator=(const Complex &other); // Compound assigment operators Complex &operator+=(const Complex &other); Complex &operator-=(const Complex &other); Complex &operator*=(const Complex &other); Complex &operator/=(const Complex &other); float length() const; float squaredLength() const; // Swizzle operators Complex get_ri() const; void set_ri(const Complex &in); Complex get_ir() const; void set_ir(const Complex &in); // Comparison bool operator==(const Complex &other) const; bool operator!=(const Complex &other) const; // Math operators Complex operator+(const Complex &other) const; Complex operator-(const Complex &other) const; Complex operator*(const Complex &other) const; Complex operator/(const Complex &other) const; float r; float i; }; // This function will determine the configuration of the engine // and use one of the two functions below to register the string type void RegisterScriptMathComplex(asIScriptEngine *engine); END_AS_NAMESPACE #endif