Ignore:
Timestamp:
Mar 13, 2013 9:57:03 AM (11 years ago)
Author:
ldelgass
Message:

Fix camera reset for nanovis. Includes refactoring of vector/matrix classes
in nanovis to consolidate into vrmath library. Also add preliminary canonical
view control to clients for testing.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/packages/vizservers/nanovis/vrmath/include/vrmath/Quaternion.h

    r3470 r3492  
    11/* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*- */
    2 /**
    3  * Quaternion code by BLACKAXE / kolor aka Laurent Schmalen
    4  * Use for commercial is strictly prohibited
     2/*
     3 * Copyright (c) 2004-2013  HUBzero Foundation, LLC
    54 *
    6  * I (Insoo Woo) have changed names according to my naming rules
     5 * Author: Insoo Woo <iwoo@purdue.edu>
    76 */
    87#ifndef VRQUATERNION_H
    98#define VRQUATERNION_H
    109
    11 class vrRotation;
     10namespace vrmath {
    1211
    13 class vrQuaternion
     12class Rotation;
     13
     14class Quaternion
    1415{
    1516public:
    16     vrQuaternion();
     17    Quaternion();
    1718
    18     explicit vrQuaternion(const vrRotation& rot);
     19    explicit Quaternion(const Rotation& rot);
    1920
    20     vrQuaternion(float x, float y = 0, float z = 0, float w = 0);
     21    Quaternion(double x, double y, double z, double w);
    2122
    22     void set(float x1, float y1, float z1, float w1);
     23    void set(double x1, double y1, double z1, double w1);
    2324
    24     const vrQuaternion& set(const vrRotation& rot);
     25    const Quaternion& set(const Rotation& rot);
    2526
    26     vrQuaternion conjugate() const
     27    Quaternion conjugate() const
    2728    {
    28         vrQuaternion result;
     29        Quaternion result;
    2930        result.w = w;
    3031        result.x = -x;
     
    3435    }
    3536
    36     vrQuaternion reciprocal() const
     37    Quaternion reciprocal() const
    3738    {
    3839        double denom =  w*w + x*x + y*y + z*z;
    39         vrQuaternion result = conjugate();
     40        Quaternion result = conjugate();
    4041        result.x /= denom;
    4142        result.y /= denom;
     
    4546    }
    4647
    47     void slerp(const vrRotation &a,const vrRotation &b, const float t);
     48    void slerp(const Rotation &a,const Rotation &b, double t);
    4849
    49     void slerp(const vrQuaternion &a,const vrQuaternion &b, const float t);
     50    void slerp(const Quaternion &a,const Quaternion &b, double t);
    5051
    51     const vrQuaternion& normalize();
     52    Quaternion& normalize();
    5253
    53     vrQuaternion operator*(const vrQuaternion& q2) const
     54    Quaternion operator*(const Quaternion& q2) const
    5455    {
    55         vrQuaternion result;
     56        Quaternion result;
    5657        result.w = (w * q2.w) - (x * q2.x) - (y * q2.y) - (z * q2.z);
    5758        result.x = (w * q2.x) + (x * q2.w) + (y * q2.z) - (z * q2.y);
     
    6162    }
    6263
    63     friend bool operator==(const vrQuaternion& q1, const vrQuaternion& q2);
     64    friend bool operator==(const Quaternion& q1, const Quaternion& q2);
    6465
    65     float x, y, z, w;
     66    double x, y, z, w;
    6667};
    6768
    68 inline bool operator==(const vrQuaternion& q1, const vrQuaternion& q2)
     69inline bool operator==(const Quaternion& q1, const Quaternion& q2)
    6970{
    7071    return ((q1.x == q2.x) && (q1.y == q2.y) && (q1.z == q2.z) && (q1.w == q2.w));
    7172}
    7273
    73 inline void vrQuaternion::slerp(const vrRotation &a,const vrRotation &b, const float t)
     74inline void Quaternion::slerp(const Rotation &a,const Rotation &b, double t)
    7475{
    75     slerp(vrQuaternion(a), vrQuaternion(b), t);
     76    slerp(Quaternion(a), Quaternion(b), t);
    7677}
    7778
    78 inline void vrQuaternion::set(float x1, float y1, float z1, float w1)
     79inline void Quaternion::set(double x1, double y1, double z1, double w1)
    7980{
    8081    x = x1;
     
    8485}
    8586
     87}
     88
    8689#endif
Note: See TracChangeset for help on using the changeset viewer.