- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
/*
=====================
Q_acos
the msvc acos doesn't always return a value between -PI and PI:
int i;
i = 1065353246;
acos(*(float*) &i) == -1.#IND0
This should go in q_math but it is too late to add new traps
to game and ui
=====================
*/
gost 05.04.2014 16:28 # 0
float angle;
angle = acos(c);
if (angle > M_PI) {
return (float)M_PI;
}
if (angle < -M_PI) {
return (float)M_PI;
}
return angle;
}
PS, а интересно - -1.#IND0 больше 3.14 или нет?
Lure Of Chaos 05.04.2014 17:58 # 0
3.14159265 05.04.2014 19:15 # +1
WGH 05.04.2014 19:12 # 0
Из мана FreeBSD (под рукой был):
>If: |x| > 1, acos(x) raises an invalid exception and returns an NaN.
>The acos(), acosf(), and acosl() functions conform to ISO/IEC 9899:1999(“ISO C99”).
3.14159265 05.04.2014 19:17 # +1
Тихо, сейчас на запах жаренного прилетит целочисленный Тарас клевать истекающих кровью плавающих сишников.
inkanus-gray 06.04.2014 08:10 # +3
Пусть t = exp(-i*x).
t^2 - 2*t*cos(x) + 1 = 0.
t = cos(x) ± sqrt(cos²(x) - 1).
x = i * ln(t).
x = i * ln(cos(x) ± sqrt(cos²(x) - 1)).
Обычно используют корень с плюсом.
Тогда если cos(x) = 4, то x = i * ln(4 + sqrt(15)).
Беда пришла не от Тараса, а с той стороны, откуда не ждали...
LispGovno 06.04.2014 11:21 # +2
Это как получено?
Ну и ты забыл что Тарас не умеет в мнимые числа.
bormand 06.04.2014 11:24 # +1
3.14159265 06.04.2014 12:28 # +3
Дык я чуть ниже формулу привёл:
http://govnokod.ru/15673#comment224685
inkanus-gray 06.04.2014 13:48 # 0
Всё-таки невнимательность — заразная штука. Особенно, когда все комментарии скрыты.
3.14159265 06.04.2014 13:55 # +3
bormand 05.04.2014 19:23 # 0
Одновременно? :)
WGH 05.04.2014 20:22 # 0
bormand 05.04.2014 19:20 # 0
> i = 1065353246;
Да они же упоролись!
Это двоичное представление числа 1.000004. А арккосинус определен на интервале [-1, 1]. Какого-хуя они вообще от него хотят? :)
P.S. Упс, WGH выше уже все объяснил.
3.14159265 05.04.2014 19:20 # +2
3.14159265 05.04.2014 19:25 # +1
Кто сказал? Те же люди которые в 1-ом классе говорили, что отнимать от меньшего большее нельзя, или что число 5 не делится на 3, дальше что нет такого числа, квадрат которого будет 2, а потом они сказали что нельзя брать корень из отрицательных, делить на 0 нельзя. И вот теперь что arccos на интервале [-1, 1].
bormand 05.04.2014 19:28 # +3
Ну разумеется все это верно только для вещественных чисел ;) Ибо комплексные координаты и углы в игровом движке не особо помогут...
Причина ситуации из топика намного прозаичней - накопили слишком много погрешности во флоате, вот оно и распидорасилось. Комплексные числа в борьбе с этим конкретным эффектом, имхо, не помогут.
3.14159265 05.04.2014 19:29 # +27
Понятно. Потому в спойлере написано - не призывайте Тараса клевать жаренные жопы.
Ну во всяких решениях кубических уравнений, и электротехнике помогают, а в итоге-то выходят реальные числа!
Как видно из формулы выше - диапазон получается из-за корня, но если этот барьер в голове сломан, как и все остальные - на самом деле можно всё, то взяв корень, а потом логарифм получим ответ.
PS. Я кстати забыл про взятие логарифмов отрицательных чисел, и дробные факториалы.
bormand 05.04.2014 19:37 # +22
Аналитическая геометрия, емнип, всю жизнь довольствуется вещественными числами. Или я ошибаюсь?
3.14159265 05.04.2014 19:41 # +13
Но при рендеринге там стандартные действия после acos происходят, так вот интересно, а если взять комплексные, то мнимое i потом не сгорит, на длине вектора например?
Как в формуле Кардано - даже для вполне реальных корней надо взять джва мнимых корня, с разными знаками, которые потом сгорают.
bormand 05.04.2014 19:43 # 0
bormand 05.04.2014 19:45 # 0
3.14159265 05.04.2014 19:47 # +1
Отличная наживка для покупателя и новое, полностью неизведанное направление для макретологов!
То они бедные не знают уже что впарить, то аудио 32-bit/192kHz, то 3D видео 8K. А как звучит. Только в наших телевизорах настоящий комплексный цвет.
Кстати надо обдумать на досуге математический смысл комплексного цвета
bormand 05.04.2014 19:52 # 0
Сдвиг волны по фазе по идее. Ну как и любой другой комплексный сигнал - амплитуда + фаза, записанные одним числом.
Кстати вполне может иметь смысл для каких-нибудь голографических дисплеев...
WGH 05.04.2014 20:24 # −2
3.14159265 05.04.2014 23:21 # +2
Начнём с основ. Свет - это волновой процесс, раз так то сей процесс можно выразить в комплексных числа.
Вопрос только в их трактовке.
Это можно сделать по разному. Если взять RGB - то как это кодируется в компьютере, то никаких волн тут нет, только три амплитуды-яркости строго фиксированных волн.
То же касается CMY - как смешиваются цвета на бумаге.
Есть еще такое представление цвета, как YUV - y - luma, то есть яркость (амплитуда), uv - cr и cb - красный и голубой цвет соответственно.
Это уже ближе, если закодить яркость как модуль вектора, а цвет как угол то можно представить цвет в комплексной тригонометрической форме, где x - это допустим красный, y - синий, а длина вектора - яркость.
bormand 05.04.2014 23:41 # +2
Так что можно просто брать яркость за Re и длину волны за Im. Этого вроде бы будет достаточно.
3.14159265 05.04.2014 23:49 # +2
Яркость - длина вектора комплексного числа, а цвет (то бишь длина волна), это угол.
Но это только одна точка зрения или способ толкования. Мы сами толкуем цвет как комплексное число, а что значат мнимая и действительная часть можно тоже самим выбрать.
Какой физический смысл мнимой части электромагнитной волны - хз, я написал свои размышления, теперь надо спросить что думает гугл.
bormand 05.04.2014 23:51 # +3
3.14159265 06.04.2014 00:11 # +3
В контексте гейдева - это насколько затухает свет при отражении, прохождении через среду.
http://fn.bmstu.ru/data-physics/library/physbook/tom4/ch3/texthtml/ch3_3.htm
3.14159265 06.04.2014 00:26 # +3
Для того чтобы охарактеризовать быстроту уменьшения амплитуды падающей волны по мере ее проникновения в проводящую среду, вводят понятие «глубина проникновения».
Действительная часть волнового вектора определяет длину волны, а мнимая часть определяет глубину проникновения. Заметим также, что комплексные волновые вектора могут получиться и при действительной диэлектрической проницаемости, то есть поле проникает в проводник на глубину, меньшую, чем длина волны. Это явление называется скин-эффектом. Затухание электромагнитной волны связано с джоулевыми потерями (электромагнитное поле совершает работу по перемещению зарядов, которая затем превращается в тепло).
Комплексное число называется коэффициентом распространения волны, действительная часть его соответствует коэффициенту затухания, а мнимая – коэффициенту фазы.
То есть от частоты зависит, насколько сильно преломляется волна (как в призме) - то бишь её цвет, а насколько сильно она затухает - я не совсем представляю это в случае телевизора. Может действительно какое-то объемная голографическое изображение в диэлектрически прозрачном материале, потому что комплексные волны возникают только в какой-то среде, но не в пустоте.
Кстати затухание электромагнитных волн вполне согласуется и с другой аналогией, о которой я написал ниже:
>> в электротехнике мнимые токи создают вполне явные потери энергии в проводах
1024-- 06.04.2014 00:36 # +2
Зачем так далеко ходить, если и на Земле полно таких критиков? :)
P.S. А тот скрипт, что автоминусует, умеет открывать скрытые комментарии? Хотя, если что -- можно дописать.
Таки новый школомодератор допёк. Поставлю или запилю скрипт, который открывает все комментарии и показывает рейтинг 0.
3.14159265 06.04.2014 00:39 # +2
У меня так всегда и работает.
$("a.ajax:contains('показать')").click() ;
bormand 06.04.2014 00:44 # +2
3.14159265 06.04.2014 00:46 # +2
1024-- 06.04.2014 00:46 # +2
3.14159265 06.04.2014 00:48 # +2
> Царь туда попал
На третий день он как-то выдохся и совсем перестал меня смешить.
xavij 06.04.2014 01:00 # −4
bormand 06.04.2014 05:52 # +1
Всезависит от порядка действий... если сначала выпилить спам, а потом раскрыть комменты - то все будет норм.
> я признаю свое поражение и покину сайт
Можешь сделать это прямо сейчас и не тратить свое и чужое время на пустяки.
xavij 06.04.2014 12:19 # −4
gost 06.04.2014 06:25 # +1
Нельзя.
>санкция
http://prntscr.com/37epng
xavij 06.04.2014 12:17 # −4
gost 06.04.2014 14:33 # +3
3.14159265 05.04.2014 23:32 # +2
Есть еще HSL - hue, saturation, цвет, его насыщенность и яркость (амплитуда).
Если амплитуда световой волны - это яркость (кол-во фотонов на единицу поверхности), а частота это собственно цвет, который может быть инфракрасным, ультрафиолетом итд.
Тогда остается фаза, но сдвиг по фазе между чем и чем? В электротехнике угол фазы - в переменном токе это коефициент мощности.
Я вот подумал о том же что @WGH есть еще угол поворота волны в пространстве - полярность, может в неё какой-то смысл вложить?
inkanus-gray 06.04.2014 13:59 # 0
Представим, что мы научились изменять температуру светоизлучающей ячейки. Тогда мы сможем изменять не только яркость каждого компонента цвета, но и длину его волны. Сделав каждый из трёх лучей комплексным (яркость + i * длина волны), мы в пределе можем получить непрерывную гамму (если диапазоны лучей R и G, G и B соприкасаются).
Только научившись изменять тон каждой составляющей цвета, мы получим мониторы, которые смогут удовлетворить цветовые запросы всех живых существ.
3.14159265 06.04.2014 14:08 # +2
И вещественнная его часть - это коэфициент преломления, для разных частот - он разный - прямая зависимость от частоты волны. Потому при прохождении через призму свет раскладывается на спектр цветов (инфракрасный, ультрафиолетовый в том числе).
А мнимая часть регулирует степень поглощения, то есть интенсивность.
Еще раз:
яркость света (lightness) - амплитуда волны
насыщенность (saturation) цвета - это фаза, то есть как бы интенсивность цвета (мнимая часть)
сам цвет (hue) - частота (реальная часть волны).
Модель HSL/HSV имеет в таком свете право на жизнь, не?
inkanus-gray 06.04.2014 14:23 # +1
Для описания «грязных» цветов, т. е. тех, которых нет в радуге, придётся использовать несколько лучей, каждый из которых имеет свои H, S, L.
3.14159265 06.04.2014 14:29 # +1
Получается так, да.
А какой есть пример грязного цвета, который не уложится в эту модель?
Допустим эта модель и ограничена, но математически она верна:
http://en.wikipedia.org/wiki/File:Hsl-hsv_models.svg
В том плане что если смотреть на цвет в тригонометрической модели как на угол поворота вектора, то он зациклен.
Там по углам красный, и когда мы заканчиваем 360 градусов, то возвращаемся к исходному цвету.
3.14159265 06.04.2014 14:32 # +1
И в идеале если нагрузка на фазы равна, то на нулевом проводе нет напряжения - ноль . Так и три базовых цвета складываются в белый.
3.14159265 06.04.2014 14:18 # +2
Пример с телевизором - как на нём альфа-канал отобразить?
Я думаю просто мы неправильно смотрим по привчке на телевизор как на излучатель. В излучателе нет степени поглощения.
Другое дело экраны по альтернативной технологии, которые просто отражают падающий на них свет, например всякие электронные чернила, или табло.
Их цвет - это просто цвет отражающего материала. А степень поглощения, это насколько много света он поглощает, и соответственно отражает обратно. По сути его яркость/насыщенность цвета.
Термин экран ведь изначально нес в себе отражающую суть.
xavij 06.04.2014 14:33 # −4
3.14159265 06.04.2014 14:35 # +3
gost 06.04.2014 14:35 # −1
xavij 06.04.2014 14:37 # −4
gost 06.04.2014 15:00 # −1
xavij 06.04.2014 15:06 # −4
3.14159265 05.04.2014 19:46 # −2
Тем более что геометрическое их выражение все знают - угол и вектор.
bormand 05.04.2014 19:51 # −4
Эээ, не... Комплексная плоскость это же просто удобная визуализация этих чисел. А вот в реале их не увидеть, ибо геометрического смысла у них нет :)
И даже если комплексные числа можно применить как инструмент для промежуточных расчетов и доказательств, в геометрии никогда не вылезут комплексные ответы.
3.14159265 05.04.2014 19:55 # +1
Дробный, а тем более мнимый и отрицательный факториал мне тоже когда-то казался бессмысленным безумием, или как предел дзета-функции Римана от отрицательных четных чисел может быть нулем?? Если каждый её член строго положительный и растёт.
guest 05.04.2014 20:41 # −25
Причина: оффтоп.
gost 05.04.2014 22:01 # +5
Причина: хуесос.
Администратор
guest 05.04.2014 22:02 # −9
gost 05.04.2014 22:03 # +5
Причина: хуесос.
Б-г
guest 05.04.2014 22:04 # −10
gost 05.04.2014 22:06 # 0
guest 05.04.2014 22:26 # −1
gost 06.04.2014 06:22 # +2
xavij 06.04.2014 12:36 # −4
3.14159265 05.04.2014 23:12 # +4