dl
dl_coor.h
浏览该文件的文档.
1
17#pragma once
18
19#include "dl_type.h"
20
21namespace dl
22{
26class Coor
27{
28 friend class Factory;
29 friend class VK;
30public:
31 static Coor* Create(Coor* parent = nullptr);
32
33 Coor* Clone();
34
35 void DtPosition(const Position& dt);
36 void DtScale(const Position& dt);
37 void DtScale(Float dt);
38 void DtRotate(Float dt);
39
41 void SetPosition(const Position& pos);
42 void SetScale(const Position& scale);
43 void SetScale(Float scale)
44 {
45 SetScale({ scale, scale });
46 }
47 void SetRotate(Float rotate);
48
49 void SetParent(Coor* coor);
50
54
55 Coor* GetParent() const;
60
65
70
75
80
85 Coor* GetRoot();
86
92 {
93 return _rootIndex;
94 }
95
97 {
98 assert(_rootIndex == -1);
99 }
100private:
101 Coor() :
102 _position{},
103 _scale{ 1.0f, 1.0f },
104 _rotate{},
105 _cosR{ 1.0f },
106 _sinRNag{ 0 },
107 _parent{ nullptr },
108 _rootIndex{ -1 }
109 {
110 }
111 Position _position;
112 Position _scale;
113 Float _rotate;
114 Float _cosR;
115 Float _sinRNag;
116 int _rootIndex; // 非-1是根坐标系,根坐标系parent必须为nullptr
117 Coor* _parent; // 为nullptr时代表窗口坐标系
118};
119
120}
2d坐标系
Coor * GetParent() const
friend class Factory
Coor * GetRoot()
获取它的根坐标系
Coor * Clone()
void SetParent(Coor *coor)
Position WorldToThis(Position pos) const
将点 从 世界坐标系 转到 自身坐标系
void SetScale(Float scale)
friend class VK
void DtRotate(Float dt)
Position GetPosition() const
void DtScale(Float dt)
static Coor * Create(Coor *parent=nullptr)
Position ThisToRoot(Position pos) const
将点 从 自身坐标系 转到 根坐标系
Float GetRotate() const
void SetRotate(Float rotate)
Position ParentToThis(Position pos) const
将点 从 父坐标系 转到 自身坐标系
Position ThisToParent(Position pos) const
将点 从 自身坐标系 转到 父坐标系
int GetRootIndex()
获取它的根坐标系id
Position GetScale() const
void DtScale(const Position &dt)
void SetPosition(const Position &pos)
不提供其他类型重载,避免{}无法判断类型
Position ThisToWorld(Position pos) const
将点 从 自身坐标系 转到 世界坐标系
void SetScale(const Position &scale)
void DtPosition(const Position &dt)
通用类型
Position2 Position
float Float