Зачем называть число с плавающей точкой & ... почему в CSS rgba () является альфа-числом с плавающей точкой от 0 до 1 - PullRequest
1 голос
/ 16 февраля 2011

точечный вопрос здесь. извините.

Я пытаюсь понять * нормализацию ** с точки зрения математики.

В библиотеке toxiclibs можно нормализовать число с плавающей точкой. Почему кто-то хотел бы нормализовать число с плавающей точкой ... В 3D я получаю, что нормаль к 3-мерной плоскости может дать up . Первая мысль: это связано с преформантом. Но потом я обнаружил ТАК вопрос , объясняющий, как игровой интерфейс может его использовать. Это ... Я вроде получаю.

Было бы справедливо сказать, что можно нормализовать число с плавающей точкой, где есть максимум и минимум? Я могу придумать два сценария:

  1. CSS Color RGBA: RGB от 0 до 255, но теоретически может пойти выше. Тогда как А составляет от 0,0 до 1,0. Нормализуется ли это, поскольку оно может быть полностью прозрачным или непрозрачным, поэтому оно является нормальным, поскольку имеется дефинитивное значение 0 или 1?

  2. При записи музыки (или в виде волны) ее можно обрезать. Это потому, что есть максимум и минимум, поэтому нормализованное значение выше 1 будет обрезано? Я думаю, что в этом случае нормализация была бы для удобства.

Итак, зачем нормализовать поплавок? Это производительность? Readabilty? Что-то еще (визуальная ссылка == Престижность)? Спинной усилитель, идущий до 11, как-то связан с этим?

Ответы [ 4 ]

4 голосов
/ 17 февраля 2011

Краткое объяснение "нормализованных" значений с плавающей точкой

В научной записи вы пишете любое число как x.y * 10^z, где x - это одна ненулевая цифра.Например 212 = 2.12 * 10^2.Для x всегда возможно быть одной цифрой, потому что вы можете продолжать делить на 10.Аналогично, x всегда может быть ненулевым, потому что вы можете продолжать умножать на 10 , за исключением , при попытке записать значение 0.0 в научной нотации просто заканчивается как 0.0 * 10^0.

Подробнее о научной нотации

Переход к поплавкам ... Плавания - это в основном научная запись в двоичном виде,Они написаны в виде x.y * 2^z.x по-прежнему представляет собой одну ненулевую цифру, но в двоичном виде оставляет только одну опцию: 1!Если вы внедряете хранилище с плавающей запятой в компьютер, вам не нужно тратить немного, что всегда 1, поэтому вы храните только y и z (и +/-).

Но как теперь хранить 0?Оказывается, что специальное значение z используется для обозначения «x на самом деле 0».Тогда вы можете хранить 0.0.Но вы также можете хранить 0.0010100011000 * 2^(special z) и всевозможные «ненормальные» значения.

Я не понимаю, что делает нормализирующая функция toxiclib - мне не удалось найти документацию.Насколько мне было известно, денормализованные числа с плавающей точкой не имеют эквивалентного нормализованного представления для той же точности с плавающей точкой (денормализованный сингл может быть представлен как обычный дубль, но не как обычный сингл).Возможно, это то, что делает функция.Но если вы не имеете дело с действительно низкоуровневыми вещами или с высокой точностью, вам, вероятно, все равно.

У Эрика Липперта есть хорошее объяснение анатомии поплавка.

3 голосов
/ 22 июля 2011

Я знаю, что это устаревшая тема, но FWIW (я автор вышеупомянутых ядовитых токсинов) - я обычно предпочитаю работать с нормированными значениями (т. Е. Как в 0,0 .. 1,0, так и в -1,0 ... +1,0 интервал) просто потому, что он делает их более гибкими при работе в нескольких доменах.У вас просто есть соответствующее значение масштаба или коэффициент отображения, который применяется всякий раз, когда используется значение.Это позволяет мне сохранить фактические определения абсолютного диапазона вне кода и / или использовать более удобный для человека диапазон номеров для элементов графического интерфейса.Поэтому я склонен думать о них как о процентах, и это немного похоже на MVC в нано-масштабе.

Например, у меня может быть несколько файлов конфигурации, определяющих различные диапазоны высоты для трехмерного персонажа.Моему инструменту все равно, какие абсолютные значения, но он может иметь некоторые особые случаи, скажем, что-нибудь> 80% (0,8).Моя модель использует только нормализованные значения.

Конфигурация A может быть: мин: 50 - макс: 200
Конфиг B: мин: 20 - макс: 100

Если мое значение высотывнутренне только выраженный между 0.0 .. 1.0, тогда я могу намного лучше работать с этим, и вычисление действительного абсолютного значения (то есть "представление" этого параметра модели) очень легко:

float val = config.min + (config.max-config.min) * normVal;

Теперь, если естьПоскольку другие параметры (со своими собственными диапазонами) зависят от моего параметра высоты, нормализованное состояние позволяет легко применить его к своим доменам (и избежать ненужного повторного отображения) ...

2 голосов
/ 17 февраля 2011

Нет единой концепции нормализации.Нормаль плоскости отличается от нормализации вектора, которая отличается от нормализации поплавка.

2 голосов
/ 16 февраля 2011

почему нужно нормализовать число с плавающей точкой

Чтобы сделать как можно больше значащих битов.

Если значение с плавающей точкой всегда находится в диапазоне от 0,5 до 1,0, самый левый бит может быть принят за 1. Один дополнительный бит точности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...