FineKernelToolKit 4.2.13
読み取り中…
検索中…
一致する文字列を見つけられません
Light.h
[詳解]
1#if !defined(__FK_LIGHT_HEADER__)
2#define __FK_LIGHT_HEADER__
3
4#include <FK/Shape.h>
5
6namespace FK {
8 enum class fk_LightType {
10 POINT,
11 SPOT
12 };
13
15
48 class fk_Light: public fk_Shape {
49
50#if !defined(FK_DOXYGEN_USER_PROCESS)
51 class Member {
52 public:
53 fk_LightType lightType;
54 double attenuation[3];
55 double spotExponent, spotCutOff;
56
57 Member(void);
58 };
59
60#endif
61
62 public:
63
65
72
74 virtual ~fk_Light();
75
77
83
85
91
93
117 void setAttenuation(double k_l, double k_q, double k_c = 1.0);
118
120
139 void setSpotCutOff(double theta);
140
142
178 void setSpotExponent(double alpha);
179
181
195 double getAttenuation(int num);
196
198
207 double getSpotCutOff(void);
208
210
218 double getSpotExponent(void);
219
221 static const int MAXLIGHTNUM;
222
223 private:
224 std::unique_ptr<Member> _m;
225 };
226}
227
228#endif // !__FK_LIGHT_HEADER__
229
230
231/****************************************************************************
232 *
233 * Copyright (c) 1999-2024, Fine Kernel Project, All rights reserved.
234 *
235 * Redistribution and use in source and binary forms,
236 * with or without modification, are permitted provided that the
237 * following conditions are met:
238 *
239 * - Redistributions of source code must retain the above
240 * copyright notice, this list of conditions and the
241 * following disclaimer.
242 *
243 * - Redistributions in binary form must reproduce the above
244 * copyright notice, this list of conditions and the
245 * following disclaimer in the documentation and/or
246 * other materials provided with the distribution.
247 *
248 * - Neither the name of the copyright holders nor the names
249 * of its contributors may be used to endorse or promote
250 * products derived from this software without specific
251 * prior written permission.
252 *
253 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
254 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
255 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
256 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
257 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
258 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
259 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
260 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
261 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
262 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
263 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
264 * POSSIBILITY OF SUCH DAMAGE.
265 *
266 ****************************************************************************/
267/****************************************************************************
268 *
269 * Copyright (c) 1999-2024, Fine Kernel Project, All rights reserved.
270 *
271 * 本ソフトウェアおよびソースコードのライセンスは、基本的に
272 * 「修正 BSD ライセンス」に従います。以下にその詳細を記します。
273 *
274 * ソースコード形式かバイナリ形式か、変更するかしないかを問わず、
275 * 以下の条件を満たす場合に限り、再頒布および使用が許可されます。
276 *
277 * - ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、
278 * および下記免責条項を含めること。
279 *
280 * - バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の
281 * 資料に、上記の著作権表示、本条件一覧、および下記免責条項を
282 * 含めること。
283 *
284 * - 書面による特別の許可なしに、本ソフトウェアから派生した製品の
285 * 宣伝または販売促進に、本ソフトウェアの著作権者の名前または
286 * コントリビューターの名前を使用してはならない。
287 *
288 * 本ソフトウェアは、著作権者およびコントリビューターによって「現
289 * 状のまま」提供されており、明示黙示を問わず、商業的な使用可能性、
290 * および特定の目的に対する適合性に関す暗黙の保証も含め、またそれ
291 * に限定されない、いかなる保証もないものとします。著作権者もコン
292 * トリビューターも、事由のいかんを問わず、損害発生の原因いかんを
293 * 問わず、かつ責任の根拠が契約であるか厳格責任であるか(過失その
294 * 他の)不法行為であるかを問わず、仮にそのような損害が発生する可
295 * 能性を知らされていたとしても、本ソフトウェアの使用によって発生
296 * した(代替品または代用サービスの調達、使用の喪失、データの喪失、
297 * 利益の喪失、業務の中断も含め、またそれに限定されない)直接損害、
298 * 間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害に
299 * ついて、一切責任を負わないものとします。
300 *
301 ****************************************************************************/
光源を管理するクラス
Definition Light.h:48
virtual ~fk_Light()
デストラクタ
double getSpotCutOff(void)
スポットライト効果範囲角度参照関数
void setSpotExponent(double alpha)
スポットライト減衰指数設定関数
fk_LightType getLightType(void)
光源タイプ取得関数
void setSpotCutOff(double theta)
スポットライト効果範囲角度設定関数
static const int MAXLIGHTNUM
光源最大数定数
Definition Light.h:221
double getSpotExponent(void)
スポットライト減衰指数参照関数
void setLightType(fk_LightType type)
光源タイプ設定関数
fk_Light(fk_LightType type=fk_LightType::PARALLEL)
コンストラクタ
void setAttenuation(double k_l, double k_q, double k_c=1.0)
減衰係数設定関数
double getAttenuation(int num)
減衰係数参照関数
形状用基底クラス
Definition Shape.h:44
Fine Kernel Toolkit 名前空間
Definition Angle.h:6
fk_LightType
光源タイプを表す列挙型
Definition Light.h:8
@ SPOT
スポットライト
@ PARALLEL
平行光源
@ POINT
fk_Point 型