Без дополений можно для сцены выставить единицы измерения, и после этого для точек можно задавать координаты в этих единицах. Так же можно в режиме редакторивания отобразить длинну рёбер, размер углов и площадь полигонов.
Оно называется «симуляция одежды», хотя на самом деле это симуляция ткани — болтающейся части одежды. Даже когда её используют для юбок, бывают проблемы с улетанием далеко вверх из-за резкой анимации ног.
Подумалось сделать крестики-нолики на ftp, но нет подходящего сервера. Поэтому сделал zip (ссылка).
Скриншот
Здесь алгоритм противника не идеальный и его можно обыграть :)
* Так как zip просмотрщики слишком умные и сортируют списки, в основном варианте правильная сортировка достигается засчёт малозаметных пробелов. Но некоторые ещё умнее (например, Windows Explorer) и не учитывают начальные пробелы при сортировке. На этот случай есть версия с индексами.
Тут проблема баланса двух сторон.
Стреляющий не доволен что его визуально точный выстрел не засчитывается. А жертва, забежавшая в укрытие, не довольна умирать от выстрелов просчитанных в прошлом. И если в случае стрелка игрок может научиться стрелять наперёд, то в случае жертвы, игрок ничего сделать не может.
Он может вообще этот цикл убрать, если определит что Contains ничего не изменяет. Правильным вариантом будет сохранять результат от Contains в переменную снаружи цикла, и как-то использовать эту переменную после цикла.
Скачал пример, запустил в однопоточном варианте для LargeSample.gif (400х400, 100 кадров). Получилось Decode: 2.3s, Encode: 5.5s.
Запрофайлил, и сразу в глаза бросается .NET Memory Allocations почти 4GB, что много для такой гифки (все кадры в 32 bit цвете без сжатия — 64MB).
Скриншот из профайлера
Я думаю после оптимизации аллокаций всё станет достаточно быстро без многопоточности и где угодно.
Нужно:
— Указывать capacity для коллекций при инициализации
— Заменить ключ словаря со String на что-нибудь более легковесное
— Очень желательно не использовать LINQ с тысячами элементов
Сделал аналогичный тест, только без тяжелых методов фреймворка и аллокаций.
Тестовый метод считает побайтовый XOR от длинны строки и её символов.
Мой вывод: разница на уровне погрешности, что удобнее для задачи, то и следует использовать.
Код: gist.github.com
Подробные результаты
BenchmarkDotNet=v0.10.14, OS=Windows 7 SP1 (6.1.7601.0)
Intel Core i5-2500 CPU 3.30GHz (Sandy Bridge), 1 CPU, 4 logical and 4 physical cores, Frequency=3232187 Hz, Resolution=309.3880 ns, Timer=TSC
Clr: .NET Framework 4.6.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.6.1590.0
Method Mean Error StdDev
Native 307.6 us 1.688 us 1.579 us
NativeUnsafe 292.5 us 2.178 us 2.037 us
NativeDelegate 307.8 us 1.743 us 1.631 us
LinqExpressions 308.0 us 2.393 us 2.239 us
ReflectionEmitExpressionRunAndSave 307.4 us 1.437 us 1.344 us
ReflectionEmitExpressionRunAndCollect 307.5 us 1.776 us 1.575 us
ReflectionEmitExpressionRun 306.9 us 1.628 us 1.522 us
ReflectionEmitNativeRunAndSave 307.2 us 1.185 us 1.108 us
ReflectionEmitNativeRunAndCollect 308.8 us 2.162 us 2.022 us
ReflectionEmitNativeRun 307.0 us 1.474 us 1.378 us
Насколько я понял, Default Interface Methods будет также применяться для пропертей и индексеров. Возможно это поможет наконец-то отнаследовать IList<T> от IReadOnlyList<T>.
Странно что им для блокировки понадобился новый закон. Есть же уже закон про хранение персональных данных в РФ, из-за которого заблокировали linkedin. Раз воздействовать они могут только блокировками, значит представительств у нас нет, и серверов с персональными данными тоже.
Пару лет назад пробовал обогревать комнату (~18м2) майнингом на двух видеокартах. Заметного потепления не было, и пришлось купить обычный обогреватель.
public static IEnumerable<string> Names(this int index)
{
if (index.IsDivisableBy(3))
yield return "Kiss";
if (index.IsDivisableBy(5))
yield return "Miss";
}
string s = string.Concat(i.Names());
if (s.Length == 0)
// ...
Это отличная демонстрация избирательности применения российских законов. Т.е. по сути всех (гугл, твиттер, фб) надо заблокировать за невыполнение указаний как линкедин, но из-за более крупной аудитории приходится выдумывать полумеры.
Недавно купил себе Wacom One и был удивлён что для его работы в системе запускается 5 сервисов (3 системных и 2 от имени пользователя). Почему за 50 лет мыши научились просто работать, а планшету нужно столько костылей?
И ещё жадность Wacom: в самой простой линейке (One), нет возможности делать настройки под конкретное приложение, что очень не удобно.
Здесь алгоритм противника не идеальный и его можно обыграть :)
* Так как zip просмотрщики слишком умные и сортируют списки, в основном варианте правильная сортировка достигается засчёт малозаметных пробелов. Но некоторые ещё умнее (например, Windows Explorer) и не учитывают начальные пробелы при сортировке. На этот случай есть версия с индексами.
Тут проблема баланса двух сторон.
Стреляющий не доволен что его визуально точный выстрел не засчитывается. А жертва, забежавшая в укрытие, не довольна умирать от выстрелов просчитанных в прошлом. И если в случае стрелка игрок может научиться стрелять наперёд, то в случае жертвы, игрок ничего сделать не может.
У массива нет метода Contains, это LINQ метод. Соответственно результаты зависят от реализации LINQ и оптимизатора.
Более правильный вариант:
Запрофайлил, и сразу в глаза бросается .NET Memory Allocations почти 4GB, что много для такой гифки (все кадры в 32 bit цвете без сжатия — 64MB).
Я думаю после оптимизации аллокаций всё станет достаточно быстро без многопоточности и где угодно.
Нужно:
— Указывать capacity для коллекций при инициализации
— Заменить ключ словаря со String на что-нибудь более легковесное
— Очень желательно не использовать LINQ с тысячами элементов
Тестовый метод считает побайтовый XOR от длинны строки и её символов.
Мой вывод: разница на уровне погрешности, что удобнее для задачи, то и следует использовать.
Код: gist.github.com
Насколько я понимаю, каждый квартал заработок до 3000$ не облагается процентом. Чтобы не отвлекать людей по мелочам.
Странно что им для блокировки понадобился новый закон. Есть же уже закон про хранение персональных данных в РФ, из-за которого заблокировали linkedin. Раз воздействовать они могут только блокировками, значит представительств у нас нет, и серверов с персональными данными тоже.
Пару лет назад пробовал обогревать комнату (~18м2) майнингом на двух видеокартах. Заметного потепления не было, и пришлось купить обычный обогреватель.
Под windows 10 с видеокартой nvidia 4 монитора замечательно работают.
И ещё жадность Wacom: в самой простой линейке (One), нет возможности делать настройки под конкретное приложение, что очень не удобно.