FineKernelToolKit
4.2.13
読み取り中…
検索中…
一致する文字列を見つけられません
FK
TrackBall.h
[詳解]
1
#if !defined(__FK_TRACKBALL_HEADER__)
2
#define __FK_TRACKBALL_HEADER__
3
4
#include <
FK/Window.h
>
5
#include <
FK/Model.h
>
6
#include <
FK/Vector.h
>
7
#include <
FK/Angle.h
>
8
#include <FL/Fl.H>
9
10
namespace
FK
{
11
13
33
class
fk_TrackBall
{
34
#if !defined(FK_DOXYGEN_USER_PROCESS)
35
class
Member {
36
public
:
37
fk_Window
*fk_win;
// FKウィンドウ
38
fk_Model
*camera;
// カメラ
39
fk_Vector
lookPos;
// 3人称視点注視点
40
// 操作に使用するマウスボタン
41
//fk_MouseButton lookButton, moveButton;
42
43
// 画面外にカーソルが出た場合の判定の有無
44
bool
overCheck;
45
46
// エコーの有無
47
//bool bEcho;
48
49
int
nowX, nowY, oldX, oldY;
// ウィンドウ上座標
50
//int echoX, echoY;
51
bool
lookClick, distClick, moveClick;
// 1ループ前のクリックを記憶
52
53
Member(
fk_Window
*,
fk_Model
*);
54
};
55
#endif
56
57
public
:
58
60
64
fk_TrackBall
(
fk_Window
*win,
fk_Model
*camera =
nullptr
);
65
67
72
void
setCamera
(
fk_Model
*camera);
73
75
81
bool
isSetCamera
(
void
);
82
84
90
void
setLookTo
(
fk_Vector
pos);
91
93
98
void
update
(
void
);
99
100
private
:
101
std::unique_ptr<Member> _m;
102
103
static
constexpr
double
DIVPOS = 10.0;
// カーソル移動量
104
static
constexpr
double
DIVLOOK = 200.0;
// カーソル処理量比率指定
105
static
constexpr
double
DIVDIST = 1.0;
// 3人称視点制御カーソル移動量:処理量比率指定
106
107
void
ControlLookTo(
void
);
108
void
ControlLookToDist(
void
);
109
void
ControlLookToMove(
void
);
110
};
111
112
//using fkut_TrackBall = fk_TrackBall;
113
114
115
}
116
117
#endif
118
119
/****************************************************************************
120
*
121
* Copyright (c) 1999-2024, Fine Kernel Project, All rights reserved.
122
*
123
* Redistribution and use in source and binary forms,
124
* with or without modification, are permitted provided that the
125
* following conditions are met:
126
*
127
* - Redistributions of source code must retain the above
128
* copyright notice, this list of conditions and the
129
* following disclaimer.
130
*
131
* - Redistributions in binary form must reproduce the above
132
* copyright notice, this list of conditions and the
133
* following disclaimer in the documentation and/or
134
* other materials provided with the distribution.
135
*
136
* - Neither the name of the copyright holders nor the names
137
* of its contributors may be used to endorse or promote
138
* products derived from this software without specific
139
* prior written permission.
140
*
141
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
142
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
143
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
144
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
145
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
146
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
147
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
148
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
149
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
150
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
151
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
152
* POSSIBILITY OF SUCH DAMAGE.
153
*
154
****************************************************************************/
155
/****************************************************************************
156
*
157
* Copyright (c) 1999-2024, Fine Kernel Project, All rights reserved.
158
*
159
* 本ソフトウェアおよびソースコードのライセンスは、基本的に
160
* 「修正 BSD ライセンス」に従います。以下にその詳細を記します。
161
*
162
* ソースコード形式かバイナリ形式か、変更するかしないかを問わず、
163
* 以下の条件を満たす場合に限り、再頒布および使用が許可されます。
164
*
165
* - ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、
166
* および下記免責条項を含めること。
167
*
168
* - バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の
169
* 資料に、上記の著作権表示、本条件一覧、および下記免責条項を
170
* 含めること。
171
*
172
* - 書面による特別の許可なしに、本ソフトウェアから派生した製品の
173
* 宣伝または販売促進に、本ソフトウェアの著作権者の名前または
174
* コントリビューターの名前を使用してはならない。
175
*
176
* 本ソフトウェアは、著作権者およびコントリビューターによって「現
177
* 状のまま」提供されており、明示黙示を問わず、商業的な使用可能性、
178
* および特定の目的に対する適合性に関す暗黙の保証も含め、またそれ
179
* に限定されない、いかなる保証もないものとします。著作権者もコン
180
* トリビューターも、事由のいかんを問わず、損害発生の原因いかんを
181
* 問わず、かつ責任の根拠が契約であるか厳格責任であるか(過失その
182
* 他の)不法行為であるかを問わず、仮にそのような損害が発生する可
183
* 能性を知らされていたとしても、本ソフトウェアの使用によって発生
184
* した(代替品または代用サービスの調達、使用の喪失、データの喪失、
185
* 利益の喪失、業務の中断も含め、またそれに限定されない)直接損害、
186
* 間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害に
187
* ついて、一切責任を負わないものとします。
188
*
189
****************************************************************************/
Angle.h
Model.h
Vector.h
Window.h
FK::fk_Model
モデルを生成、管理するクラス
Definition
Model.h:98
FK::fk_TrackBall
マウスによる視点操作クラス
Definition
TrackBall.h:33
FK::fk_TrackBall::fk_TrackBall
fk_TrackBall(fk_Window *win, fk_Model *camera=nullptr)
コンストラクタ
FK::fk_TrackBall::setCamera
void setCamera(fk_Model *camera)
カメラモデル設定関数
FK::fk_TrackBall::isSetCamera
bool isSetCamera(void)
カメラ設定有無参照関数
FK::fk_TrackBall::setLookTo
void setLookTo(fk_Vector pos)
カメラ注視点変更関数
FK::fk_TrackBall::update
void update(void)
状態更新関数
FK::fk_Vector
3次元ベクトルを管理するクラス
Definition
Vector.h:45
FK::fk_Window
FLTK 用シーン描画ウィジェットクラス
Definition
Window.h:120
FK
Fine Kernel Toolkit 名前空間
Definition
Angle.h:6
構築:
1.9.8