Changeset 819 for trunk/vizservers


Ignore:
Timestamp:
Nov 26, 2007, 11:29:55 AM (17 years ago)
Author:
vrinside
Message:

Added several member functions

Location:
trunk/vizservers/nanovis
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/vizservers/nanovis/Vector3.cpp

    r226 r819  
    1414 */
    1515#include "Vector3.h"
     16#include "Mat4x4.h"
    1617#include <math.h>
    1718#include <stdio.h>
     
    4748                   y*op2.y +
    4849                   z*op2.z;
     50}
     51
     52float Vector3::dot(const Vector3& vec) const
     53{
     54        return x*vec.x +
     55                   y*vec.y +
     56                   z*vec.z;
    4957}
    5058
     
    144152}
    145153
    146 float Vector3::distance(Vector3 &another){
     154float Vector3::distance(Vector3 &another) const
     155{
    147156        return sqrtf( (x - another.x) * (x - another.x)
    148157                                + (y - another.y) * (y - another.y)
     
    150159}
    151160
     161float Vector3::distanceSquare(Vector3 &another) const
     162{
     163        return ( (x - another.x) * (x - another.x)
     164                                + (y - another.y) * (y - another.y)
     165                                + (z - another.z) * (z - another.z) );
     166}
     167
     168float Vector3::distanceSquare(float vx, float vy, float vz) const
     169{
     170        return ( (x - vx) * (x - vx)
     171                                + (y - vy) * (y - vy)
     172                                + (z - vz) * (z - vz) );
     173}
     174
     175void Vector3::transform(const Vector3& v, const Mat4x4& mat)
     176{
     177    const float* m = mat.m;
     178    x = m[0] * v.x + m[4] * v.y + m[8] * v.z + m[12];
     179    y = m[1] * v.x + m[5] * v.y + m[9] * v.z + m[13];
     180    z = m[2] * v.x + m[6] * v.y + m[10] * v.z + m[14];
     181}
    152182
    153183
     184float Vector3::length() const
     185{
     186
     187    return sqrt(x * x + y * y + z * z);
     188}
  • trunk/vizservers/nanovis/Vector3.h

    r226 r819  
    1515#ifndef _VECTOR3_H_
    1616#define _VECTOR3_H_
     17
     18class Mat4x4;
    1719
    1820class Vector3{
     
    3840        void set(float newx, float newy, float newz);
    3941        void print();
    40         float distance(Vector3 &another);       //compute distance
     42        float distance(Vector3 &another) const; //compute distance
     43        float distanceSquare(Vector3 &another) const;   //compute distance
     44        float distanceSquare(float vx, float vy, float vz) const;       //compute distance
    4145
    4246        //fast version
    4347        Vector3 cross(Vector3 op2);
     48
     49    float dot(const Vector3& vec) const;
     50
     51    void transform(const Vector3& vec, const Mat4x4& mat);
     52    float length() const;
    4453};
    4554
  • trunk/vizservers/nanovis/Vector4.cpp

    r226 r819  
    8989        w = op2.w;
    9090}
     91
     92void Vector4::set(float x1, float y1, float z1, float w1)
     93{
     94        x = x1;
     95        y = y1;
     96        z = z1;
     97        w = w1;
     98}
  • trunk/vizservers/nanovis/Vector4.h

    r226 r819  
    3333        Vector4 operator/(float op2);     //mul per component
    3434        void operator <(Vector4 &op2);    //assign     
     35
     36    void set(float x1, float y1, float z1, float w1);
    3537};
    3638
Note: See TracChangeset for help on using the changeset viewer.