GameApi 28
Library used by GameApi Builder tool
Loading...
Searching...
No Matches
Angle.hh
Go to the documentation of this file.
1
2
3class Logo
4{
5public:
6 virtual void Advance(float length)=0;
7 virtual void Rotate(float angle)=0; // [0..1]
8 virtual void Dot()=0;
9};
10
11class LogoImpl : public Logo
12{
13public:
14 LogoImpl() : m_pos(Point(0.0,0.0,0.0)), m_angle(0.0) { }
15 virtual void Advance(float length)
16 {
17 m_pos += length*(Vector(length,0,0)*Matrix::ZRotation(angle*2.0*3.14159));
18 }
19 virtual void Rotate(float angle) // [0..1]
20 {
21 m_angle += angle;
22 }
23 virtual void Dot()
24 {
25 vec.push_back(m_pos);
26 }
27 std::vector<Point> Array() const { return vec; }
28private:
29 Point m_pos;
30 float m_angle;
31 std::vector<Point> vec;
32};
33
35{
36public:
37 TriRecursion(Logo &l) : l(l) { }
38 void Recurse(float length, int level)
39 {
40 if (level==0) { l.Dot(); l.Advance(length); l.Dot(); return; }
41 length/=3;
42 Recurse(length, level-1);
43 l.Rotate(1.0/8.0);
44 Recurse(length, level-1);
45 l.Rotate(-2.0/8.0);
46 Recurse(length, level-1);
47 l.Rotate(1.0/8.0);
48 Recurse(length, level-1);
49 }
50private:
51 Logo &l;
52};
virtual void Dot()
Definition Angle.hh:23
virtual void Rotate(float angle)
Definition Angle.hh:19
virtual void Advance(float length)
Definition Angle.hh:15
std::vector< Point > Array() const
Definition Angle.hh:27
LogoImpl()
Definition Angle.hh:14
Definition Angle.hh:4
virtual void Rotate(float angle)=0
virtual void Dot()=0
virtual void Advance(float length)=0
static Matrix ZRotation(float rot)
Definition VectorTools.cc:537
void Recurse(float length, int level)
Definition Angle.hh:38
TriRecursion(Logo &l)
Definition Angle.hh:37
Definition VectorTools.hh:125
Definition Parser.cc:60