-
- fixed point math. - ++(13.04.2012 10:18, ссылка)
- спич об block floating point arithmetic ? в догуглевские времена у AD были примеры и на пальцах растолковано, сейчас ХЗ. видно не имеет смысла в наши времена в вычислительных задачах профессиональные контроллеры юзать - ыыыы(12.04.2012 14:37, )
- Нет. Речь о трудной жизни без long long или float. - fk0(12.04.2012 14:55)
- Может правильнее жизнь улучшить, применив правильный проц.?! - Make_Pic(12.04.2012 15:16)
- тяжела и неказиста жизнь профессионального программиста без PIC24 на ядре Cortex-M4F ? =8) - Mahagam(13.04.2012 08:55)
- Может правильнее жизнь улучшить, применив правильный проц.?! - Make_Pic(12.04.2012 15:16)
- Нет. Речь о трудной жизни без long long или float. - fk0(12.04.2012 14:55)
- А можно задачу конкретизировать? Встречаются фокусы без этого, а вначале виделось как тригонометрия. Плюс STL. - Ациль Шифер(11.04.2012 18:05)
- Например угол (его косинус в квадрате, чтоб от корня и арктангенса избавиться) между векторами в 3d декартовых координатах еле умещается в 32 бита (и не умещается, если нужно сильно меньше градуса). Имеется ввиду, разница крайних значений (очень fk0(102 знак., 11.04.2012 18:54)
- По моему проще остаться в аналитической геометрии. Если углы в радианах, то до 1/6рад косинус и синус считаются без тригонометрии. (Если это картография, то будут в основном такие углы, и точность там 15 процентов для углов рулит). - Ациль Шифер(12.04.2012 14:14)
- Есть декартовы кординаты. Два вектора. Надо понять, что угол между ними стал больше 1 градуса. Как? (может быть 0..180). - fk0(12.04.2012 14:38)
- Плохо понимаю проблему, но может так. sbb(546 знак., 13.04.2012 20:06)
- Опс, фигню написал, случай то трехмерный. sbb(324 знак., 14.04.2012 22:59)
- tan x примерно равен х... - Ациль Шифер(14.04.2012 01:06)
- Масштабировать вектора к одинаковому модулю. Потом, вспомнив из теоремы синусов, что стягивающая сторона пропорциональна углу, проверять модуль разности масштабированных векторов. Всё. Галимый Пифагор и матричное умножение. Можно даже корни зазря Д.ARMоед(52 знак., 13.04.2012 09:35)
- Вот первое вообще непонятно как сделать. Сейчас <a,b>=|a|*|b|*cos(a,b) ==> if (K* <a,b> * abs( <a,b> ) < |a|^2*|b|^2 ) then..., где в угловых скобках скалярное произведение, а K == 1/cos(a,b). Точно эта теорема синусов нужна? А fk0(143 знак., 13.04.2012 11:02)
- fk0, зачем тормозишь? Хорошее решение предложено. - SciFi(13.04.2012 11:18)
- Теорему синусов и углы считать вообще не нужно! Считаешь модуль разности масштабированных векторов или его квадрат и сравниваешь с заранее посчитанным для 1 градуса(типа порог). Д.ARMоед(165 знак., 13.04.2012 11:11)
- Нужен единичный вектор для того. Как я его получу без деления? - fk0(13.04.2012 12:19)
- Зачем делить? Считаешь скалярное произведение (a,b), фильтруешь по знаку, возводишь в квадрат, сравниваешь с (а,а)*(b,b)*(cos(1)^2) - AlexBi(13.04.2012 12:30)
- См. ссылку. По-моему именно это и сделано уже. - fk0(13.04.2012 12:44, ссылка)
- Да, там тоже самое, только у "К" косинус магического угла должен быть в квадрате. - AlexBi(13.04.2012 15:49)
- Может быть, использовать векторное произведение вместо скалярного? - SciFi(13.04.2012 13:19)
- Векторное даст синус, а он может быть и плюс и минус, и углы 180 и 0 не различт. - AlexBi(13.04.2012 15:50)
- Легко отличить 0 и 180: сказано, что модули примерно равны, то есть берём сумму векторов и сравниваем по модулю с одним из них (причём можно халтурно, взяв сумму модулей координат). Если ~0, то угол 180, если ~2*m, то угол 0. - SciFi(13.04.2012 16:00)
- Это получается мы сперва создали себе трудности (использовав синус), а потом их преодолеваем. Лучше сразу взять косинус, он даст то, что надо, без дополнительных проблем. - AlexBi(13.04.2012 16:23)
- Как отличить 75 градусов от 105? - fk0(13.04.2012 16:18)
- Нафиг? Вроде бы только 1 градус нужно было ловить. - SciFi(13.04.2012 16:21)
- Легко отличить 0 и 180: сказано, что модули примерно равны, то есть берём сумму векторов и сравниваем по модулю с одним из них (причём можно халтурно, взяв сумму модулей координат). Если ~0, то угол 180, если ~2*m, то угол 0. - SciFi(13.04.2012 16:00)
- Векторное даст синус, а он может быть и плюс и минус, и углы 180 и 0 не различт. - AlexBi(13.04.2012 15:50)
- См. ссылку. По-моему именно это и сделано уже. - fk0(13.04.2012 12:44, ссылка)
- Можно просто уравнять модули. Но для этого необходим корень, ЕМНИП. - SciFi(13.04.2012 12:26)
- Точно. Корень же считать тоже ещё та забава. - fk0(13.04.2012 12:51)
- А квадраты модулей не равны? Д.ARMоед(51 знак., 13.04.2012 13:15 - 13:17, ссылка)
- Может быть я и туплю, но не вижу, как уравнять модули без корня. - SciFi(13.04.2012 13:30)
- Вы не тупите, корень для масштабирования придётся вычислить. А при сравнении можно обойтись без корня. Д.ARMоед(14.04.2012 08:53)
- Можно масштабировать без корня. sbb(836 знак., 14.04.2012 23:42)
- Не въехал. В каком знаменателе квадраты модулей? Д.ARMоед(59 знак., 15.04.2012 14:42)
- Если избавлятся от корня при вычислении модуля, то нужно обе части этого выражения возвести в квадрат. В знаменателе будет произведение квадратов модулей. - sbb(15.04.2012 22:50)
- Похоже, я сегодня на ручнике езжу :) Д.ARMоед(341 знак., 15.04.2012 23:08)
- Если избавлятся от корня при вычислении модуля, то нужно обе части этого выражения возвести в квадрат. В знаменателе будет произведение квадратов модулей. - sbb(15.04.2012 22:50)
- Не въехал. В каком знаменателе квадраты модулей? Д.ARMоед(59 знак., 15.04.2012 14:42)
- Можно масштабировать без корня. sbb(836 знак., 14.04.2012 23:42)
- Вы не тупите, корень для масштабирования придётся вычислить. А при сравнении можно обойтись без корня. Д.ARMоед(14.04.2012 08:53)
- Имеется ввиду, norm(A.*A.*(norm(B)^2)) == norm(B.*B.*(norm(A)^2)) ? Надо подумать... - fk0(13.04.2012 13:24)
- Может быть я и туплю, но не вижу, как уравнять модули без корня. - SciFi(13.04.2012 13:30)
- А квадраты модулей не равны? Д.ARMоед(51 знак., 13.04.2012 13:15 - 13:17, ссылка)
- Точно. Корень же считать тоже ещё та забава. - fk0(13.04.2012 12:51)
- Зачем делить? Считаешь скалярное произведение (a,b), фильтруешь по знаку, возводишь в квадрат, сравниваешь с (а,а)*(b,b)*(cos(1)^2) - AlexBi(13.04.2012 12:30)
- Нужен единичный вектор для того. Как я его получу без деления? - fk0(13.04.2012 12:19)
- Вот первое вообще непонятно как сделать. Сейчас <a,b>=|a|*|b|*cos(a,b) ==> if (K* <a,b> * abs( <a,b> ) < |a|^2*|b|^2 ) then..., где в угловых скобках скалярное произведение, а K == 1/cos(a,b). Точно эта теорема синусов нужна? А fk0(143 знак., 13.04.2012 11:02)
- Если просто не ноль градусов... векторное произведение не ноль. всё. шесть умножений три вычитания(сравнения) - Ациль Шифер(13.04.2012 08:35)
- Плохо понимаю проблему, но может так. sbb(546 знак., 13.04.2012 20:06)
- Есть декартовы кординаты. Два вектора. Надо понять, что угол между ними стал больше 1 градуса. Как? (может быть 0..180). - fk0(12.04.2012 14:38)
- По моему проще остаться в аналитической геометрии. Если углы в радианах, то до 1/6рад косинус и синус считаются без тригонометрии. (Если это картография, то будут в основном такие углы, и точность там 15 процентов для углов рулит). - Ациль Шифер(12.04.2012 14:14)
- Например угол (его косинус в квадрате, чтоб от корня и арктангенса избавиться) между векторами в 3d декартовых координатах еле умещается в 32 бита (и не умещается, если нужно сильно меньше градуса). Имеется ввиду, разница крайних значений (очень fk0(102 знак., 11.04.2012 18:54)
- Для пик-24 практически добавление плавающих чисел взамен фиксированных -- +1029 байт к программной памяти. Было за что бороться... (не за что) Для PIC18 порядка 3КБайт (не помню), но существенно ускоряло (он float перемножает и складывает быстрей fk0(93 знак., 11.04.2012 17:44)
- Многое можно просчитать заранее и держать готовый результат в виде таблиц. - бомж(11.04.2012 16:25)
- Может ли считаться контроллер контроллером профессионального уровня, если для него не написан компилятор профессионального уровня? ;) Vladimir Ljaschko(245 знак., 11.04.2012 16:03)
- Профессиональные компиляторы обрезают имена на 32-й букве. А очень профессиональные больше 6 символов не позволяют. Вот сиди и выдумывай имена. Думал программист -- это так просто? - fk0(11.04.2012 17:39)
- Проще не бывает - Codavr(11.04.2012 17:51, ссылка)
- А фиг! Где гарантия, что в этом хеше нет коллизий? - fk0(11.04.2012 18:02)
- Ctrl+F - Codavr(12.04.2012 05:22)
- А фиг! Где гарантия, что в этом хеше нет коллизий? - fk0(11.04.2012 18:02)
- Проще не бывает - Codavr(11.04.2012 17:51, ссылка)
- "CalculateRequestConcVolumeBySolutionAndConcentration". Мда-а, не думал, что настолько далеко ваш маразм зашел... :))))) - mazur(11.04.2012 16:20, ссылка)
- лучше было бы compute вместо calculate, но это так... - bialix(11.04.2012 20:44)
- Предлагаешь пронумеровать по порядку ? Vladimir Ljaschko(831 знак., 11.04.2012 16:27)
- Можно шифровки вида calc_RCV_SC и т.п. А что именно считает написать в комментариях. Так хоть читаемо будет. - fk0(11.04.2012 18:09)
- Шутка. Увидел эти многабукафф и вспомнил вашу фразу. - mazur(11.04.2012 16:31)
- Странная штука-память. И ощущение времени. Посмотрел дату. Два года прошло. А как будто не так давно... - mazur(11.04.2012 16:35)
- Не, он всё равно сокращает. Что есть Conc? Concrete (бетон что ли)? - SciFi(11.04.2012 16:25)
- Профессиональные компиляторы обрезают имена на 32-й букве. А очень профессиональные больше 6 символов не позволяют. Вот сиди и выдумывай имена. Думал программист -- это так просто? - fk0(11.04.2012 17:39)
- Как правило, динамический диапазон входных данных укладывается в 32 бита. Значит, для избежания переполнения, на каждом шаге вычислений нормировать сдвигами, а нормирующие факторы приписывать комментариями к коду. Если сильно надо, то нормирующие SciFi(37 знак., 11.04.2012 16:00)
- А вот косинус угла домноженный на коэффициент и возведённый в квадрат-- не укладывается, если хотим различать углы от менее градуса до +-180. Нормирующие факторы
можнонужно делать динамическими и считать отдельно. Муторно. :-( - fk0(11.04.2012 17:36)- Профессионально сводить диапазон к 0 - 45 градусов. - Михаил Е.(12.04.2012 10:36)
- Нет, не муторно - профессионально! - SciFi(11.04.2012 17:45)
- Пгигнись, бгаток. Щаз финскими студентами накроет... :) - blackbit(11.04.2012 20:15)
- )))) Йа умир! - Mahagam(12.04.2012 08:14)
- Пгигнись, бгаток. Щаз финскими студентами накроет... :) - blackbit(11.04.2012 20:15)
- если порядок не фиксированный, то чем это лучше относительно обычного float ? - Юрий_СВ(11.04.2012 16:08)
- Потенциально более быстрый и компактный код. SciFi(197 знак., 11.04.2012 16:10 - 16:13)
- А вот косинус угла домноженный на коэффициент и возведённый в квадрат-- не укладывается, если хотим различать углы от менее градуса до +-180. Нормирующие факторы