A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Portuguese
Docs ▼
Wiki
Manual
Models
Develop ▼
API
Bugs
API
src
antenna
model
angles.cc
Go to the documentation of this file.
1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2
/*
3
* Copyright (c) 2011, 2012 CTTC
4
*
5
* This program is free software; you can redistribute it and/or modify
6
* it under the terms of the GNU General Public License version 2 as
7
* published by the Free Software Foundation;
8
*
9
* This program is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU General Public License for more details.
13
*
14
* You should have received a copy of the GNU General Public License
15
* along with this program; if not, write to the Free Software
16
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
*
18
* Author: Nicola Baldo <nbaldo@cttc.es>
19
*/
20
21
22
#include <ns3/log.h>
23
#include <cmath>
24
#include "
angles.h
"
25
26
27
namespace
ns3
{
28
29
NS_LOG_COMPONENT_DEFINE
(
"Angles"
);
30
31
double
DegreesToRadians
(
double
degrees)
32
{
33
return
degrees * M_PI / 180.0;
34
35
}
36
37
double
RadiansToDegrees
(
double
radians)
38
{
39
return
radians * 180.0 / M_PI;
40
}
41
42
std::ostream&
operator<<
(std::ostream& os,
const
Angles
& a)
43
{
44
os <<
"("
<< a.
phi
<<
", "
<< a.
theta
<<
")"
;
45
return
os;
46
}
47
48
std::istream &
operator >>
(std::istream &is,
Angles
&a)
49
{
50
char
c;
51
is >> a.
phi
>> c >> a.
theta
;
52
if
(c !=
':'
)
53
{
54
is.setstate (std::ios_base::failbit);
55
}
56
return
is;
57
}
58
59
60
Angles::Angles
()
61
: phi (0),
62
theta (0)
63
{
64
}
65
66
67
Angles::Angles
(
double
p,
double
t)
68
: phi (p),
69
theta (t)
70
{
71
}
72
73
74
Angles::Angles
(Vector v)
75
: phi (
std
::atan2 (v.y, v.
x
)),
76
theta (
std
::acos (v.z / v.GetLength ()))
77
{
78
}
79
80
Angles::Angles
(Vector v, Vector o)
81
: phi (
std
::atan2 (v.y - o.y, v.
x
- o.
x
)),
82
theta (
std
::acos ((v.z - o.z) /
CalculateDistance
(v, o)))
83
{
84
}
85
86
87
}
88
ns3::operator>>
std::istream & operator>>(std::istream &is, Angles &a)
initialize a struct Angles from input
Definition:
angles.cc:48
ns3::DegreesToRadians
double DegreesToRadians(double degrees)
converts degrees to radians
Definition:
angles.cc:31
NS_LOG_COMPONENT_DEFINE
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
Definition:
log.h:202
ns3::Angles::theta
double theta
the inclination angle in radians
Definition:
angles.h:117
std
STL namespace.
ns3::CalculateDistance
double CalculateDistance(const Vector3D &a, const Vector3D &b)
Definition:
vector.cc:92
ns3::operator<<
std::ostream & operator<<(std::ostream &os, const Angles &a)
print a struct Angles to output
Definition:
angles.cc:42
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ns3::RadiansToDegrees
double RadiansToDegrees(double radians)
converts radians to degrees
Definition:
angles.cc:37
ns3::Angles::phi
double phi
the azimuth angle in radians
Definition:
angles.h:111
angles.h
ns3::Angles
struct holding the azimuth and inclination angles of spherical coordinates.
Definition:
angles.h:71
ns3::Angles::Angles
Angles()
default constructor, will initialize phi and theta to zero
Definition:
angles.cc:60
sample-rng-plot.x
list x
Definition:
sample-rng-plot.py:34
Generated on Wed Nov 7 2018 10:01:47 for ns-3 by
1.8.14