Вход
Приветствую Вас Гость
 

easy.math.qsp v. 3.1.0

Операции над шестнадцатеричными числами

em.hex.inDec

Функция перевода из гексаметричного числа в декаметричное. Не работает с отрицательными значениями.

Использует циклический алгоритм перевода, в связи с чем может заметно подвешивать игру при переводе больших чисел. Имеет те же ограничения на значение результата, что и прочие фукции, т.е. результат должен лежать в пределе [-2147483647 ... 2147483647] (для Q.S.P. 5.8.0).

$args[0] - шестнадцатеричное число (текстовое значение). Значения в пределе 7fffffff
  result - полученное число

Результат работы функции:
@em.hex.inDec('ff') & !@ 255
@em.hex.inDec('22') & !@ 34
@em.hex.inDec('10') & !@ 16
@em.hex.inDec('1') & !@ 1
@em.hex.inDec('a') & !@ 10
@em.hex.inDec('ffaa233') & !@ 268083763
@em.hex.inDec('ffaa23') & !@ 16755235
@em.hex.inDec('ffaa2') & !@ 1047202
@em.hex.inDec('ffaa233451') & !@ -1440533423
@em.hex.inDec('ffaa23345') & !@ -90033339
@em.hex.inDec('ffaa2334') & !@ -5627084

Как видно, последние три результата получились отрицательными, значит превышены пределы значений результата, а соответственно и числа, которые переводятся в десятеричную систему тоже превышают предел.

em.hex.add

Функция складывает два шестнадцатеричных числа.

$args[0] - шестнадцатеричное число (текстовое значение).
$args[1] - шестнадцатеричное число (текстовое значение).
Результат работы функции:
@em.hex.add('1a1','97a') & !@ 'b1b'

em.dec.inHex

Функция перевода из декаметричного числа в гексаметричное. Не работает с отрицательными значениями.

Использует циклический алгоритм перевода, в связи с чем может заметно подвешивать игру при переводе больших чисел. Имеет ограничения на значения аргумента в пределе [-2147483647 ... 2147483647] (для Q.S.P. 5.8.0). Аргумент, превышающий предел, приводится к максимально возможному в QSP значению.

 args[0] - целое число (числовой вид). Значения в пределе 2147483647
 $result - полученная строка

Результат работы функции:
@em.dec.inHex(2147483647) & !@ '7fffffff'
@em.dec.inHex(214) & !@ 'd6'
@em.dec.inHex(255) & !@ 'ff'
@em.dec.inHex(10) & !@ 'a'
@em.dec.inHex(9) & !@ '9'
@em.dec.inHex(2147483648) & !@ '7fffffff'

em.dec.inCol

Преобразует десятеричное число в шестнадцатеричное. Отличием от функции em.dec.inHex является ограничение на значение аргумента в пределах [-255 ... 255]. Если пределы превышены, функция выдаёт в результат ff. Любое число в пределах преобразуется к двуразрядному шестнадцатеричному числу. Таким образом ограничение на результат лежит в пределах [-ff ... ff].

 args[0] - число целое, десятеричное.
 $result - шестнадцатеричное двуразрядное число (текстовое значение).

Результат работы функции:
@em.dec.inCol(2147483647) & !@ 'ff'
@em.dec.inCol(214) & !@ 'd6'
@em.dec.inCol(255) & !@ 'ff'
@em.dec.inCol(-10) & !@ '-0a'
@em.dec.inCol(256) & !@ 'ff'
@em.dec.inCol(16) & !@ '10'

em.col.add

Функция предназначена для изменения цвета для HTML; использует функции em.hex.inDec и em.dec.inCol.

$args[0] - цвет. Шестнадцатеричный формат, шестизначное число. (не может быть отрицательным)
$args[1] - значение. Шестнадцатеричный формат, двузначное число. (может быть отрицательным)

Функция действует следующим образом: разбивает первый аргумент на три двузначных шестнадцатеричных числа, и к каждому из чисел прибавляет второй аргумент. Если сумма превышает значение ff, она приводится к ff. И напротив, если сумма оказывается меньше 0, она приводится к 0. Таким образом результат работы функции лежит в пределах [000000 ... ffffff]

Это может пригодиться для плавного гашения цвета, или наоборот. Функция используется в движке игры "МАГИКОН", чтобы гасить цвета заголовков в зависимости от уровней.

Результат работы функции:
@em.col.add('ff0000','-44') & !@ 'bb0000'
@em.col.add('000000','-44') & !@ '000000'
@em.col.add('dd0000','22') & !@ 'ff2222'
@em.col.add('dd8822','-44') & !@ '994400'
@em.col.add('dd8822','44') & !@ 'ffcc66'
@em.col.add('dd882299','44') & !@ 'ffcc6699' - составляющая альфаканала не затрагивается

em.col.inRGB

Данная функция преобразует цвет, записанный в шестнадцатеричной форме, в числовой код цвета, понятный QSP; использует функцию em.hex.inDec.

$args[0] - цвет. Шестнадцатеричный формат, шестизначное число. (не может быть отрицательным);
result - числовой код цвета в формате QSP.

Функция является как бы надстройкой системной функции rgb и работает следующим образом: шестнадцатеричный код цвета разбивается на три двузначных шестнадцатеричных числа, которые преобразуются в десятеричные числа и передаются функции rgb в качестве аргументов.

Если в качестве аргумента указать неверное шестнадцатеричное число, функция всё равно вернёт результат, заменив неверные символы нулями. То же самое произойдёт, если указать отрицательное шестнадцатеричное число. Минус будет считаться неизвестным символом и em.hex.inDec заменит его на ноль. Последняя цифра будет отсечена.

Результат работы функции:
@em.col.inRGB('ff0000') & !@ '-16776961'
@em.col.inRGB('000000') & !@ '-16777216'
@em.col.inRGB('dd0000') & !@ '-16776995'
@em.col.inRGB('dd8822') & !@ '-14513955'
@em.col.inRGB('ffmm00') & !@ '0'
@em.col.inRGB('-0000ff') & !@ '0'
@em.col.inRGB('238c9088') & !@ '-2003792861' — альфа-канал поддерживается

em.col.inv

Возвращает шестнадцатеричный код цвета противоположного указанному; использует функцию em.col.add.

$args[0] - цвет. Шестнадцатеричный формат, шестизначное число. (не может быть отрицательным)

Принцип работы прост. Берётся максимальное значение для цветовой составляющей, и из него вычитается соответствующее значение цветовой составляющей исходного цвета. Полученные результаты склеиваются, в результате — цвет противоположный исходному.

Результат работы функции:

В качестве результата работы функции наглядная таблица исходных цветов и противоложных им.

Исходный Противоположный
#000000 #ffffff
#ffffff #000000
#238c90 #dc736f
#902b10 #6fd4ef
#c7c000 #383fff
#07c701 #f838fe

!@ альфаканал не затрагивается. Инвертируются только цвета:


Исходный Противоположный
#c7c00084 #383fff84
#07c7014d #f838fe4d

 

Aleks Versus'Easy Libraries'2013-

Aleks Versus'Game Adventure Making'Really Unimaginable Stories'2013-

Наверх