Как стать автором
Обновить
30
0

Пользователь

Отправить сообщение
Я попробовал и получил.

image

Правда, не сразу. Когда мы делали плоское освещение, наш источник света имел координаты (0, 0, -1); Т.е. координата Z возрастала в направлении «от нас». Нормали модели (внутри *.obj) наоборот сохранены в пространстве с направлением Z «к нам». Тогда источник света должен иметь координаты (0, 0, 1), что соответствует системе координат openGL, но не соответствует нашим изначально выбранным.

Чтобы работали оба случая, по-быстрому можно поменять знак нормали для каждой грани (для случая плоского освещения):
Vec3f n = (world_coords[1] - world_coords[0]) ^ (world_coords[2] - world_coords[0]); // поменять местами множители
n.normalize(); 
float intensity = n * light_dir;
Несомненно, богатым и здоровым быть лучше, чем бедным и больным. Правда, не всегда получается.
Такие тексты пишут те, у кого нет опыта переписывания функциональности с нуля из-за того, что предыдуший вариант нихрена не расширяем и простым рефакторингом там не обойтись.

Не только «те» пишут такие тексты. И у меня есть такой опыт. В моем случае предыдущий вариант быстро написанной «нихрена не расширяемой» системы позволил закрыть сделку по продаже нескольких единиц крупной техники по совокупной стоимости сильно превосходящей годовую зарплату программиста. Сейчас времени больше и требования шире — наша новая система и модульная, и кроссплатформенная, и всё остальное.

Вы делаете ту же ошибку, что и многие другие программисты, помещая программиста в центр. Про это статья.
Я мечтаю, чтобы у каждого opensource была параллельная коммерческая лицензия. Платная лицензия позволяет предъявлять претензии.

Сейчас же ситуация выглядит так:
opensource: «Если что-то будет работать плохо или не будет работать совсем, я верну вам деньги.»
я: «Но я же ничего не платил.»
opensource: «Вот именно.»

Немного спасают maintainer'ы, которые всего за 50$ (OpenSceneGraph) — 125$ (x264) в час согласны доработать свой код. К чести maintainer'ов, работа всегда выполнялась четко, в срок и полностью соответствовала ожиданиям.
А бывает когда-нибудь (хотя бы раз в два года), что виноват программист?
Сколько стоит ваша библиотека и какие преимущества перед Qt Data Visualization & Charts, которая интерактивна, кроссплатформенна и из коробки поддерживает анимационные переходы?
Всё так. Это прекрасно, что есть люди, которым нравится программировать. До тех пор, пока работа выполняется, вам никто не начнет рассказывать про «правильное отношение». Мало того, работодатель будет только рад найти программиста на 60 тыс., который всю жизнь будет прикрывать задачи на 60 тыс. Работодатель не планирует рост заплаты, развитие, продвижение по карьерной лестнице и т.д., и с удовольствием (и легким сожалением) с этих же 60 тыс. проводит программиста на пенсию. Дворник с 20-летним стажем всё равно будет получать зарплату дворника, как бы ловко он не управлялся с метлой.

Эта статья не для вашего начальника, а для вас. Потому что в один прекрасный момент понадобится человек, готовый взять на себя ответственность в весомом денежном эквиваленте, в условиях ограниченных ресурсов. И было бы очень здорово, если таким человеком оказались бы вы.
Это очень круто. Побольше бы таких, как вы.
Вот. За последние пару дней текст вопроса был отредактирован настолько, что потерял первоначальный смысл (да и тему прикрыли). Теперь он называется «кто бы мне подсказал, как правильно», без затрагивания глубинных причин. Жаль.
Кто-то должен был в этом месте написат про valve :) В дополнение советую почитать Майкла Абраша (не могу сходу найти русский вариант) про историю valve, как он туда попал и что, всё-таки, не совсем «вот тебе зарплата — занимайся чем хочешь».
Теоретически, я всё могу написать сам. Практически, понятное дело — не могу. Мне нужны дополнительные руки, которые я готов купить. Каким-то рукам я могу доверить лишь код для заготовленных мной интерфейсов. Какие-то руки я могу попросить придумать такие интерфейсы. Еще более квалифицированным рукам я могу поручить провести сравнительное исследование разных решений и выбрать лучшее (тут я ожидаю понимание коммерческого следствия лучшего решения). И совсем хорошим рукам, которых очень-очень-очень-очень мало, я готов отдать полную ответственность и людей в придачу.

В зависимости от рук, которые мне нужны я и буду составлять описание вакансии. При этом, я никогда не видел ситуации, в которой программиста нанимали бы со словами: «Вот тебе зарплата — занимайся чем хочешь.»
Точно. Тем не менее, рядовому разработчику не лишним будет знать, чем руководствуется менеджер или тимлид. Если только, конечно, рядового разработчика вполне устраивает вечно оставаться рядовым разработчиком.
В статье описана не конкретная методология разработки, а один из руководящих принципов, основанных на ценности создаваемого, который, если его принять, может помочь воспитать в себе более хороший стиль программирования. Этот же принцип пригоден для любого производства. Качество проработки мелких деталей зависит от того, за сколько вы собираетесь продавать готовый продукт. Сравните резные деревянные детали на мебели разной ценовой категории.

Я не агитирую за т.н. «говнокод» и не говорю, что перфекционизм — это плохо. Я лишь говорю о том, что код должен соответствовать своей бизнес-ценности. У нас есть части, которые отполированы до блеска — это разные транспортные уровни. Потому что, если не будет работать передача данных, то ничего работать не будет. А есть части, которые намерено сделаны дешево. Скажем pdf-просмотрщик на pdf.js — тормозит, ест много памяти, но свою цель выполняет и написан за один вечер (левой ногой).

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность