Нотатки лінгвомана

Блог про подорожі, країни, мови, програмування, музику, книги та купу інших речей, які мене захоплюють

Page 5 of 7

Processing Challenge – День 8. Створюємо паттерни з ліній, кольорів та rotate()

Ще зранку я не міг придумати, що ж саме зробити у сьогоднішньому скетчі. Важко бути креативним у цій темі щодня, але мене врятував Андрій Клен запропонувавши кілька ідей. Одна з них —  паттерн Пола Сміта, відомого дизайнера одягу. Виглядає він, наприклад, так:

Ідея мені дуже сподобалася і я вирішив її повторити. Нижче зображення створені у процесі експерименту. Під кінець я захопився і вийшов далеко за межі ідеї паттерну Пола Сміта. Далі все побачите самі, а ще зможете легко самостійно згенерувати безліч парттернів змінюючи всього 3 параметри в коді.  Continue reading

30 Day Processing Programming Challenge – День 7. Generative wallpapers.

Спираючись на попередні 6 днів експериментів у процесінгу я вирішив створити щось, що хоча б трохи схоже на кінцевий продукт. Отже сьогодні вийшли generative шпалери для робочого столу та, якщо їх обрізати, для смартфонів. За основу я взяв скетч з третього дня, пограв з кодом, змінив параметри і погляньте, що вийшло. Викладаю всі, на мою думку, прийнятні варіанти. Всі зображення розміром 2880 x 1800, а отже підійдуть навіть для найбільших екранів. Співвідношення сторін: 16:10. hires140708_212715 Continue reading

День 6. Як зберігати великі зображення у Processing.

Сьогодні я вирішив зосередитись не на вигадуванні візуальних образів, а на запиті від @coloristica у твіттері. Марина питала як можна зберегти скетч у розмірі в кілька разів більшому за розмір самого вікна програми. Наприклад, розмір вашого скетча 640 x 640 пікселів, а вам треба зберегти у 3200 x 3200.

Я трошки погуглив, трохи дописав сам і ось, що вийшло:

hires140708_015540

Початковий розмір скетчу був якраз 640 x 640 px, але тепер при кліку на клавішу “s” програма  зберігає його у файл із роздільною здатністю 3200 х 3200 px.  Якщо ви зазирнете в код, то побачите там функцію void saveHiRes(int scaleFactor), тут параметр scaleFactor відповідає за кількість разів збільшення зображення.

Як бачите, збергати великі зображення досить просто.
Код скетчу на Github.

30 Day Processing Programming Challenge – День 5. Анімовані трикутники.

Сьогодні я допрацьовував вчорашній скетч, часу було мало, але зробив з нього анімовану гіфку. Скетч ще потребує допрацювання, але, щоб не пропускати жодного дня у змаганні  я покажу те, що вийшло в процесі. Гіфка достатньо жирна за розміром, тож, якщо гальмуватиме — почекайте трошки, будь ласка 🙂

animated triangles

Код на Github разом з кодом запису скетча в gif-файл.

30 Day Processing Programming Challenge – День 4. Трикутники.

Сьогодні часу було обмаль, але я все ж досягнув прийнятного результату і написав програму, яка генерує трикутники потрібного розміру на всю ширину і висоту екрану програми у Processing. Ви можете завантажити скетч на github і згенерувати власні трикутники просто змінюючи 2 параметри: triangleWidth та triangleHeight.

Ось те, що виходило в мене. Результат завжди залежить від значення вищезгаданих параметрів:

140705_204826_197

Continue reading

30 Day Processing Programming Challenge – День 3.

Сьогодні я вирішив надихнутися книгою “Generative Design” і гортаючи її зупинився на одному зі скетчів на тему паттернів із геометричних фігур.
Цей скетч я взяв за основу, прибрав все зайве, додав код, який відповідає за відмальовку прямокутників, застовував поступову зміну кольору для кожного наступного прямокутника. Вийшов силует мегаполісу 🙂

generative city

Те, що було в процесі: Continue reading

30 Day Processing Programming Challenge – Day 2.

Другий день експериментів із Processing та generative art виявився важчим, першу годину мені взагалі не подобався результат, тому доводилося видаляти код і писати наново. Десь під кінець другої години картинка почала подобатись, я захопився і забув про час. Фінальний результат — генератор спіралей утворених із квадратів різного кольору та розміру. Якщо ще трохи погратися з кодом і анімувати зображення, то можна досягти гіпнотичного ефекту: sketch Нижче те, що виходило в процесі: Continue reading

30 Day Processing Programming Challenge – Day 1.

Нещодавно я почав працювати над освітнім курсом з мови програмування Processing. Курс буде призначений для людей, у яких взагалі немає досвіду у програмуванні, але яким це цікаво і яким не терпиться одразу бачити результати. В рамках підготовки я вирішив “заточити інструмент” і протягом наступних 30 днів щодня писати невеличкий скетч у процесингу, публікувати результат в блозі, а код на Github.

Я не знаю якими будуть ці скетчі. Швидше за все буде повний експромт. Головна вимога — витрачати на кожен не більше 2-х годин, ще краще — не більше години. Сьогодні загалом я витратив на скетч близько 1,5 години, бо мене затягнув цей код і різнокольорові прямокутники.

Сьогодні вийшов досить простий generative art з прямокутниками та rotation. Поки додаю лише зображення та код, а надалі, можливо, додам веб-версію скетчів. processing skecth Нижче те, що виходило в процесі: Continue reading

Як зациклити анімацію CABasicAnimaton чи CAKeyframeAnimation у iOS

Отже, припустимо, що ви створили анімацію за допомогою CABasicAnimation чи CAKeyframeAnimation і вам знадобилося її зациклити. Я нещодавно працював над такою, наче простою задачею, намагаючись робити зациклення через одне місце 🙂

Все виявилося простіше, варто було просто почитати документацію. У будь-якої CAAnimation є властивість repeatCount. Я танцював навколо неї, пробував делегатські методи на зразок animationDidStop, але, ще раз повторюю, треба було просто подивитися у документацію і вказати значенням repeatCount константу HUGE_VALF. Ця чарівна константа зациклює вашу анімацію навіки.

Приклад реалізації:

NSArray * animationValues = @[@0.0, @1.0, @1.0, @0.0];

CAKeyframeAnimation * smallCircleAnimation = [CAKeyframeAnimation animationWithKeyPath:@"opacity"];
smallCircleAnimation.duration = 3.0;
smallCircleAnimation.values = animationValues;
smallCircleAnimation.keyTimes = @[@0.0, @0.76, @0.86, @1.0];
smallCircleAnimation.repeatCount = HUGE_VALF; //ключовий момент де встановлюється вічна зацииклена анімація
smallCircleAnimation.removedOnCompletion = NO;

// Після створення анімації ми просто додаємо її до потрібної в’юшки (View) чи лейера (CALayer, CAShapeLayer)
[self.smallCircleLayer addAnimation:smallCircleAnimation forKey:nil];

Сподіваюся, що розкрив тему максимально розуміло. Якщо маєте питання з приводу анімації — пишіть, коментуйте, відповім якнайшвидше.

The way of Xcoder. Назад шляху нема.

В черговий раз пишу після тривалої перерви, і вкотре кажу собі, що потрібно зробити блоґ основним майданчиком для думок, ідеї та пам’яток собі й людям на майбутнє.

Цього разу причина написання посту проста — я вкотре змінив сферу діяльності і повернув життя у кардинально новий напрям — розробку під iOS, а можливо, в майбутньому і під Mac OS. В цей момент якраз минає 60 днів з початку стажування iOS-девелопером у Petcube.  І цей пост я пишу більше для себе як пам’ятку про те, чому я встиг навчитись за ці 2 місяці.

До початку стажування у Petcube я протягом року у вільний час вчив Objective-C та основи розробки під iOS, але все ж ці 2 місяці інтенсивної роботи виявилися просто безцінними.

objective-c code

Можливо, у майбутньому я розкрию детальніше кожен з пунктів, а тут просто їх перерахую: Continue reading

« Older posts Newer posts »

Copyright © 2024 Нотатки лінгвомана

Theme by Anders NorenUp ↑