-
Подскажите кто знает, как перевести такую конструкцию на Delphi? float p = (fmod(s * M, 1.0) > 0.5) ^ (fmod(t * M, 1.0) < 0.5);
-
это бред. но если он нужен, то fmod вернет остаток от деления, а ^ равен xor
-
Эта функция рисует черно-белый паттерн типа шахматной доски. fmod мне понятен. Мне непонятно, как C интерпретирует результат от fmod как логическое сравнение или реально делает побитовый ИЛИ на вещественных числах. Я просто проверить не могу. Аналог в Delphi я сделал XorFloat, но получается ерунда. Мне кажется он вибирает одно из двух выражени й в зависимости от условий < 0.5, > 0.5, только вот как непонятно.
-
> как C интерпретирует результат от fmod как логическое сравнение
как и любой другой язык. я не вижу тут какой-то тернарной записи, могущей вернуть что-то вещественное.
> или реально делает побитовый ИЛИ на вещественных числах
тут нет этого. тут побитовый исключающий или над bool-результатами сравнения
-
могу лишь посоветовать при использовании литературы и прочих источников следовать духу объясненного там алгоритма, а не букве указанного там кода.
-
но вообще, если в дальнейшем p используется для арифметических действий, то в Си это код вполне жизнеспособен, значения p будут либо 0.0 либо 1.0
-
Понял уже. На Delphi так выглядит:
f := Byte(fmod(s * 10.0, 1.0) > 0.5) xor Byte(fmod(t * 10.0, 1.0) < 0.5);
|