Delirium coding
Comments 83
-50
лучше девушку себе заведите :)
зы: Я когда-то, давным-давно, на Дельфи подобным страдал
зыы: лабиринт сделайте :)
+13
Да, дежурить по ночам на пару с подругой, конечно, веселее, но так и с работы попереть могут :)
+3
Наверное, shushu советовал девушку-программиста завести, чтобы разбиралась с физическими движками;)
-31
Что за мода кодить на языках, которые для конкретной задачи мягко говоря не приспособлены?
Сначала веб-сайты на ЛNСPе, теперь вод анимация на PHP.
+9
Какая разница на чем писать, машинный код от этого не мутирует… пару регистров туда-сюда, а суть дела не меняет. Главное результат! В целом, автор любознательно-увлекательный человек, чем и порадовал:)
0
Даже если отбросить just for fun, то далеко не всегда издержки на освоение и развёртывание стэка новых ЯП/технологий/фреймворков/библиотек окупаются для разовых задач. Грубо говоря, зачем изучать Perl, если нужно один файл распарсить, или Erlang, если нужно чат написать?

+2
Почему бы не расширить свои горизонты? Кроме того изучение нового открывает преимущества — сайт на эрланге может оказаться гораздо более масштабируемым и отказоустойчивым, а на лиспе, как показала практика — легко выдерживать хабраэффект. Что же касается издержек — они перекрываются профитом от новых знаний и подходов
0
Разработка с использованием новых технологий, тем более новых парадигм не даёт возможности сколь нибудь точно оценить время на разработку в отличии от старых, проверенных. Что опять переносит область их использования в just4fun, по крайней мере для коммерческих решений с чётко ограниченными сроками риски могут быть неприемлемы, даже если время с запасом выделено. Проще, конечно, если в команде есть человек, уже ими владеющий, способный хотя бы ткнуть куда рыть, а вот полностью с нуля переходить…
0
Мы все когда-то учились ходить… Кому-то этого оказалось достаточно, а кто-то сел на велосипед. Не хотел бы я работать в одном коллективе с людьми, которые не хотят брать на себя риски, связанные с обучением новому.
0
Я говорил, прежде всего, о коммерческих разработках и рисках в масштабе фирмы. Согласитесь, что брать на себя, например, разработку сайта на рельсах с чётко ограниченными сроками, реальными для разработки php, когда никто из сотрудников не владеет даже основами руби, но все гуру php, несколько опрометчиво. Тем более, если берётся заказ на языке со совсем другой парадигмой.

И опять-таки, отдельные сотрудники изучают новые технологии «за свой счёт», если фирма это не оплачивает. Если оплачивает, значит она брёт риски на себя.
+16
Мда, теперь это на пхп делают.
А я такими вещами на Бейсике под DOS занимался. Фонтанчики, горящий огонь…
UFO landed and left these words here
+2
Да, ещё бывают растаявший лёд, высохшая вода и съеденный обед. Но могут ли они «быть», если их, по факту, нет?

Gee, кажется мы тут готовы сформулировать новый парадокс обыденных вещей.
+1
Брат! Я тоже в своё время развлекался подобным на QBasic. Ещё игрушки простые делал.
А на PHP уже в универе писал эмулятор файловой системы ;)
+2
а я на js заодно мьютексы, симафоры, модельку перекрестка, нахождение пути (php), трассировка на плоскости (php)… ну и конечно любимая сортировка пузырьком из курса в курс =)
0
ну статья же о just4fun + там было не совсем мьюетксы, а скорее демонстрация работы… если отковыряю в старых бекапах (это было 5 лет назад) — покажу
0
Автор рулит, Васька вообще гений в области программирования, он что 3D на РНР что 2D на OpenGL во всём шарит, он гений…

+1
Интенсивность запросов
изображения превысила
допустимый лимит.
Изображение временно
отключено.
0
Я посоветую большее — перезалить все фотки на какой-нибудь хабреффект и никогда впредь не пользоваться говнохостингами типа радикала :)
0
Когда я в первый раз увидел первую картинку, мне показался кот, который с вытянутыми руками бежит на вас, а потом рассыпается. =)
-12
хабред. я таким в школе на бэйсике/VB страдал… вырастите рекурсивное дерево и умрите в экстазе!
+3
Сколько энтузиазизма!
Да с таким можно горы свернуть!
Особенно, если его направить в правильное русло, например в WebGL ( ru.wikipedia.org/wiki/WebGL )…
+2
Спасибо за наводку, на первый взгляд — гораздо проще и удобнее OpenGL
0
Шикарно, феерично, безумно! Дайте автору жирный плюс за меня.
UFO landed and left these words here
+6
Автор! Я даже придумал реальное применение твоему шедевру :)
Попробуй реализовать из этого Captcha! А в следующем посте покажешь что получилось.
Не ново, конечно, но на php я похожих проектов с анимированным исполнением не встречал.
+1
И что в этой капче будет революционно нового кроме анимации, в плане надежности?
+1
А это уже на усмотрение автора.
Я лишь выразил идею по поводу применения.
0
А если рисовать по букве на кадре и fps повыше? Пользователь не особо заметит мерцания, а некоторые боты, по моему, кадр для распознавания выдергивают. От китайцев методика, конечно, не защищает.
0
Да, не заточенные боты будут видеть только первый кадр. Методику можно усложить, если прорисовывать буквы постепенно. Таким образом, ни на одном кадре не будет целых букв.
А пустое место заполнять шумом. Чтобы нельзя было получить четкие буквы, совместив все кадры в один.
+1
Можно с постепенного проявление добавить вращение проекции в 3D, состоящей из точек.
Я думаю, что если кто-то возьмётся распознать такую капчу, то бот скорее всего будет брать кадры из гифки и прогонять циклично каждый кадр с целью подбора наиболее подходящего.
+1
Ещё раз хочу выразить тебе респект!
Классно вышло.
Любая идея, даже просто ради развлечения или самореализации так или иначе имеет развитие. Нужно только найти угол с которого надо посмотреть на неё. Для программиста такие затеи — это как судоку решать или кроссворды. Ставишь перед собой задачу и делаешь, занимательно, интересно на самом деле.
Так держать!
+3
>Бред? Возможно. Но не бойтесь реализовывать самые бредовые идеи. Это — лучший способ научиться думать на языке программирования.

Полностью согласен с автором. На turbo pascal 7, в школе, я писал подобные вещи, помню самым сложным для меня было написание градиента, ну знаете, пиксельного =)

Придумывание и реализация подобных вещей позволяет полностью вникнуть в логику программирования, а то сейчас мода пошла знают <?php echo «Hello World!»?> и называют себя программистами, а попросишь перевести число в двоичную систему, сразу обзываются…
+2
Как тут все просто описано, а я в свое время долго мучилась с обменом импульсов тел.
+14
бред бредом, но где то на 2-3 курсе меня приспичило написать 3д рендер ландшавтов на php — just4fun, и вроде даже не плохо получилось (кликабельно):

думал что это так и останется just4fun, когда внезапно на работе не потребовалась простенькая визуализация чертежей этажей здания (вытянуты из плоского вектора, крутятся, поэтому разрывы видны… ну и там еще плюшки типа выбора объекта, рисование пути прохода и т.д.):

это я к тому что ничто не проходит бесследно и любой just4fun — это куча экспы, которая позже может неплохо пригодиться =)
+2
3D рендер в php/js? там всего 2 формулы нужны для отображения точек (x,y,z) на экране (x,y) + сортировка полигонов по Z координате (для рендера этажа вообще по Y сортировал заранее, так как угол наклона не меняется):
x_monitor=x*FOV/(z+FOV)
y_monitor=y*FOV/(z+FOV)
FOV это типа ширина угла обзора, сами формулы можно наращивать, например домножить на 0...0.9 — отдалим сцену или на 2...3...10 — приблизим сцену или делать сдвиг для перемещения всей сцены
конечно если надо написать полноценный движек, то формулы посложнее, но в целом я отталкивался от них =)
вращение наизусть не помню, а в коде нечто страшное, единственно что скажу — всякие синусы косинусы загоняйте сразу в массив (с нужным шагом угла) — в разы быстрее будет работать, нежели каждый раз высчитывать cos/sin заново для тех же самых углов поворота
ЗЫ: сейчас наверное ниже откоментят про матричные преобразования для вращения/сжатия/etc
+1
а еще у меня полигоном считается 4х угольник — это конечно неверно (надо треугольник), но так как все 4 точки находятся в одной плоскости, то это совершенно не критично, а рисовать на канве в 2 раза меньше
+1
Мда, каждый раз, когда читаю комментарии от людей «в теме», чувствую себя полным болваном :). Просто вы, описывая процесс в общих фразах, представляете его у себя в голове, а мне, например, неясны нюансы вроде сортировки полигонов и предшествующих этому этапах, как полигоны получаются и что содержат и т.д. Хотя, может, я один такой, увы, но имея на руках формулы про матричные преобразования, хотелось бы развернуто понять, как превратить их в горы, холмы и части здания на экране.
+2
не не, я не в теме на самом деле, просто где то давно нашел формулы и пользуюсь ими… в кратце (местами неверно для общих случаев типа написание мега движка):
1) есть массив из полигонов, каждый полигон это многоугольник из 4х точек (квадрат, трапеция и т.д.), каждая точка задается 3мя координатами (x,y,z)
2) делаем нужные нам преобразования, например вращение, получаем новый массив точек, где x y z уже новые, для ясности это у нас будет x' y' z'
3) сортируем этот массив по z' (в данном случае находим среднее арифметическое между всеми z' для полигона=(z'1+z'2+z'3+z'4)/4), чтобы самый дальний объект был самым первым в массиве
4) с помощью формул выше рисуем сцену: т.е. рисуем четырехугольник из глубины (т.к. на 3 шаге их так отсортировали)
5) ну и собственно всё

небольшие хитрости, баги и неточности для варианта выше:
1) делаем 2 канвы: с 1 рисуем, когда нарисовали, показываем её и начинаем рисовать во 2, когда в ней нарисовали — показываем и рисуем в 1 и т.д.
2) синусы/косинусы заранее загоняем в массив, памяти скучаем немного, но пересчет будет быстрее
3) правильнее полигоном брать 3хугольник, но в частных случаях этим можно пренебречь
4) каждый полигон должен быть виден только с одной стороны, поэтому надо смотреть куда он повернут (т.е. например некоторые грани куба мы явно не увидим, так как они повернуты от нас и нет смысла тратиться на их отрисовку) и не выводить те, которые не видны
5) разобраться что такое матричные преобразования, так как большинство статей в инете на них опирается (у меня они стерлись из мозга сразу после сдачи соответствующих экзаменов)
6) не спрашивайте меня про текстурирование, свет, тени и т.д. — это в разы сложнее чем вывести 4х уголник + делать это софтверно на данном этапе развития всяких API (directx, opengl) имхо глупо (опять же если не стоит какой то специфичной задачи)
+1
чтобы узнать где находиться центр глубины (Z) 4хугольника, чтоб потом по этой глубине сортировать (если писать правильно, то надо 3х угольник брать конечно же)
0
Еще, кстати, есть ряд вопросов:
1) для каких углов необходимы значения синуса и косинуса? Для всех в пределах 360 градусов с каким-то определенным шагом?
2) Как «посмотреть», куда повернут полигон? Есть ли какой-то универсальный метод?
0
1) для всех 360* с нужным шагом (+1 или +0.5)
2) лучше в гугле поищите или почитайте статейки на том же gamedev
а вообще смотря что надо… может быть лучше изучить opengl? а не писать свой software рендер?
0
Давайте погуглю, просто хотелось бы узнать, каким методом пользовались вы.
OpenGL, конечно, крут, но и он базируется на каких-то принципах, которые нужно изучить вначале :)
0
у меня програмный рендеринг, так как для php другого варианта не видел 4-5 лет назад, для js еще не было webgl, а с флешем связываться не хотелось… просто я же незнаю что и где нужно вам, к примеру если есть цель написать на сях/делфи/etc под винду, то нет смысла загоняться с кучей формул/матриц (если только это не ради развлечения), если API всё это дает уже в готовом виде
0
Я понимаю, что у вас программный рендеринг. Задача стоит осознать, как все происходит не на уровне API, а под ним, just4fun :) Поэтому мой вопрос просто в том, чтобы вы рассказали об используемых вами методах, да и комментарий мой с просьбой о статье кто-то да плюсанул, видимо, людям все же интересно. Как-то так.
0
ну я рассказал об основном, всякие преобразования можно найти, загуглив например «вращение вокруг произвольной оси в пространстве»…
посмотрите algolist.manual.ru/graphics/3dfaq/index.php — кажется это именно то что надо, там и про проекцию на экран и про z-буфер и про вращения/повороты и т.д.
+ на на том же gamedev есть несколько хороших статей про рендеринг, вращения, физику и т.д. (т.е. которые не опираются на API, а голая математика)
0
более полный вариант формулки для отображения 3д на плоскости (на мониторе)
sx = xSize/2+x*dist/(z+dist),
sy = ySize/2-y*dist/(z+dist).

xSize, ySize — размер экрана, x,y,z — точки которые рисуем, dist — дальность от камеры до сцены (точнее до начала координат), sx,sy — уже то что надо отрисовать
-6
Какое говно на хабре, а.

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

Но так я думал раньше. Так я думал всегда. Так было всегда в моем окружении. Это было обычное становление программистской молодежи. Но блин! Что я вижу теперь? На Хабре – на сайте, претендующем называться ведущим IT-шным блогом, со строгими правилами оформления постов и даже модерацией – я вижу этот высер! Которого у каждого быдлокодера как макулатуры в сарае, выше крыши.
И этот пост еще каким-то образом попадает в «Рекомендуемые записи» моего Гугл Ридера? Т.е. людям нравится читать это со страниц Хабра?

Хабр, твою мать, тебя одолела школота, засирает тебя как какую-то жж-шэчку. То сортировка пузырьком, то получасовой опыт написания «мегакрутой программы, которая читает инфу с фейсбука», то вообще нечто такое тупое, что я бы даже в жж свой не запостил, если б вел.

Хабр. Мне тебя жаль.
+1
один пипл пишет, другой пипл хавает — ничего не поделаешь =) надо делать свой хабр, с коллайдерами и профессорами
+2
Вы такой крутой, у меня даже на секунду дыхание перехватило. Поделитесь своими разработками, которые не стыдно показать и которые, по вашему мнению, достойны были бы быть на хабре.
0
на сайте, претендующем называться ведущим IT-шным блогом

Претендующем? Раньше, может, такое и было. Сейчас это коллективный блог компаний и жалоб на очередной нехороший сервис. Хорошо, что сюда еще пишут какие-то статьи, напрямую связанные с IT.
+2
Пост опубликован в блоге «Кодобред» и не выдаётся за откровения гуру. Какие могут быть вопросы?
0
0 статей — лучшее подтверждение своей скромности, надо полагать…
0
Незнание элементарных правил хабра – таких как зависимость кармы от возможности публиковать статьи – лучшее подтверждение тупости среднестатистической хаброшколоты, надо полагать…
0
Какой забавный…
Ну неужели такой выдающийся ум не мог нигде опубликовать результаты своей деятельности? Я бы с превеликим удовольствием почитал Ваши статьи.
P.S.: великим умам грамотность чужда — она лишь для тех, у кого свободного места в голове в избытке, надо полагать.
-1
А кто ты такой, чтобы я с тобой делился чем-то полезным или интересным? Один из тысяч бездарных хомячков, заполонивших хабр?
Нет уж, я своими открытиями и знаниями делюсь с теми, кто этого заслуживает – с теми, кто имеет потенциал, или от кого самому интересно что-то узнать. И с ними самым интересным делюсь лично, а не публикую это, дроча на статистику или карму. А от вас только однострочные, превращающие хабр в помойку, подъебки. За это я вам должен какие-то ссылки давать?
Вот когда достаточно повзрослеешь, чтобы думать прежде, чем писать (да, чтобы не писать зря, например, вон тот однострочный коммент), чтобы хоть кому-то было интересно тебя прочесть, тогда очеловеченный и возвращайся ко мне с вопросами, смененными с вида «а дайте что-нить почитать, дайте читать! дайте хавать! а я тут просто погажу на вас в комментах, а вы давайте пишите мне статьи!» на что-нибудь более толковое и вызывающее у меня хоть какой-то интерес к тому, чтобы чем-то поделиться.
UFO landed and left these words here
UFO landed and left these words here
Only those users with full accounts are able to leave comments. , please.