Войти
СайтФорумОбсуждение

Заявки на публикацию статей. (10 стр)

Страницы: 19 10 11 1217 Следующая »
#135
(Правка: 9:40) 9:36, 7 мая 2020

Из другой темы:
eDmk
> Человек наехал на константу - круто :)
дело не в константе, а в применении градусов в расчётах внутри программы, мне кажется это непрофессиональным. Я считаю, что градусы допустимы только в интерфейсе, все переводы RadToDeg и DegToRad должны происходить сразу после ввода или перед выводом данных. Значения в переменный, вроде "float angle;" должны храниться только в радианах.
Но, в конце концов, это не статья, а, всего лишь, подсказка. Я не против публикации, но хотелось бы услышать мнение "паскалистов".

#136
(Правка: 9:48) 9:46, 7 мая 2020

eDmk
много претензий к твоему коду, если честно, из-за которых я не могу считать его образцовым.

- например, у тебя строится отдельно массив фейсов и рёбер. если так делать для каждого генератора мешей, то обязательно в одном из них будет ошибка и её обязательно будет трудно найти, потому что фейсы будут построены правильно, а рёбра — нет. то же самое можно сделать, просто построив одной функцией список рёбер из массива фейсов, что, кстати, должно быть опциональной возможностью, так как вовсе не всем это нужно.
- у тебя память аллоцируется в горячем цикле блоками константного размера. во-первых, этим должен заниматься нормальный контейнер, а не твой код. во-вторых, если ты пишешь образцовый код для подсказки, то эту память можно всегда преаллоцировать, так как ты точно знаешь, сколько будет вершин и фейсов, чтобы в рантайме ничего переаллоцировать не надо было.
- какие-то вращения по трём осям, что? всё это нафиг не нужно для перевода точки из сферических координат в декартовы. это делается одной строчкой, а не тремя вспомогательными функциями.
- шёл 2020 год. венгерская нотация дошла до дельфи.

это нормальный код для себя, потому что ты к нему сам пришёл и ты делаешь вещи так, как сам привык о них думать. до тех пор, пока ты не знаешь, как это делается стандартными средствами и нормально, я не считаю правильным учить тому же других.

#137
(Правка: 10:00) 9:58, 7 мая 2020

Suslik
Фильм про вас: https://okko.tv/movie/posle-tebja

Ну видимо мне тут делать больше нечего.

#138
(Правка: 14:51) 14:37, 7 мая 2020

Mikle
> Но, в конце концов, это не статья, а, всего лишь, подсказка. Я не против
> публикации, но хотелось бы услышать мнение "паскалистов".
Все это верно с одной стороны, но мне кажется для кода это должно быть прежде всего в одной стилистике. То есть если код писался под API например GL то там функция glRotatef принимает градусы. Получается что на этом уровне должны быть градусы. С другой стороны "радианы" это "низкоуровневая" прослойка кода, то есть реализация функции. И все таки для небольших иллюстраций лучше использовать градусы с точки зрения понимания и читабельности. (к сожалению не могу посмотреть на сам код)

То есть, увидеть последовательность сборки от отдельных UB строчек кода к полноценному оптимизированному варианту, было бы более познавательно чем, что то одно.

#139
16:12, 7 мая 2020

foxes
> под API например GL то там функция glRotatef принимает градусы.
Никогда в GL не вникал, для меня это сюрприз, если честно.
Градусы плохи тем, что для вычисления любых тригонометрических функций приходится делать два лишних преобразования.

#140
(Правка: 17:07) 17:01, 7 мая 2020

Mikle
> приходится делать два лишних преобразования.
В больших проектах это не принципиально, только в рамках установленного стиля. Поскольку чистое умножение на "константы трансфомеры" компенсируется умножением на составные константы, которые не выкинуть, что то вроде RadToHalfDeg = Rad2ToDeg*0.5. Таким образом эти преобразования просто теряются, если они не под капотом закрытой реализации, а в концепции одного проекта.
Такая проблема может быть и не связанна с конкретным преобразованием, это все решается рефакторингом и причесыванием кода. Просто лучший вариант может не вписаться в требования.

#141
19:53, 7 мая 2020

Mikle
> дело не в константе, а в применении градусов в расчётах внутри программы
Человек не в состоянии мыслить радианами, если он только не чекнутый метематик.

#142
20:00, 7 мая 2020

eDmk
> Человек не в состоянии мыслить радианами
И не надо. Просто у тебя есть угол в переменной, и во время расчётов ты не должен вникать, в каких он единицах. Я же написал:

градусы допустимы только в интерфейсе, все переводы RadToDeg и DegToRad должны происходить сразу после ввода или перед выводом данных.

То есть пожалуйста, мысли в градусах, вводи и получай, но внутри - другое дело.

#143
20:47, 7 мая 2020

Эту стаью увидеть не могу пока, по известным причинам, но предыдущая статья про приседания с ассемблером ради одного вызова QPC была откровенно вредоносной, на мой взгляд.

#144
22:05, 7 мая 2020

return [](){};
Зато в ней комменты очень полезные :)

#145
(Правка: 4:56) 4:46, 8 мая 2020

Mikle
> Градусы плохи тем, что для вычисления любых тригонометрических функций
> приходится делать два лишних преобразования.
функции sin() и cos() принимают радианы не просто так, потому что кому-то в голову взбрело. они принимают радианы, потому что только в радианах выполняется \(\frac{d}{dx}\sin(x)=\cos(x)\) и \(\frac{d}{dx}\cos(x)=-\sin(x)\), в любых других единицах измерения там будут дополнительные множители. например, чтобы получить линейную скорость из угловой, всплывают дополнительные совершенно не очевидные множители, о которых никто нигде не пишет, просто потому что они никому не нужны. равно как и glRotate().

аналогичные проблемы возникают с кватернионами — я ни разу не видел, чтобы кто-то использовал градусные кватернионы, лол.

eDmk
> Человек не в состоянии мыслить радианами, если он только не чекнутый метематик.
опять же, это свидетельствует о том, что у тебя совершенно нет практики работы со стандартными средствами. никто не использует градусы в вычислительном коде, просто потому что радианы удобнее.

#146
8:38, 8 мая 2020

Suslik
> функции sin() и cos() принимают радианы не просто так
> я ни разу не видел, чтобы кто-то использовал градусные кватернионы, лол
Я о том же.

#147
(Правка: 9:10) 9:06, 8 мая 2020

Градусы для людей, радианы для математики и компьютера.

В редакторах в UI — градусы, радианы и кватернионы там не имеют полезного смысла. Я только единичный кватернион знаю и иногда могу предположить по числам, что там 90 градусов в какую-то сторону. А в целом — это просто набор чисел. Поэтому и многие текстовые форматы файлов используют градусы, чтобы можно было их читать и править руками. Поэтому в функциях OpenGL в градусах, чтобы легко было повернуть фигуру в нужном направлении. Это удобно, когда ты строишь сцену программным путем. Дебажить градусы легче, опять же.

Suslik
> они принимают радианы, потому что только в радианах выполняется
Потому что sin и cos вычисляются рядами, которые берут радианы как параметр, по математическому смыслу.

> например, чтобы получить линейную скорость из угловой, всплывают дополнительные совершенно не очевидные множители
Вероятность, чтобы столкнуться с этой задачей — низкая, умноженная на вероятность "забыть о радианах" в этот момент.

#148
(Правка: 9:23) 9:23, 8 мая 2020

wat
> Градусы для людей, радианы для математики и компьютера.
Поэтому я и пишу про перевод в/из градусов сразу на этапе ввода-вывода информации. Ты работаешь с градусами, а программа с радианами.
А вообще градусы - как футы и фунты, к ним людей приучили, но пользоваться ими на самом деле неудобно и неправильно, просто тяжело взять, и сломать традицию. Кроме радианов, единственная естественная мера для измерения углов - это обороты.

#149
(Правка: 9:35) 9:32, 8 мая 2020

Mikle
Футы неудобны, потому что количество дюймов в футах и количество футов в милях — рандомные и разные числа. А миллиметр — метр — километр, отличаются ровно в 1000 раз на каждом шаге.

1234568 дюймов — это сколько миль? Фиг его знает.
1234568 миллиметров — это сколько километров? Чуть больше одного километра.

С градусами здесь нет никакой аналогии.

Градусы конечно же удобнее. Я тебе скажу 45 градусов — и ты угол легко представишь, а скажу 1.93434563445645645 — что ты себе представишь?

Что круг, это 6.283185307109586 или это 6.283185307179586?

Страницы: 19 10 11 1217 Следующая »
СайтФорумОбсуждение