All streams
Search
Write a publication
Pull to refresh
48
0.5
Кирилл @JerryI

физик-теоретик

Send message

Можно в целом думать о WASM, как скажем native module в ноде, или binding к какой-то либе на С++ из питона и т.д.

  1. Зависит от того, как спроектировали. Если TypedArray, то передается ссылка, без переупаковки и всяких memcpy. А если надо работать с большими разношорстными объектами, то тут напрямую выгода от wasm может и не быть большой. Зачастую ускорять надо как-раз что-то однотипное.

С другой стороны фигма это почти по масштабам как ФШ, или иллюстратор. Они тоже кушают бывает много. Ну и команда их больше и времени у них на эволюцию было больше.

При этом anyon_e загружается на три секунды быстрее, чем собственный MacBook Pro Хуана

Как будто никаких других достоинств не было и решили высосать из пальца что-то такое кхм

Дорого. Не хочется сэмплить по слою сферы, на WL это очень неэффективно будет. Дешевле на тонком параллелепипеде, так как выйдет чистая и простая функцию, которая JIT-ом оптимизируется, и потом другой такой же свернуть.

Либо я что-то упускаю из вашей идеи...

А почему нельзя записать лишь различия (в виде команд куда и что вставить) + оригинальный файл?

Два файла - оверхед, не?

Вот бы git работал также. Никак не пойму, зачем там хранить в zip две копии файла (до и после)

Чекбоксы уже поддерживаются, жаль только добавлять их через формы это костыли.

Добавил в конце статьи. Задокументировал, но не без вопросов конечно.

Верно! Тоже видел, и как я понял, облака у него шейдером сделаны. Довольно физично

Попробовал улучшить ситуацию. Берем текстуру шума (на этот раз 256х128)

n = 256;
k2 = Outer[Plus, #, #] &[RotateRight[N@Range[-n, n - 1, 2]/n, n/2]^2];

spectrum = With[{d := RandomReal[NormalDistribution[], {n, n}]},
   (1/n) (d + I d)/(0.002 + k2)]; 
spectrum[[1, 1]] *= 0;

im[p_] := Clip[Re[InverseFourier[spectrum Exp[I p]]], {0, ∞}]^0.5

p0 = p = Sqrt[k2];

testImg = im[p0 += p][[128;;, All]] // Image 

преобразуем

lat[y_, rad_:1] := ArcSin[(2 theta[y, rad] + Sin[2 theta[y, rad]])/Pi];
lon[x_, y_, rad_:1, lonzero_: 0] := lonzero + Pi x/(2 rad Sqrt[2] Cos[theta[y, rad]]);
theta[y_, rad_:1] := ArcSin[y/(rad Sqrt[2])];
mollweidetoequirect[{x_, y_}] := {lon[x, y], lat[y]};

testImg = ImageForwardTransformation[
  testImg,
  mollweidetoequirect,
  DataRange -> {{-2 Sqrt[2], 2 Sqrt[2]}, {-Sqrt[2], Sqrt[2]}},
  PlotRange -> All
]

Получаем следующее изображение

Затем, как обычно Marching Cubes

With[{plain = ImageData[testImg]}, Table[plain Exp[-( i)^2/200.], {i, -20,20}]];

{vertices, normals} = CMarchingCubes[%, 0.2, "CalculateNormals" -> False];
vertices = With[{
  offset = {Min[vertices[[All,1]]], Min[vertices[[All,2]]], 0},
  maxX = Max[vertices[[All,1]]] - Min[vertices[[All,1]]],
  maxY = Max[vertices[[All,2]]] - Min[vertices[[All,2]]]
}, Map[Function[v, With[{p = v - offset}, {p[[1]]/maxX, p[[2]]/maxY, p[[3]]}]], vertices]];

Теперь проецируем эти вершины на сферу

pvertices = Map[Function[v,
    With[{\[Rho] = 50.0 + 0.25 (v[[3]] - 10), \[Phi] =  2 Pi Clip[v[[1]], {0,1}], \[Theta] =  Pi Clip[v[[2]], {0,1}]},
      {\[Rho] Cos[\[Phi]] Sin[\[Theta]], \[Rho] Sin[\[Phi]] Sin[\[Theta]], \[Rho] Cos[\[Theta]]}
    ]
  ]
, vertices];

{
  clouds = GraphicsComplex[0.017 pvertices, Polygon[1, Length[vertices]]]
} // Graphics3D

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

И это тоже интересная задача!

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

Спасибо! Попробую

А понял, вы про полюса облаков. Я так кстати и не понял, как можно меш квадратный натянуть на сферу. Вычислительная геометрия подсказывает, что без искажений - никак. А marching cubes на большом поле делать довольно дорого (если сразу шум генерить на сфере)

Так что - если знаете - пишите!

;D спасибо

  1. Так и выходит, солнце матрицей поворота крутит по орбите (система отсчета на Земле)

  2. Блин, пытался раскодировать, так и не понял про Д33. ;(

Странно, тыкал плей, но ничего не происходит

Ios Safari

Ссыль на гит-репу была бы полезнее

Не, видимо Intel не тянет FPGA. Как поглотили Альтеру, так больше никакого выхлопа в этой среде. Хотя жила ведь золотая... гораздо более интересное, чем GPU, NPU, TPU

Перечитал те комментарии, вы как будто додумываете. Почти в каждом приведен тот или иной аргумент с которым можно поспорить. Вам минус и тот влетел только в пером комментарии

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

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

Но вот так вот обидку кидать «сделаю недоступным в России» - это себе в ногу сразу выстрел. Вы «мстите» небольшой группе людей, которая оставила негативный отзыв, в то время как большая часть просто не с реагировала никак (видимым образом). И ваш шаг в сторону блокировки если не вызовет доп негатив, то увеличит безразличие от нейтральной группы, которой может быть приложение даже и заинтересовало.

Ну хоть какое-то исследование. Вы же зачем-то его сделали, значит была проблема/задача, вы стремясь решить ее сделали такой тул. Теперь финальная стадия - тестирование в реальном кейсе, лучше несколько, а потом глянуть че как повлияло.

> Это для нормальных (в плане писхологического портрета) людей.

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

Information

Rating
1,983-rd
Location
Augsburg, Bayern, Германия
Registered
Activity

Specialization

Fullstack Developer
Web development
Maths
C
JavaScript
FPGA
OpenCL
Wolfram Mathematica
Research work