• Как создать контролируемый разброс на js (Стрельба 2d/Симуляция 3d)?

    lastuniverse
    @lastuniverse
    Владимир, странный подход к решению данной задачи. Не буду утверждать, что неправильный/бессмысленный/нерациональный, но точно нетрадиционный для 2D))))
  • Как создать контролируемый разброс на js (Стрельба 2d/Симуляция 3d)?

    lastuniverse
    @lastuniverse
    делал как то такой пример
    https://game.lastuniverse.ru/gun.2d.01/

    правда он без разброса. Но разброс делается достаточно просто
    // пусть координаты точки из которой вылетают пули gunX, gunY
    // пусть координаты точки прицела crosshairX, crosshairY
    
    // пусть максимальный разброс зависит от расстояния
    
    // рассчитываем расстояние между оружием и прицелом
    const dx = crosshairX - gunX;
    const dy = crosshairY - gunY;
    const dist = Math.hypot(dx, dy);
    
    // рассчитываем разброс в зависимости от расстояния (пусть на дистанции 10 разброс будет равен PI/4 или 45 градусов)
    const dispersion = ( Math.PI / 4 ) * dist / 10;
    
    // рассчитываем угол вылета пули без учета разброса
    const bulletAngle = Math.atan2(dy, dx);
    
    // рассчитываем угол вылета пули с учетом +-разброса
    const bulletDispersionAngle = bulletAngle + (Math.random() * 2 * dispersion - dispersion);
    
    ...
    
    // далее можно посчитать координаты пули в какойто из моментов времени
    // пусть скорость пули задана в переменной bulletSpeed (пиксели в секунду)
    // пусть время прошедшее с момента старта пули задано в переменной bulletTime (миллисекунды)
    
    // считаем расстояние на которое улетела пуля
    const bulletDist = bulletSpeed * bulletTime / 1000;
    
    // считаем координаты пули
    const x = gunX + bulletDist * Math.cos(bulletDispersionAngle);
    const Y = gunY + bulletDist * Math.sin(bulletDispersionAngle);
  • Почему после читки файла, строки выводятся криво?

    lastuniverse
    @lastuniverse
    Владимир, если в файлу `proxy.txt` следующее:
    33.33.222.9
    12.34.567.89
    98.765.43.21


    то делаете так:

    let proxyList = fs.readFileSync('proxy.txt', 'utf-8').split("\n");
    const targetProxy = proxyList.map(el => el + ':7951');


    Если в `proxy.txt` синтаксис данных другой, то покажите пример

    Опять же, в `proxy.txt` у вас только ip-шники или ip-шники с портами или вообще в перемешку?

    А сами ip-шники каждый в новой строчке или может быть несколько в одной строке?

    Если есть варианты когда несколько в одной строке то какой разделитель между ними?
  • Как изменить цвет в stroke c помощью условия?

    lastuniverse
    @lastuniverse
    Ankhena, ну я все равно написал ответ на полминуты-минуту раньше вашего комментария, а на то, сможет он вопрос удалить или нет мне как то побоку, я обычный пользователь а не ̶б̶л̶ю̶с̶т̶и̶т̶е̶л̶ь̶ ̶п̶р̶а̶в̶о̶п̶о̶р̶я̶д̶к̶а̶ Куратор тега JavaScript
  • Как изменить цвет в stroke c помощью условия?

    lastuniverse
    @lastuniverse
    Ankhena, да все там работает, просто ТС где то затупил.
  • Как найти нормаль к плоскости по 3 точкам?

    lastuniverse
    @lastuniverse
    Векторное произведение двух векторов Va = {ax; ay; az} и Vb = {bx; by; bz} в декартовой системе координат - это вектор, значение которого можно вычислить по формуле:
    Vn = {ay*bz - az*by; az*bx - ax*bz; ax*by - ay*bx}

    В вашем случае, если у вас есть 3 точки, принадлежащие плоскости
    A = {x1; y1; c1}
    B = {x2; y2; c2}
    C = {x3; y3; c3}

    то
    ax = x2-x1
    ay = y2-y1
    az = z2-z1
    
    bx = x3-x1
    by = y3-y1
    bz = z3-z1

    ну а дальше просто подставляете эти значения в формулу выше)))

    ЗЫ: остается лишь определится с направлением нормали, которое зависит от соглашения по выбору и предоставлению точек A,B,C, которое к слову вы тут не озвучили.
  • Что улушчить, чтобы отправлять 40000 запросов в секунду?

    lastuniverse
    @lastuniverse
    Для решения таких задач существуют ботнеты )))))
  • Почему выведет -2?

    lastuniverse
    @lastuniverse
    сдается мне что автор не понимает вот этот момент (разницу между этими вариантами)

    вариант 1
    var i = 10;
    while (i--) {
      console.log('while', i);
    }
    console.log('result, i);

    вывод:
    while 9
    while 8
    while 7
    while 6
    while 5
    while 4
    while 3
    while 2
    while 1
    while 0
    result -1


    вариант 2
    var i = 10;
    while (i) {
      i--;
      console.log('while', i);
    }
    console.log('result, i);

    вывод:
    while 9
    while 8
    while 7
    while 6
    while 5
    while 4
    while 3
    while 2
    while 1
    while 0
    result 0
  • Как правильно организовать структуру приложения в Node js? Сможете показать или подсказать как сделать?

    lastuniverse
    @lastuniverse
    WbICHA, согласен, но я еще помню времена когда сам такое писал (для бота школьного IRC чатика вполне рабочий вариант. С небольшими доработками естественно)))))
  • Как правильно организовать структуру приложения в Node js? Сможете показать или подсказать как сделать?

    lastuniverse
    @lastuniverse
    var content = fs.readFileSync('users.json', 'utf8')

    Вот такими вещами, выполняемыми при каждом запросе вы убиваете свое приложение в зародыше. Если вы так уж хотите работать с файлами, то как минимум надо сделать так:
    1. все файлы читаются заранее при запуске приложения
    2. в обработчиках вы работаете с уже прочитанными данными из файлов
    3. запись новых данных в файлы производите пачками, в воркерах, раз в какоето количество времени

    Но даже так, ваше приложение сможет обслуживать очень маленькое количество пользователей одновременно и будет крайне подвержено сбоям при аварийном завершении бэкенда или аварийном выключении компа

    В качестве рекомендаций - вместо файлов используйте БД. На этапе изучения можно пробовать не полноценные БД а их встраиваемые аналоги типа NeDB если вы тяготеете к NoSQL или SQLite если вы тяготеете к реляционным БД.

    Следующий момент - это разделение логики серверного приложения на независимые части, способные работать самостоятельно, что позволит в дальнейшем проще масштабировать ваше приложение при увеличении нагрузки. Тут есть множество подходов как это делать (например микросервисная архитектура) а также множество подводных камней. В любом случае - любой подход нацелен на устранение узких мест, и для выбора подхода вам надо как минимум эти узкие места знать, так что тут лучше привлечь специалиста по высоко нагруженным системам, который изучив то что вы хотите получить в итоге - подскажет вам какой подход использовать.
  • Как сделать так, чтобы два объекта хаотично двигались по экрану?

    lastuniverse
    @lastuniverse
    OblivionGM, вот примеры на основе "силы притяжения". Правда написан на JS, но там ничего сложного, так что сами разберетесь))))

  • Как добиться 3d эффекта?

    lastuniverse
    @lastuniverse
    TheSnegok, мне что, нужно за него сайт с его 3D моделями нарисовать?

    При движении мыши поворачивается изображение с 3d эффектом.
    Как добиться такого?


    Разве то что я дал (включая ссылки на библиотеки и примеры использования) не является полноценным ответом на данный вопрос?
  • Анимация с блендера в HTML?

    lastuniverse
    @lastuniverse
    тут вы правы, но я так подозреваю, что это не задача вебдизайнера/фронтендера а задача 3D моделлера. Поэтому если ситуация именно такая как вы описали, то надо просто вернуть файл заказчику с объяснениями в каком виде нужно отдавать медиаматериалы для сайта. Если же исполнитель фрилансер-универсал, то либо отказаться от задания, либо тянуть лямку. Но это такое себе, ибо нифига не профильное для типового фронетдера.
  • Как получить значение из js?

    lastuniverse
    @lastuniverse
    Strannyk, я даже платно в них копаться не стану)
    SlipDez, как уже было сказано выше в минифицированном и упакованном коде ковыряться - неблагодарное занятие. Так что как нибудь сами.
  • Как получить значение из js?

    lastuniverse
    @lastuniverse
    Strannyk, человек не умеет пользоваться тегами)))

    Код HTML:
    https://www.codeply.com/p/hWk25xJHfe

    Код JS:
    https://www.codeply.com/p/agksEHBG75
    https://www.codeply.com/p/bgLeNEVE1P
    https://www.codeply.com/p/JRHw2NQS7M
    https://www.codeply.com/p/6anI3oYi9z

    И да, под капотом ужатый webpack-ом минифицированный код))))
  • Стоит ли изучать Machine Learning если хочется создавать видеоигры?

    lastuniverse
    @lastuniverse
    Ведь благодаря данной технологии можно заменить что угодно, разве нет?

    PlaBetaVer, однозначно нет.

    Более того, все интеллектуальные технологии не дают и никогда не дадут 100% точный результат. Поэтому, в отраслях, где для получения результата есть разработанный ТОЧНЫЙ научный метод, никогда не будут доминировать интеллектуальные технологии)
  • Как правильно задать 2 запроса API к ресурсу jsdelivr.com?

    lastuniverse
    @lastuniverse
    вы читать не умеете? По ссылке что вы дали:

    популярные пакеты
    https://github.com/jsdelivr/data.jsdelivr.com#get-...

    вот пример запроса популярных пакетов в месячном рейтинге
    https://data.jsdelivr.com/v1/stats/packages?period...

    ну а с поиском сами как нибудь. Описание тут https://github.com/jsdelivr/data.jsdelivr.com#sear...
    поиск проводится через стороннее webapi, и требует токена. В общем читайте. И вот вам в помощь ссылка на переводчик https://translate.google.com/?hl=ru
  • Как правильно задать 2 запроса API к ресурсу jsdelivr.com?

    lastuniverse
    @lastuniverse
    у данного API нет запроса на получение списка всех пакетов, из близкого по смыслу есть только поиск npm пакетов и получение списка популярных пакетов
  • Асинхронность Promise. Как работает?

    lastuniverse
    @lastuniverse
    второй кусок кода генерирует ошибку
    Uncaught (in promise) error

    lightseeker, ну вот ваш пример на jsfiddle и в нем второй кусок кода вообще не генерирует никаких ошибок

    https://jsfiddle.net/pyfg46j2/1/

    по ссылке https://learn.javascript.ru/promise-error-handling... в конце параграфа как раз описанно почему такая ошибка не обрабатывается и как ее перехватить. Но я процитирую и тут:


    window.addEventListener('unhandledrejection', function(event) {
      // объект события имеет два специальных свойства:
      alert(event.promise); // [object Promise] - промис, который сгенерировал ошибку
      alert(event.reason); // Error: Ошибка! - объект ошибки, которая не была обработана
    });
    
    new Promise(function() {
      throw new Error("Ошибка!");
    }); // нет обработчика ошибок

    Это событие является частью стандарта HTML.

    Если происходит ошибка, и отсутствует её обработчик, то генерируется событие unhandledrejection, и соответствующий объект event содержит информацию об ошибке.

    Обычно такие ошибки неустранимы, поэтому лучше всего – информировать пользователя о проблеме и, возможно, отправить информацию об ошибке на сервер.

    В не-браузерных средах, таких как Node.js, есть другие способы отслеживания необработанных ошибок.