 |
|

25.09.2018, 09:45
|
|
Познавший АНТИЧАТ
Регистрация: 16.03.2017
Сообщений: 1,626
С нами:
4821087
Репутация:
133
|
|
Добавляете в любое место в вашем коде
C++:
Код:
static
void
Pulsate
(
float
&
clr
,
float
min
,
float
max
,
float
pulsate_speed
)
{
static
bool
state
=
false
;
if
(
!
state
)
{
if
(
clr
min
)
clr
-=
pulsate_speed
;
else
{
clr
=
min
;
state
=
!
state
;
}
;
}
;
}
;
и используете так:
C++:
Код:
static
float
PlusateBlue
=
255.0f
;
/*Color:: - это если пихаете в класс Color как и я */
Pulsate
(
PlusateBlue
/* переменная */
,
100.f
/*минимальное*/
,
255.f
/*максимальное значение*/
,
1.f
/*скорость*/
)
;
Вот как это выглядит на примере ImGui (лок на фпс включен)
p.s это самый простой метод пульсации, можно сделать лучше через HSB
|
|
|

25.09.2018, 10:22
|
|
Новичок
Регистрация: 20.07.2018
Сообщений: 6
С нами:
4114012
Репутация:
1
|
|
Что происходит в видео, кто объяснит?
|
|
|

25.09.2018, 10:24
|
|
Познавший АНТИЧАТ
Регистрация: 16.03.2017
Сообщений: 1,626
С нами:
4821087
Репутация:
133
|
|
Сообщение от zeel228
Что происходит в видео, кто объяснит?
:facepalm2::facepalm2::facepalm2::facepalm2:
Пульсация цвета C++
честно хз что там может происходить...
|
|
|

25.09.2018, 11:02
|
|
Познавший АНТИЧАТ
Регистрация: 09.08.2015
Сообщений: 1,213
С нами:
5663255
Репутация:
183
|
|
Сообщение от rraggerr
Добавляете в любое место в вашем
Добавишь в конец файла, и использовать функцию выше нельзя будет, не объявив.
|
|
|

25.09.2018, 19:54
|
|
Постоянный
Регистрация: 10.05.2015
Сообщений: 341
С нами:
5794960
Репутация:
98
|
|
Сообщение от zeel228
Что происходит в видео, кто объяснит?
С третьего раза понял, что облачко становится то фиолетовым, то синим
|
|
|

25.09.2018, 20:17
|
|
Познавший АНТИЧАТ
Регистрация: 16.03.2017
Сообщений: 1,626
С нами:
4821087
Репутация:
133
|
|
Сообщение от Oreshka23
С третьего раза понял, что облачко становится то фиолетовым, то синим
не фиолетовым а черным, я не указывал ни зеленый ни красный цвет, ток синий
|
|
|

28.09.2018, 15:56
|
|
Постоянный
Регистрация: 17.02.2014
Сообщений: 611
С нами:
6438231
Репутация:
133
|
|
Более точно будет сказать переливание цвета, пульсация эт другое.
|
|
|

02.10.2018, 21:48
|
|
Участник форума
Регистрация: 16.03.2017
Сообщений: 105
С нами:
4821087
Репутация:
133
|
|
Сообщение от rraggerr
:facepalm2:
Я все понимаю что тебя это не волнует, но извини, это полнейший бред, а не код.
Тебе достаточно допустим:
C++:
Код:
bool
mState
=
false
;
mState
?
(
mColor
+=
fSpeed
)
:
(
mColor
-=
fSpeed
)
;
if
(
mColor
==
cMax
||
mColor
==
cMin
)
mState
=
!
mState
;
|
|
|

18.10.2018, 05:07
|
|
Постоянный
Регистрация: 23.05.2017
Сообщений: 545
С нами:
4723927
Репутация:
158
|
|
Сообщение от rraggerr
сейчас разве не 2018?
в том высказывании ошибка в другом месте
|
|
|

30.12.2018, 16:50
|
|
Новичок
Регистрация: 03.01.2017
Сообщений: 16
С нами:
4925302
Репутация:
0
|
|
Сообщение от DucaRii
Я все понимаю что тебя это не волнует, но извини, это полнейший бред, а не код.
Тебе достаточно допустим:
C++:
Код:
bool
mState
=
false
;
mState
?
(
mColor
+=
fSpeed
)
:
(
mColor
-=
fSpeed
)
;
if
(
mColor
==
cMax
||
mColor
==
cMin
)
mState
=
!
mState
;
А потом жалуются люди, что у них не работает ничего
У float всегда погрешность будет в этом случае (и почти во всех остальных), если не можете осознать этот факт, то прошу уйти читать IEEE 754 ( перевод). Кстати, реализация не самая длинная, как может показаться, вот, например, другая, более универсальная (и прожорливая):
C++:
Код:
#include
#include
#include
// ...
struct
ColorState
{
uint8_t
r
,
g
,
b
;
double
duration
;
ColorState
(
)
{
}
ColorState
(
uint8_t
r
,
uint8_t
g
,
uint8_t
b
,
double
duration
)
:
r
(
r
)
,
g
(
g
)
,
b
(
b
)
,
duration
(
duration
)
{
assert
(
duration
>
0.0
)
;
}
}
;
class
ColorController
{
public
:
ColorController
(
const
std
::
vector
&
data
)
:
m_data
(
data
)
,
m_state
(
0U
)
,
m_time
(
0.0
)
,
m_cycle
(
0.0
)
{
for
(
const
auto
&
x
:
m_data
)
m_cycle
+=
x
.
duration
;
}
void
update
(
double
delta
)
{
m_time
+=
delta
;
#define _CC_NEXT_STATE(x) (((x)+1U)%m_data.size())
while
(
m_time
>=
m_data
[
m_state
]
.
duration
)
{
m_time
-=
m_data
[
m_state
]
.
duration
;
m_state
=
_CC_NEXT_STATE
(
m_state
)
;
}
const
auto
&
cur
=
m_data
[
m_state
]
;
const
auto
&
nxt
=
m_data
[
_CC_NEXT_STATE
(
m_state
)
]
;
const
double
t1
=
m_time
,
t2
=
cur
.
duration
-
m_time
;
#undef _CC_NEXT_STATE
m_r
=
static_cast
(
(
t2
*
cur
.
r
+
t1
*
nxt
.
r
)
/
cur
.
duration
)
;
m_g
=
static_cast
(
(
t2
*
cur
.
g
+
t1
*
nxt
.
g
)
/
cur
.
duration
)
;
m_b
=
static_cast
(
(
t2
*
cur
.
b
+
t1
*
nxt
.
b
)
/
cur
.
duration
)
;
}
uint8_t
get_r
(
)
const
{
return
m_r
;
}
uint8_t
get_g
(
)
const
{
return
m_g
;
}
uint8_t
get_b
(
)
const
{
return
m_b
;
}
COLORREF
get_color
(
)
const
{
return
RGB
(
m_r
,
m_g
,
m_b
)
;
}
private
:
size_t m_state
;
double
m_time
,
m_cycle
;
uint8_t
m_r
,
m_g
,
m_b
;
std
::
vector
m_data
;
}
;
использование:
C++:
Код:
// инициализация в отдельной функции (чтобы не засорять код в месте использования)
ColorController
create_my_cc
(
)
{
std
::
vector
data
(
6
)
;
data
[
0
]
=
ColorState
(
255
,
0
,
0
,
0.5
)
;
data
[
1
]
=
ColorState
(
0
,
0
,
0
,
0.3
)
;
data
[
2
]
=
ColorState
(
0
,
255
,
0
,
0.5
)
;
data
[
3
]
=
ColorState
(
0
,
0
,
0
,
0.3
)
;
data
[
4
]
=
ColorState
(
0
,
0
,
255
,
0.5
)
;
data
[
5
]
=
ColorState
(
0
,
0
,
0
,
0.3
)
;
return
ColorController
(
data
)
;
}
// инициализация на месте (производится один раз!)
auto
my_cc
=
create_my_cc
(
)
;
// использование
my_cc
.
update
(
dt
)
;
COLORREF color
=
my_cc
.
get_color
(
)
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|