Author Topic: Расширенные математические функции  (Read 6487 times)

0 Members and 1 Guest are viewing this topic.

Сергей

  • Активный участник
  • ***
  • Posts: 159
    • View Profile
Предлагаю добавить дополнительные математические и тригонометрические функции. Согласитесь, куда же без тригонометрических функций в языке который работает с двумерным пространством?

Для начала:
atan2($x, $y) - Для вычисление угла между точками. Использование: $angle = atan2($x1-$x2, $y1-$y2)
tan($angle) - Тангенс. Косинус и синус есть, а без тангенса куда?
atan($value) - Обратный тангенс. Как в лучших языках Европы.
acos($value) - Обратный косинус.
asin($vlaue) - Обратный синус.

C тригонометрическими разобрались. Теперь алгебраические:
abs($value) - Модуль числа. Очень удобно вычислить его одной функцией.
floor($value, $prec) - Округляет число вниз. round есть, а floor нету, как же так? $prec - точность как и в round($value, $prec).
ceil($value, $prec) - Округляет число вверх. Тоже в дополнение к round. $prec - точность.
min($value1, $value2[, ...]) - Возвращает самое маленькое число из всех переданных аргументов.
max($value1, $value2[, ...]) - Возвращает самое большое число из всех переданных аргументов.

Необязательные функции, наличие которых не критично, но хотелось бы:
pow($value, $exponent) - Возведение числа в степень.
nthrt($value, $n) - $n-ный корень числа. Вроде как и не нужен, но если вдруг понадобится то придется ужасные велосипеды городить.
ln($value) - Натуральный логарифм. Не знаю зачем он тут может пригодится, но во многих языках есть.

Так же в добавок ко всему этому хотелось бы в файле констант по умолчанию видеть:
PI - Число пи.

Необязательно:
PI_2 - Половина числа пи.
SQRT2 - Квадратный корень из двух. Используется достаточно часто, хоть можно вычислять напрямую с помощью функции sqrt.
SQTR1_2 - Квадратный корень из 1/2. Ещё может быть вычислен как sin(45). Из той же оперы.
Отсутствую.

Johnny

  • Создатель
  • Герой форума
  • *
  • Posts: 593
    • View Profile
Re: Расширенные математические функции
« Reply #1 on: October 18, 2012, 08:24:43 AM »
ой ой. целый раздел справки придется писать же. не говоря уже о реализации. думаешь кому то они понадобятся?
многие вещи (тот же tg = sin / cos) можно реализовать косвенно. флор и цеил это просто прибавить 0.5 или отнять, потом округлить раундом.
возведение в степень через цикл. применение для мин и макс вообще не вижу.

зачем перегружать кликер? для какого сценария это может понадобится?

Сергей

  • Активный участник
  • ***
  • Posts: 159
    • View Profile
Re: Расширенные математические функции
« Reply #2 on: October 18, 2012, 10:49:20 AM »
Удобство же. Так сказать функциональный "сахар". Реализация не думаю что прям такая сложная, sin и cos же есть.
Примеры для min и max вот так вот сходу привести сложно, но они бы пригодились. floor и ceil и приходится вот такими не очевидными мерами эмулировать.

А вообще запили полноценные пользовательские функции с возвращаемыми значениями, тогда это все можно сторонним инклудом реализовать.
Отсутствую.

СлавьЯнИнъ

  • Активный участник
  • ***
  • Posts: 179
    • View Profile
Re: Расширенные математические функции
« Reply #3 on: October 23, 2012, 12:55:46 AM »
Громоздко всё это и сейчас можно реализовать.
Однозначно ЗА пользовательские функции, но если выше описанные будут ядрёные (в смысле прописанные в ядре), то работать будут быстрее.

По части перегрузки кликера. HWND и colormode добавляют целостности, и математика тоже!

По части написания справки - так может и энтузиасты найдутся.

Понадобиться это может тогда когда стоит задача произвести какие-то креативные действия.
Например кликер-рисовальщик.
« Last Edit: October 23, 2012, 12:58:27 AM by СлавьЯнИнъ »
добрый смех равняет всех

ЦИТРИН

  • Супермодератор
  • Оплот сообщества
  • *
  • Posts: 484
  • Марафон опавших листьев, коктейль из дыма и мыслей
    • View Profile
Re: Расширенные математические функции
« Reply #4 on: October 24, 2012, 06:23:48 PM »
1) Громоздко всё это и сейчас можно реализовать.
2) задача произвести какие-то креативные действия.
Например кликер-рисовальщик.
1) Хмм... была  нужда  решить такого рода задачу.
Просто вызывал калькулятор тем же 4.5 и возводил в любые, нужные мне  степени.
 Вроде проблемы-то нет.
2)Вот это уже интереснее.
Например задача : если  на фото  есть голубые глаза, подрисуй усы)
Бабочки полёт будит тихую поляну в солнечном свету...

СлавьЯнИнъ

  • Активный участник
  • ***
  • Posts: 179
    • View Profile
Вот уж и проект
« Reply #5 on: October 25, 2012, 06:26:12 AM »
А что запросто: Загрузка фото в редактор;
Анализ;
Креатив-рисование;
Сохранение;
Загрузка следующего;
 ;D ;D
Голубоглазые с усами
Сероглазые с бородой
Кареглазые с румянцем
Зеленоглазые с короной
добрый смех равняет всех

MaxP

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Re: Расширенные математические функции
« Reply #6 on: September 04, 2014, 04:29:31 PM »
+1, алгебраические, думаю, несложно было бы реализовать. В справке можно добавить раздел продвинутых функций, объяснение которых было бы простым, хватит и сказанного в теме. Кому будет нужно -- нагуглит непонятное