scholar_vit: (Default)
[personal profile] scholar_vit

Прекрасная иллюстрация к тому, что такое настоящий хакер. В последнем номере TUGboat статья Дениса Рёгеля (Denis Roegel, Spheres, great circles and parallels, TUGboat, 30 (1), 80--87, 2009). Он рисовал параллели и большие круги на сфере в программе METAPOST, и для точного построения ему нужна была трехмерная векторная алгебра. Но в METAPOSTе нет типа данных "трехмерный вектор". Рёгель заметил, что программа умеет раскрашивать рисунки, и цвет точки задается тремя параметрами в пространстве rgb (т.е. смешением красного, зеленого и синего). После чего он спокойно пишет:

let vector=color;
let Xp=redpart; let Yp=greenpart; let Zp=bluepart;

def dotproduct (expr Vi, Vj)=
  (Xp(Vi)*Xp(Vj) + Yp(Vi)*Yp(Vj) + Zp(Vi)*Zp(Vj))
enddef;

def vecproduct (expr Vi, Vj) =
  (Yp(Vi)*Zp(Vj)-Zp(Vi)*Yp(Vj),
   Zp(Vi)*Xp(Vj)-Xp(Vi)*Zp(Vj),
   Xp(Vi)*Yp(Vj)-Yp(Vi)*Xp(Vj))
enddef;

def norm(expr V) = sqrt(dotproduct(V,V)) enddef;
def normed(expr V) = (V/norm(V)) enddef;

и дальше строит свои чертежи.

Вот это и есть Настоящее Хакерство(TM).

Date: 2009-09-06 06:27 pm (UTC)
From: [identity profile] slobin.livejournal.com
В скриптовом язычке Second Life тип vector используется и для пространственных векторов, и для цветов в RGB. Что ещё интереснее, сетка точек для описания трёхмерной поверхности импортируется в игру в формате tga или png (картинки), как серия троек чисел (может, с тех пор, как я там последний раз был, и другие lossless форматы стали понимать). Если смотреть на такие "картинки" как на картинки, выглядят очень характерно. Ну и для многих программ 3D моделирования написали плагины для экспорта в таком вот виде.

... Страшнее ведьмы только ведьма под рутом ...

Date: 2009-09-06 06:32 pm (UTC)
jedal: (Default)
From: [personal profile] jedal
> Рёгель заметил
Ну это хорошо известный [в узких кругах] хак, да.

Date: 2009-09-06 06:38 pm (UTC)
From: [identity profile] http://users.livejournal.com/_shadow__/
color 48-битный?

Date: 2009-09-06 07:11 pm (UTC)
From: [identity profile] scholar-vit.livejournal.com
Три действительных числа от 0 до 1, каждое, насколько я понимаю, double precision. По IEEE 754-2008 получается 156 бит (по 52 бита на мантиссу)

Date: 2009-09-06 07:16 pm (UTC)
From: [identity profile] http://users.livejournal.com/_shadow__/
А! ну тогда вообще было бы грех не

Date: 2009-09-06 06:56 pm (UTC)
From: [identity profile] rwalk.livejournal.com
Интересно, есть ли глубокий смысл в совпадении размерностей цветового и физического пространств?

Date: 2009-09-06 07:04 pm (UTC)
From: [identity profile] regent.livejournal.com
Нет.

Date: 2009-09-06 07:18 pm (UTC)
From: [identity profile] scholar-vit.livejournal.com
Есть животные с двух, трех и четырехмерными цветовыми пространствами. Грубо говоря, сколько типов рецепторов - столько и измерений у цветового пространства. У стоматоподов их аж 12 :)

см. http://en.wikipedia.org/wiki/Color_vision#In_other_animals

Date: 2009-09-07 01:32 am (UTC)
From: [identity profile] xottabych.livejournal.com
Очевидно, у животных, которые сохраняют картинки в гамме CMYK, цветовое пространство четырехмерное?.. :-)

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

Date: 2009-09-06 07:18 pm (UTC)
From: [identity profile] http://users.livejournal.com/_shadow__/
у дальтоников они не совпадают. Ну и, наверное, у быков : )

Date: 2009-09-06 08:58 pm (UTC)
From: [identity profile] bgmt.livejournal.com
Нет. Потому что физическое пространство 3+1-мерно.
Впрочем, не только потому.

Date: 2009-09-07 04:06 am (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Физическое пространство хрен знает сколько-мерно. Добавим спиновые размерности. Добавим размерности импульса. И т.д.

Date: 2009-09-07 05:15 pm (UTC)
From: [identity profile] bgmt.livejournal.com
Ну не будем о струнах! Наблюдаемое физическое пространство 3+1-мерно, что там куда свернулось в планковском масштабе, глазами не видно. Что же до размерностей импульса, то мы о конфигурационном пространстве, а не о фазовом. У фазового всё же очень другие свойства. Начиная с отсутствия трансляционной инвариантности по импульсу.

Date: 2009-09-10 08:42 pm (UTC)
From: [identity profile] faceted-jacinth.livejournal.com
Плюс мы всё-таки на самом деле воспринимаем цвет света как четырёхмерный вектор. Есть же палочки ещё, и при низкой освещённости они становятся основными.

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

Date: 2009-09-06 08:50 pm (UTC)
From: [identity profile] kouzdra.livejournal.com
Это какой-то примитивный хак. Из серии, "как очевидно можно, но без острой нужды не стоит"

Date: 2009-09-06 09:39 pm (UTC)
From: [identity profile] kondybas.livejournal.com
Рёгель мыслит в терминах предметной области, а код - лишь инструмент. Бóльшая часть знакомых мне кодеров оперирует в терминах языка, а язык - штука всегда достаточно бессмысленная. Глокая куздра - извините за аллюзию.

Date: 2009-09-06 08:56 pm (UTC)
From: [identity profile] bgmt.livejournal.com
Это гениально.
Завидую, потому что, наверно, я б не догадался.

Date: 2009-09-06 10:00 pm (UTC)
From: [identity profile] ygam.livejournal.com
Использование GPU для неграфических расчетов - многомиллионная индустрия.

http://en.wikipedia.org/wiki/GPGPU

Date: 2009-09-06 11:16 pm (UTC)
From: [identity profile] dmpogo.livejournal.com
Всяко, NVIDIA продает GPU карты без видео выхода.

Date: 2009-09-06 10:47 pm (UTC)
From: [identity profile] http://users.livejournal.com/_glav_/
а чем первые две строчки отличаются от объявления типа
vector = array[3]
Xp=vector(1); Yp=vector(2); Zp=vector(3);

если все необходимые векторыные операции всё равно определяются вручную?
т.е. в чём цимес использования rgb?

Date: 2009-09-07 06:18 pm (UTC)
From: [identity profile] scholar-vit.livejournal.com
А Вы попробуйте скомпилировать это на mp.

Date: 2009-09-07 06:46 pm (UTC)
From: [identity profile] http://users.livejournal.com/_glav_/
простите, я METAPOST не знаю: то, что я привёл было псевдокодом, а не MP-кодом.

Я правильно понимаю, что, в таком случае, этот "хак" - "языковой", а не алгоритмический?

Date: 2009-09-07 06:54 pm (UTC)
From: [identity profile] scholar-vit.livejournal.com
Да, это использование языка (MP) в области, для которой он не был изначально предназначен.

Date: 2009-09-06 11:17 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Гениально!!!

Date: 2009-09-07 04:04 am (UTC)
From: [identity profile] aafin.livejournal.com
Хм. Там же есть mp3d?

Date: 2009-09-07 06:22 pm (UTC)

Date: 2009-09-07 06:49 am (UTC)
From: [identity profile] sergeyr.livejournal.com
Я когда-то по ленности своей сделал трёхслойную карту - первый слой был нормальный визуальный (как оно должно на экране отображаться), во втором в цвета загнал плотности трёх катрографировавшихся элементов в почве, а третий использовал - таки да - как массив координат прицеплённых к этой карте объектов. Собственно, к идее третьего слоя я тогда пришёл через второй, так что меня-тогдашнего можно назвать полухакером. B-)

Date: 2009-09-07 09:30 am (UTC)
From: [identity profile] kmmbvnr.livejournal.com
Встречал людей, которые искренне считают, что хакерство это когда пишешь вот так:
def dotproduct (expr Vi, Vj)=
  (redpart(Vi)*redpart(Vj) + greenpart(Vi)*greenpart(Vj) + bluepart(Vi)*bluepart(Vj))
enddef;

Date: 2009-09-07 11:29 am (UTC)
From: [identity profile] begemotv2718.livejournal.com
В последнем номере TUGboat? Странно, вроде бы довольно старый метапостовский хак.

Date: 2009-09-07 06:32 pm (UTC)
From: [identity profile] scholar-vit.livejournal.com
Возможно, хак и старый - но я узнал о нем из последней статьи, которая в общем-то не столько про этот хак, сколько про совсем другие вещи.

Date: 2009-09-07 12:41 pm (UTC)
From: [identity profile] xgrbml.livejournal.com
Подумаешь! Ну я так делал, когда надо было рисовать двумерные проекции каких-то трехмерных фиговин. Даже хаком назвать рука не поднимается.

Date: 2009-09-08 05:32 am (UTC)
From: [identity profile] cema.livejournal.com
Вроде элементарно, но... чёрт его знает.

Вся наша программистская жизнь сплошные такие хаки. Хак как подвиг: затыкание дыр в чьём-то головотяпстве.

Profile

scholar_vit: (Default)
scholar_vit

January 2019

S M T W T F S
  12345
678 9101112
13141516171819
20212223242526
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 10th, 2026 02:18 pm
Powered by Dreamwidth Studios