prototypeVec3d.hh 5.76 KB
 Jan Möbius committed Aug 05, 2009 1 /*===========================================================================*\  Jan Möbius committed Nov 25, 2010 2 3 * * * OpenFlipper *  Jan Möbius committed Feb 05, 2014 4 * Copyright (C) 2001-2014 by Computer Graphics Group, RWTH Aachen *  Jan Möbius committed Nov 25, 2010 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 * www.openflipper.org * * * *--------------------------------------------------------------------------- * * This file is part of OpenFlipper. * * * * OpenFlipper is free software: you can redistribute it and/or modify * * it under the terms of the GNU Lesser General Public License as * * published by the Free Software Foundation, either version 3 of * * the License, or (at your option) any later version with the * * following exceptions: * * * * If other files instantiate templates or use macros * * or inline functions from this file, or you compile this file and * * link it with other files to produce an executable, this file does * * not by itself cause the resulting executable to be covered by the * * GNU Lesser General Public License. This exception does not however * * invalidate any other reasons why the executable file might be * * covered by the GNU Lesser General Public License. * * * * OpenFlipper is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU Lesser General Public License for more details. * * * * You should have received a copy of the GNU LesserGeneral Public * * License along with OpenFlipper. If not, * * see . * * *  Jan Möbius committed Aug 05, 2009 33 34 35 \*===========================================================================*/ /*===========================================================================*\  Jan Möbius committed Nov 25, 2010 36 37 38 39 40 * * * $Revision$ * * $LastChangedBy$ * * $Date$ * * *  Jan Möbius committed Aug 05, 2009 41 \*===========================================================================*/  Jan Möbius committed Aug 29, 2008 42 43 44 45 46 47 48 49 50 51  // // C++ Interface: prototypeVec3d // // Description: // //  Jan Möbius committed Jun 28, 2012 52 // Author: Jan Möbius , (C) 2007  Jan Möbius committed Aug 29, 2008 53 54 //  Jan Möbius committed Jun 28, 2012 55 56 /** \page scripting_vector_type Vector data type for scripting *  Jan Möbius committed Jun 29, 2012 57 58  * The vector data type is corresponding to the Vec3d type in C++. The implementation of the * scripting type is done in prototypeVec3d.  Jan Möbius committed Jun 28, 2012 59 60 61 62 63 64  * * You can use the following functions: * \code * var vec = Vector(1,2,3) * var vec2 = Vector(10,20,30) *  Jan Möbius committed Jun 29, 2012 65 66 67 68 69 70 71 72 73 74 75 76 77 78  * vec.multiply(0.5) // Multiply vec with 0.5 * vec.add(vec2) // Add vec2 to vec * vec.sub(vec2) // Subtract vec2 from vec * * var norm = vec.norm() // Calculate the length of the vector * var sqrnorm = vec.sqrnorm() // Calculate the squared length of the vector * * var sprod = vec.sprod(vec) //Compute scalar product with the vector and itself * * vec.normalize() // Normalize vector * * vec.zero() // Set all components of the vector to zero * * print(vec) // Output vector to the console  Jan Möbius committed Jun 28, 2012 79 80 81 82 83  * * \endcode * */  Jan Möbius committed Aug 29, 2008 84 85 86 87 88 89 90 #ifndef PROTOTYPEVEC3D_HH #define PROTOTYPEVEC3D_HH #include #include  Jan Möbius committed Jun 28, 2012 91 92 93 94 95 96 97 /** \class prototypeVec3d * * This class wraps the Vec3d to the scripting language * * \ref scripting_vector_type * */  Jan Möbius committed Aug 29, 2008 98 99 100 101 102 103 104 class prototypeVec3d : public QObject , public QScriptable { Q_OBJECT public: prototypeVec3d(QObject *parent = 0);  Jan Möbius committed Jun 28, 2012 105  public slots:  Jan Möbius committed Jun 28, 2012 106 107 108 109  /** \brief Multiplies the given vector with the scalar * * @param _scalar Scalar value that gets multiplied */  Jan Möbius committed Jun 28, 2012 110 111  void multiply(QScriptValue _scalar);  Jan Möbius committed Jun 28, 2012 112 113 114 115  /** \brief Adds another vector to this vector * * @param _vector Vector that should be added */  Jan Möbius committed Jun 28, 2012 116 117  void add(QScriptValue _vector);  Jan Möbius committed Jun 28, 2012 118 119 120 121  /** \brief Subtracts another vector from this vector * * @param _vector Vector that should be subtracted */  Jan Möbius committed Jun 28, 2012 122 123  void sub(QScriptValue _vector);  Jan Möbius committed Jun 29, 2012 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153  /** \brief Resets all components of the vector to zero * */ void zero(); /** \brief Calculate scalar product * * @param _vector Second vector for scalar product (Can be the vector itself) * @return Scalar product value */ QScriptValue sprod(QScriptValue _vector); /** \brief Calculate the Euclidean norm of the vector * * @return Norm of the vector */ QScriptValue norm(); /** \brief Calculate the squared Euclidean norm of the vector * * @return Squared norm of the vector */ QScriptValue sqrnorm(); /** \brief Normalize the vector */ void normalize();  Jan Möbius committed Aug 29, 2008 154 155 156 157 158 159 160  public Q_SLOTS: QString toString() const; }; #endif // PROTOTYPEVEC3D_HH  Jan Möbius committed Jun 28, 2012 161