Canvas & JavaScript | Притяжение и отталкивание частиц | rus

แชร์
ฝัง
  • เผยแพร่เมื่อ 23 ธ.ค. 2024

ความคิดเห็น • 87

  • @alkqwe-123
    @alkqwe-123 5 ปีที่แล้ว +35

    Чел, это просто ахуенно, я давно хотел подтянуть js и тут увидел твой видос в палике по проге, ЭТО ПРОСТО НЕЧТО, ПРОДОЛЖАЙ В ТОМ ЖЕ ДУХЕ, ТЫ КРАСАВА!!!

  • @DenisSvistoplasov
    @DenisSvistoplasov 2 ปีที่แล้ว +8

    1) Для простого обхода массива используют .forEach (не .map).
    2) Если симулировать гравитацию, то сила вычисляется как масса, деленная на квадрат расстояния. Но тут и не была заявлена симуляция гравитации, масса умножалась на расстояние, и получился эффект, напоминающий что-то вроде поверхностного натяжения.
    (Кстати, известно, что центробежная сила - это фиктивная сила. И здесь видно, что несмотря на то, что она в коде никак не прописана, она "проявляется" как следствие других сил) 25:38

  • @nikolay6143
    @nikolay6143 3 ปีที่แล้ว +3

    Класс, спасибо за такой полезный урок, видно что работа проделана большая и качественная. Так держать!

  • @bullador457
    @bullador457 4 ปีที่แล้ว +2

    Наткнулся на видео в вк, в групе code block, Очень понравилась подача видео и качество сьёмки. Лайк, подписка. Делаешь просто афигенно! Мне как раз нехватало в опыте работы с канвасом и охото было сделать что то красивое.

  • @ajfa9400
    @ajfa9400 3 ปีที่แล้ว +1

    Автору спасибо за отличный контент и возможность учиться у мастера.

    • @ThreePixDroid_RU
      @ThreePixDroid_RU  3 ปีที่แล้ว

      Пожалуйста. Видел твой предыдущий комментарий.... Видео снято не с целью обучения.. А если в коде есть что то, что с твоей точки зрения стоит поменять то смело пиши)

  • @yoeyoe7217
    @yoeyoe7217 3 ปีที่แล้ว +1

    Не когда не оставляю комент, но ты удивил, Респект Мээн)))

  • @НиколайШиленко-с7ш
    @НиколайШиленко-с7ш 3 ปีที่แล้ว +2

    Это великолепно. Я никогда такого не видел

  • @anzor3219
    @anzor3219 3 ปีที่แล้ว +2

    наткнулся случайно и офигел)

    • @antonyminsky3637
      @antonyminsky3637 3 ปีที่แล้ว

      Поддерживаю! не новичок в js и не знал, что там можно 0_о

  • @Danny-uc6kx
    @Danny-uc6kx ปีที่แล้ว

    очень красиво и интересно

  • @Frankslaboratory
    @Frankslaboratory 5 ปีที่แล้ว +4

    Wow. This is awesome

  • @ggkamv6937
    @ggkamv6937 4 ปีที่แล้ว +1

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

    • @ThreePixDroid_RU
      @ThreePixDroid_RU  4 ปีที่แล้ว

      Спасибо за добрые слова!;)

  • @artemkerez2152
    @artemkerez2152 ปีที่แล้ว

    Incredible!

  • @stanislavmalyshev5209
    @stanislavmalyshev5209 3 ปีที่แล้ว

    Шикарненько

  • @tytov9608
    @tytov9608 2 ปีที่แล้ว

    Спасибо за такое крутое видео

  • @АлкофанСамогоныч
    @АлкофанСамогоныч 9 หลายเดือนก่อน

    а как 1 функцией нарисовать 2 независимых объекта, с которыми можно взаимодействовать ?

  • @hulumulu1108
    @hulumulu1108 3 ปีที่แล้ว

    А ты крут

  • @ЕгорЛазука-й1э
    @ЕгорЛазука-й1э 4 ปีที่แล้ว +2

    Шикарные видео, очень понравились.
    Вопрос. А нет более рационального способа проверки расстояние (или других зависимостей) между точками вместо цикла?

    • @ThreePixDroid_RU
      @ThreePixDroid_RU  4 ปีที่แล้ว +1

      Привет. Пройтись по каждой точке из массива в любом случае придется, что бы сравнить её с каждой другой точкой из того же массива.
      Но не обязательно использовать именно цикл For
      можно например юзать forOf ,
      так даже удобнее было бы в этом коде.
      А вот расстояние можно найти например методом Math.hypot(dx, dy); или например вообще не получать квадратный корень, а наоборот возвести в квадрат ту дистанцию с которой сравниваем текущее расстояние.

  • @evgeniybudaev1690
    @evgeniybudaev1690 5 ปีที่แล้ว

    класс видео! спасибо что ты есть

    • @ThreePixDroid_RU
      @ThreePixDroid_RU  5 ปีที่แล้ว

      не за что;) рад что пригодилось!;)

  • @gagogoga794
    @gagogoga794 2 ปีที่แล้ว

    Ты чёткий чел 😁

  • @НікітаГунько-к4л
    @НікітаГунько-к4л 5 ปีที่แล้ว +3

    Очень круто вышло! Можете посоветовать ресурсы
    по изучению Js?

    • @ThreePixDroid_RU
      @ThreePixDroid_RU  5 ปีที่แล้ว +2

      Спасибо;) learn.javascript.ru/
      полезный сайт. Приложение SoloLearn на телефон - бесплатное и тоже полезное. Книга По p5js The nature of code natureofcode.com/book/.
      По моему мнению, очень хороший способ изучения - это придумать себе цель, например программу которая делает то, что тебе необходимо и на практике пошагово решать каждую задачу необходимую для реализации твоей задумки.

  • @logius84
    @logius84 4 ปีที่แล้ว +3

    крутооо )))
    function setPos ({layerX,layerY}) - а это как?

    • @ThreePixDroid_RU
      @ThreePixDroid_RU  4 ปีที่แล้ว +1

      спасибо) в контакте отвечал тебе на этот вопрос)

    • @nikolay6143
      @nikolay6143 3 ปีที่แล้ว

      Можно ссылочку на объяснение?

    • @ThreePixDroid_RU
      @ThreePixDroid_RU  3 ปีที่แล้ว

      Это называется деструктуризация.
      В функцию приходит событие и мы сразу получаем из него нужные свойства.

  • @Zak0532
    @Zak0532 4 ปีที่แล้ว

    круто)

  • @RemGD
    @RemGD 2 ปีที่แล้ว

    а как называется тема?

  • @savasyilmaz4003
    @savasyilmaz4003 4 ปีที่แล้ว

    thank you bro, valuable informations !

  • @BrooklynDesigne
    @BrooklynDesigne 4 ปีที่แล้ว

    Простите, а для чего нужна функция line в данном примере?

    • @ThreePixDroid_RU
      @ThreePixDroid_RU  4 ปีที่แล้ว

      Над будет глянуть код ) чёт не помню line ... или можешь тайминг скинуть.. посмотрю и сразу вспомню..)

  • @romanmehanov4581
    @romanmehanov4581 5 ปีที่แล้ว +1

    Отличный урок! Спасибо.
    P.S. Как эту фичу можно поставить на backdround (картинка) верхним слоем ?

    • @ThreePixDroid_RU
      @ThreePixDroid_RU  5 ปีที่แล้ว +1

      Не за что.
      Просто использовать элемент Canvas в том месте где необходим данный эффект.
      Если Canvas перекроет кнопки, то они перестанут реагировать.

  • @КонстантинШуйский-ш9п
    @КонстантинШуйский-ш9п 5 ปีที่แล้ว +1

    👍👍👍👍👍👍👍👍

  • @egliens_roman
    @egliens_roman 4 ปีที่แล้ว

    Объясни пожалуйста, не совсем понял, где мы настроили количество выпускаемых частиц по нажатию? Спасибо за видос!

    • @ThreePixDroid_RU
      @ThreePixDroid_RU  4 ปีที่แล้ว

      Мы не настраивали кол-во выпускаемых частиц.. Они создаются всегда пока мышь нажата на Холсте.
      вот эта строчка(91- ая строка должна быть):
      if (mouse.down) { dots.push(new Dot()); }

    • @egliens_roman
      @egliens_roman 4 ปีที่แล้ว

      @@ThreePixDroid_RU то есть получается за столь короткий промежуток у меня успевает 5-7 дотов создаться? спасибо за обьяснение))

    • @ThreePixDroid_RU
      @ThreePixDroid_RU  4 ปีที่แล้ว

      пожалуйста)

  • @dzhenishmukashev8626
    @dzhenishmukashev8626 4 ปีที่แล้ว +2

    все великолепно но не понятно "dots.map(e => e == dots[0] ? e.draw(mouse.x, mouse.y) : e.draw())" что такое e

    • @ThreePixDroid_RU
      @ThreePixDroid_RU  4 ปีที่แล้ว

      Привет! Всё просто, мы пробегаемся по каждой сфере в массиве для её отрисовки, но если это самая первая сфера в массиве то мы задаём ей координаты мыши...

    • @Zak0532
      @Zak0532 4 ปีที่แล้ว

      dots.map(function(e) {
      if(e == dots[0]) {
      e.draw(mouse.x, mouse.y)
      }else {
      e.draw()
      }
      })

  • @redlixdavidof235
    @redlixdavidof235 4 ปีที่แล้ว

    Крутяк, и через сколько лет работы можно писать такое из головы?:) Очень крутые видео!

    • @ThreePixDroid_RU
      @ThreePixDroid_RU  4 ปีที่แล้ว

      Зависит от того как быстро учишься)
      Вполне реально через пол года с нуля)

  • @PromiSeDev
    @PromiSeDev 4 ปีที่แล้ว +1

    Куча замечаний как по коду, так и по расчетке. Если интересно, можем обсудить в дискорд

    • @ThreePixDroid_RU
      @ThreePixDroid_RU  4 ปีที่แล้ว

      Привет) Отправил тебе инвайт в discord.

  • @andreynenax8099
    @andreynenax8099 5 ปีที่แล้ว

    Инетересные видосики, давай ещё))
    ThreePixDroid, что за редактор кода используешь??

    • @ThreePixDroid_RU
      @ThreePixDroid_RU  5 ปีที่แล้ว

      спасибо! редактор visual studio code.
      Сейчас мало времени, по этой причине видео выпускаю редко,
      в будущем постараюсь стабилизировать этот момент.

  • @jackieuchiha7838
    @jackieuchiha7838 4 ปีที่แล้ว

    what is theme?)

  • @lemarsinerut2456
    @lemarsinerut2456 3 ปีที่แล้ว

    🤯

  • @nikitoshd853
    @nikitoshd853 4 ปีที่แล้ว

    привет, ты офигительный!!! я хочу учить js, но незнаю как, можешь посоветовать как учить js , пожалуйста

    • @ThreePixDroid_RU
      @ThreePixDroid_RU  4 ปีที่แล้ว +1

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

  • @garikdjan6266
    @garikdjan6266 3 ปีที่แล้ว

    Строка 51. force = a > b ? 1 : 0, а у тебя a > b ? force = 1 : force = 0. Допустим так можно, но это не читаемо. Строка 48 j == 0 и т.д, лучше использовать строгое сравнение j === 0. Строка 71 fill ? ... тогда почему в 91 строке if ( mouse.down ) { ? Используй один code style. тернарные операторы плохо читаемы, в строке 71 лучше использовать if.

  • @taras577
    @taras577 4 ปีที่แล้ว

    какой красивый код, мое почтение и немного зависти)

    • @ThreePixDroid_RU
      @ThreePixDroid_RU  4 ปีที่แล้ว

      Вау) Спасибо большое, очень приятно!)

    • @taras577
      @taras577 4 ปีที่แล้ว

      @@ThreePixDroid_RU все никак нормально к canvas добраться не могу, а тут такое вдохновение)) Чисто по самой идее, точнее по практичному использованию даной красоты (или подобной) на сайтах, вопрос: возможно стоит добавить максимальную вмистимость dots (удалять с начала масива ранее созданые, кроме 0-го), чтобы юзер не переусердствовал с созданием шариков и все не начало подлагивать?) или не стоит переживать по этому поводу?
      Изменено: попробовал ограничить количество, получилось хорошо (одно свойство в config и пару строк в loop), подлагивания пропали :) Но возник ещё один вопрос: как стартануть этот код на мобильных девайсах? На touchmove, touchstart, touchend?

    • @ThreePixDroid_RU
      @ThreePixDroid_RU  4 ปีที่แล้ว

      Конечно стоит ограничить кол-во частиц) Ещё лучше получить данные о устройстве и размере экрана чтоб точно знать на сколько ограничить кол-во 'dots' ;)
      Для большей оптимизации можно создать заранее спрайты частиц разного уровня яркости) и просто менять спрайты) и ещё кучу разных оптимизаций можно провести)
      Но суть урока в алгоритме)
      А все оптимизации описанные выше и прочие которые можно придумать, применимы наверное ко всем моим видео)
      Возможно как нибудь запишу урок с управлением жестами) Но это и так довольно просто, в инете вбить, там всё подробно описано и примеры есть)

  • @chinyass
    @chinyass 4 ปีที่แล้ว

    Как стать таким профи как ты?)

    • @ThreePixDroid_RU
      @ThreePixDroid_RU  4 ปีที่แล้ว

      Спасибо, оч приятно) Но я далеко не профи) Нужно просто много практиковаться)

  • @hakowlo
    @hakowlo 5 ปีที่แล้ว

    Классный урок, не подскажешь свою тему в VS

  • @vasylhorban248
    @vasylhorban248 3 ปีที่แล้ว

    ахр*неть

  • @thegulpofenglish4131
    @thegulpofenglish4131 3 ปีที่แล้ว

    Качество кода = Повелитель.js
    Английское произношение = Королевы Англии очумевший внук

  • @АнтонШашков-п4й
    @АнтонШашков-п4й 2 ปีที่แล้ว

    Про отталкивание непонятно

    • @ThreePixDroid_RU
      @ThreePixDroid_RU  2 ปีที่แล้ว

      От курсора частицы отталкиваются... И от друг друга держится на расстоянии, и одновременно притягиваются..

  • @vladislavstepanov7591
    @vladislavstepanov7591 5 ปีที่แล้ว

    В чем профит объявлять переменные в начале, а не тогда, когда они нужны? Как по мне, это только ухудшает читаемость кода

    • @ThreePixDroid_RU
      @ThreePixDroid_RU  5 ปีที่แล้ว +3

      Хочу заметить, что это просто урок;)
      В своём коде можно сделать так как вам удобнее;)
      В следующем видео постараюсь учесть это и объявлять переменные перед их использованием;)

    • @vladislavstepanov7591
      @vladislavstepanov7591 5 ปีที่แล้ว

      @@ThreePixDroid_RU Благодарю)

    • @amodeus6701
      @amodeus6701 5 ปีที่แล้ว +2

      А как по мне - наоборот объявление переменных возле операторов ухудшает читаемость кода.
      Вместо того, что бы сосредоточиться на алгоритме тратится время на вычленение где объявление, где вызов, особенно если объявление какого-то сложного объекта.
      Не говоря уже о том что, искусственно увеличивается высота логического блока. А потом крути экран вверх/вниз.
      А вообще, основная суть объявления переменных непосредственно перед использованием - это ограничение их области видимости, а не увеличение/уменьшение читаемости. Читаемость - это очень субъективная оценка.

    • @vladislavstepanov7591
      @vladislavstepanov7591 5 ปีที่แล้ว

      ​@@amodeus6701 Если ты объявишь переменную просто чуть ниже, но по делу, область видимости от этого не изменится.
      А объявлять переменные в самом начале, а потом искать их и постоянно елозить вверх-вниз - мне, лично, не нравится

    • @ЕгорЛавренов-ч9с
      @ЕгорЛавренов-ч9с 5 ปีที่แล้ว

      @@ThreePixDroid_RU Вообще вполне допустимый вариант. В es5 это было даже правильным вариантом, так как все var переменные "поднимаются" (hoisting), и интерпретатор в любом случае сделает это за вас. В es6 let и const не поднимаются, поэтому допустимы оба варианта я считаю)

  • @renatvlasov4855
    @renatvlasov4855 9 หลายเดือนก่อน

    Чувак явно не из мира js. Странное форматирование, сравнение с приведением вместо эквивалентности, весьма непривычный стиль объявления переменных через деструктуризацию массива, let там, где нужен const

    • @ThreePixDroid_RU
      @ThreePixDroid_RU  9 หลายเดือนก่อน

      в точку, даже близко не из мира js, просто хобби