source: trunk/packages/vizservers/nanovis/vrmath/include/vrmath/Vector2f.h @ 3627

Last change on this file since 3627 was 3627, checked in by ldelgass, 7 years ago

Use vrmath::Color4f for color where appropriate

File size: 1.9 KB
Line 
1/* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2/*
3 * Copyright (c) 2004-2013  HUBzero Foundation, LLC
4 *
5 * Author: Insoo Woo <iwoo@purdue.edu>
6 */
7#ifndef VRVECTOR2F_H
8#define VRVECTOR2F_H
9
10#include <cstdlib>
11#include <cmath>
12
13namespace vrmath {
14
15class Vector2f
16{
17public:
18    Vector2f() :
19        x(0.0f), y(0.0f)
20    {}
21
22    Vector2f(const Vector2f& v) :
23        x(v.x), y(v.y)
24    {}
25
26    Vector2f(float x1, float y1) :
27        x(x1), y(y1)
28    {}
29
30    Vector2f& operator=(const Vector2f& other)
31    {
32        set(other.x, other.y);
33        return *this;
34    }
35
36    void set(float x1, float y1);
37
38    void set(const Vector2f& v);
39
40    float dot() const;
41
42    double length() const;
43
44    double distance(const Vector2f& v) const;
45
46    double distance(float x1, float y1) const;
47
48    double distanceSquare(const Vector2f& v) const;
49
50    double distanceSquare(float x1, float y1) const;
51
52    float x, y;
53};
54
55inline void Vector2f::set(float x1, float y1)
56{
57    x = x1;
58    y = y1;
59}
60
61inline void Vector2f::set(const Vector2f& v)
62{
63    x = v.x;
64    y = v.y;
65}
66
67inline float Vector2f::dot() const
68{
69    return (x * x + y * y);
70}
71
72inline double Vector2f::length() const
73{
74    return sqrt(x * x + y * y);
75}
76
77inline double Vector2f::distance(const Vector2f& v) const
78{
79    double x1 = ((double)v.x - (double)x) , y1 = ((double)v.y - (double)y);
80    return sqrt(x1 * x1 + y1 * y1);
81}
82
83inline double Vector2f::distance(float x1, float y1) const
84{       
85    double x2 = ((double)x1 - (double)x) , y2 = ((double)y1 - (double)y);
86    return sqrt(x2 * x2 + y2 * y2);
87}
88
89inline double Vector2f::distanceSquare(const Vector2f& v) const
90{       
91    double x1 = ((double)v.x - (double)x) , y1 = ((double)v.y - (double)y);
92    return (x1 * x1 + y1 * y1);
93}
94
95inline double Vector2f::distanceSquare(float x1, float y1) const
96{       
97    double x2 = ((double)x1 - (double)x) , y2 = ((double)y1 - (double)y);
98    return (x2 * x2 + y2 * y2);
99}
100
101}
102
103#endif
Note: See TracBrowser for help on using the repository browser.