/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt Data Visualization module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:GPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 or (at your option) any later version
** approved by the KDE Free Qt Foundation. The licenses are as published by
** the Free Software Foundation and appearing in the file LICENSE.GPL3
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/

/*!
    \example rotations
    \title Rotations Example
    \ingroup qtdatavisualization_examples
    \brief Using rotated scatter items

    This example shows how to do the following:

    \list
        \li Use item rotations
        \li Use custom item meshes
        \li Use range gradient to color the series
    \endlist

    For more basic example about using Qt Data Visualization graphs, see \l{Bars Example}.

    \image rotations-example.png

    \include examples-run.qdocinc

    \section1 Using Rotations

    In this example we want to orient the arrow items tangentially to the origin. This requires
    rotating them, which can be achieved by specifying rotation quaternion to each item:

    \snippet rotations/scatterdatamodifier.cpp 0
    \snippet rotations/scatterdatamodifier.cpp 1
    \snippet rotations/scatterdatamodifier.cpp 2

    Since the items need to be rotated along two axes, we define two rotation quaternions, one
    for Y-axis and one for Z-axis, and then multiply these together to get the total rotation,
    which we set to the data item.

    \section1 Using Custom Item Meshes

    The narrow arrow mesh we use for magnetic field arrow items is not a standard mesh. Instead
    we supply our own \c{narrowarrow.obj} file which contains the object definition for the mesh
    in \c Wavefront obj format:

    \snippet rotations/scatterdatamodifier.cpp 3

    \section1 Using Range Gradient

    Setting the color style to range gradient in a series means that the item is colored according
    to its relative Y-value on the visible Y-coordinate range. We want the arrows on the bottom
    part of the graph to be darker and gradually get lighter higher they are, so we define a
    range gradient with black color at the position 0.0 and white color at the position 1.0:

    \snippet rotations/scatterdatamodifier.cpp 4

    \section1 Example Contents
*/
