FineKernelToolKit: FK/TrackBall.h ソースファイル

FineKernelToolKit 4.3.0

読み取り中…
検索中…
一致する文字列を見つけられません
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
10namespace 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; // ３人称視点注視点
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
89
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; // ３人称視点制御カーソル移動量:処理量比率指定
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:101
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