Задать вопрос
  • Как добавить произвольные ключи в объект localStorage?

    lastuniverse
    @lastuniverse
    Genri_Rus, а вот эти 0: ... 1: ... откуда берутся?

    так не то?


    И что делать с ситуацией когда параграфов несколько?

    не могли бы вы написать json который должен получится в локалсторадже есть вы в вашем примере отметите все галочки.
  • Как добавить произвольные ключи в объект localStorage?

    lastuniverse
    @lastuniverse
    Genri_Rus, почему не возможно, возможно :)



    сохраняет для каждого id массив, элементами которого являются параметры всех дочерних элементов, лежащих в текущем контейнере (div) и имеющие указанные в dataSelectors селекторы

    PS: сильно не ковырял, возможно даже не допонял вопрос.
  • Как исправить вычисление хэша изображения при операции drag&drop?

    lastuniverse
    @lastuniverse
    Роман Мирр, у меня тоже firefox, точно не уверен, но мне кажется что асинхронность возникает где то во внутренних механизмах:
    1. либо вовремя загрузки изображения (проверить можно выведя reader.result.length, и посмотрев есть ли разница между величинами при успехе генерации хэша и неуспехе)
    2. либо при инициализации канваса и его добавлении на страницу (как проверить не знаю, надо смотреть состояние какого либо из свойств канваса, при этом если выводить в консоль любой объект, это ничего не даст, так как при изменении объекта который изменяется далее по коду изменится и его вывод в консоль, например если перед вызовом pHash вставить строчку console.log(img); и если раскрыть выведенный в консоль объект img мы увидим что у него есть свойство hash инициализированное далее по коду. Чтобы избежать этого эффекта надо выводить что то простое (какое то свойство), для 100% гарантии я бы вывел даже не само свойство а его копию ну например не reader.result.length а ""+reader.result.length :)
    3. либо при вставке на канвас изображения (так же не представляю как проверить :)

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

    lastuniverse
    @lastuniverse
    Роман Мирр, всего 1 раз сумел поймать ситуацию, когда хэш не посчитался. Очень трудно судить о причинах, почему это происходит. Возможно браузер не успевает отрабатывать создание канваса и работу в нем (хоть в функции pHash и нет ни одного вызова ассинхронных функций, но других причин просто не вижу). Не могли бы вы рассказать зачем вам нужен хэш изображения? Может проще и быстрее посчитать хэш из исходных данных reader.result?
  • Как стартануть Node.js приложение на облаке?

    lastuniverse
    @lastuniverse
    HistoryART, мотаюсь по городу в общественном транспорте. Если только завтра.
  • Как стартануть Node.js приложение на облаке?

    lastuniverse
    @lastuniverse
    Либо использрвать прокси, с переадресацией на нужный порт. Например nginx. Некоторые хостинги/облака это позволяют.
  • Из-за чего возникают проблемы с внезапной невозможностью прокручивать страницу дальше?

    lastuniverse
    @lastuniverse
    Я думаю что проблемы связанные с внезапной невозможностью болше психологического а не физиологического характера) Мне эту мысль уролог донес))))

    Ну а если по существу, ваш вопрос содержит слишком мало информации чтобы дать точный ответ. Нам остается только гадать. Из возможных причин вижу:
    - слабый комп, в пиках нагрузки не успевает отрабатывать события управления и перерисовывать интерфейс.
    - криво написанный сайт
    - общая загаженность системы и/или оперативки (вирусы, куча открытых вкладок, куча загруженного тяжелрвесного ПО, такого как игры и пакеты работы с графикой, тяжеловесные ide и т.д.)
    - болезнь паркенсона
    - мышечные спазмы
    - и т.д.
  • Прервать увеличение экрана при двойном табе на мобильном устройстве?

    lastuniverse
    @lastuniverse
    Сделайте по человечески, позвольте пользователям перелистывать фото свайпами вправо и влево.
  • Как сделать api запрос для проверки, что пользователь зарегистрирован в одноклассниках?

    lastuniverse
    @lastuniverse
    Не один адекватный пользователь не введет на чужем сайте свой логин и пароль ни от однокласников, ни от вк
  • Что нужно для создания программы, которая будет разгадывать Виселицу (загаданные слова)?

    lastuniverse
    @lastuniverse
    Мой сын, изучая JS делал что-то подобное, и нам также понадобился словарь существительных. Было найдено несколько таких словарей, но понравился этот. Он не совсем словарь существительных, а это скорее словарь слов для составления кроссвордов и сканвордов, содержит как слова (существительные, названия городов, фамилии известных людей и т.д.) так и их описания, для удобства переработан совместными усилиями (моими и ребенка) в json. Из минусов, в нем есть слова, значение которых детям знать наверное не стоит )
  • Как сделать такую регулярку?

    lastuniverse
    @lastuniverse
    zendor, с таким же успехом можно сказать, что [a-zA-Z] совпадает со всеми буквами алфавита, а автор абсолютно точно дал понять, что хочет чтобы совпадало с text.
    /text/[0-9]*
  • Преобразование угла (0-360) в точки x1,y1,x2,y2 и обратно?

    lastuniverse
    @lastuniverse
    thehighhomie, ну и по поводу самих этих строк.

    const anglePI = -angle * Math.PI / 180;
    
    obj.setGradient('fill', {
      x1: (Math.round(50 + Math.sin(anglePI) * 50) * obj.width) / 100,
      y1: (Math.round(50 + Math.cos(anglePI) * 50) * obj.height) / 100,
      x2: (Math.round(50 + Math.sin(anglePI + Math.PI) * 50) * obj.width) / 100,
      y2: (Math.round(50 + Math.cos(anglePI + Math.PI) * 50) * obj.height) / 100,
      colorStops: {
        // тут уже идут цвета
      }
    })


    я написал бы их так
    const anglePI = angle * Math.PI / 180;
    
    obj.setGradient('fill', {
      x1: (0.5 - Math.sin(anglePI)/2) * obj.width,
      y1: (0.5 - Math.cos(anglePI)/2) * obj.height,
      x2: (0.5 + Math.sin(anglePI)/2) * obj.width,
      y2: (0.5 + Math.cos(anglePI)/2) * obj.height,
      colorStops: {
        // тут уже идут цвета
      }
    })


    и соответственно расчет угла получился бы:
    // получаем угол в радианах
    var angle =  Math.atan2( 0.5-x1/obj.width, 0.5-y1/obj.height ); 
    
    // или в градусах
    var angle = 180 * Math.atan2( 0.5-x1/obj.width, 0.5-y1/obj.height )/Math.PI;
  • Преобразование угла (0-360) в точки x1,y1,x2,y2 и обратно?

    lastuniverse
    @lastuniverse
    thehighhomie, с округлением:

    var x1 = (Math.round(50 + Math.sin(anglePI) * 50) * obj.width) / 100;
    var y1 = (Math.round(50 + Math.cos(anglePI) * 50) * obj.height) / 100;


    без округления:
    var x1 = (50 + Math.sin(anglePI) * 50) * obj.width / 100;
    var y1 = (50 + Math.cos(anglePI) * 50) * obj.height / 100;
  • Преобразование угла (0-360) в точки x1,y1,x2,y2 и обратно?

    lastuniverse
    @lastuniverse
    значения угла получаются такие же, но отрицательные

    // получаем угол в радианах
    var angle =  -Math.atan2((x1*100/obj.width)-50,(y1*100/obj.height)-50); 
    
    // или в градусах
    var angle = -80*Math.atan2((x1*100/obj.width)-50,(y1*100/obj.height)-50)/Math.PI;


    сбивается значение градусов, примерно на десятые

    попробуйте все же убрать округление, думаю что obj.setGradient не требует только целочисленных значений
    var x1 = (50 + Math.sin(anglePI) * 50) * obj.width / 100;
    var y1 = (50 + Math.cos(anglePI) * 50) * obj.height / 100;
  • Преобразование угла (0-360) в точки x1,y1,x2,y2 и обратно?

    lastuniverse
    @lastuniverse
    thehighhomie, вы скажите, последний вариант получения угла дает удовлетворительный результат?
  • Преобразование угла (0-360) в точки x1,y1,x2,y2 и обратно?

    lastuniverse
    @lastuniverse
    thehighhomie, погрешность между исходным углом и его вычисленным значением будет минимальной. Так же вы можете попробовать убрать округление, но я не знаю насколько критично, если х1,y1 будет не целым числом.
    var x1 = (50 + Math.sin(anglePI) * 50) * obj.width / 100;
    var y1 = (50 + Math.cos(anglePI) * 50) * obj.height / 100;
    
    
    // получаем угол в радианах
    var angle = Math.atan2((x1*100/obj.width)-50,(y1*100/obj.height)-50); 
    
    // или в градусах
    var angle = 180*Math.atan2((x1*100/obj.width)-50,(y1*100/obj.height)-50)/Math.PI;
  • Преобразование угла (0-360) в точки x1,y1,x2,y2 и обратно?

    lastuniverse
    @lastuniverse
    thehighhomie, чуть выше, дал ответ как получить угол из x1,y1
  • Преобразование угла (0-360) в точки x1,y1,x2,y2 и обратно?

    lastuniverse
    @lastuniverse
    Как обратно для колорпикера получить значение угла из x1, y1, x2, y2 я не могу понять.


    thehighhomie, так как вы используете округление, то обратно, тот же угол вы получить не сможете, только какой то угол, достаточно близкий к исходному, но все же отличающийся от него.

    var x1 = (Math.round(50 + Math.sin(anglePI) * 50) * obj.width) / 100;
    var y1 = (Math.round(50 + Math.cos(anglePI) * 50) * obj.height) / 100,
    
    // получаем угол
    var angle = Math.atan2((x1*100/obj.width)-50,(y1*100/obj.height)-50); // в радианах
  • Преобразование угла (0-360) в точки x1,y1,x2,y2 и обратно?

    lastuniverse
    @lastuniverse
    thehighhomie, я понял что ничего не понял:)))

    Не буду сейчас допытывать Вас вопросами типа:
    1. каким образом, от угла на колорпикере зависят координаты точек (x1, y1) (x2, y2)?
    2. почему в формулах для получения координат вы умножаете синусы и косинусы угла на * 50
    3. и так далее.

    Просто дам общую информацию по преобразованиям из полярных координат в декартовы:

    преобразование декартовых координат в полярные
    есть некая точка, заданная координатами x,y в декартовой системе координат. для вычисления ее полярных координат используем формулы
    // угол между осью X и отрезком, заданным координатами (0,0)-(x,y)
    var angle = Math.atan2(x,y); // в радианах
    var angle = 180*Math.atan2(x,y)/Math.PI; // в градусах
    
    // длинна отрезка (сежду точкми 0,0 и x,y)
    var radius = Math.sqrt( Math.pow(x, 2) + Math.pow(y, 2) );


    преобразование полярных координат в декартовы
    есть некая точка, заданная координатами angle, radius в полярной системе координат. для вычисления ее декартовых координат используем формулы
    // угол angle задан в радианах
    var x = radius*Math.cos(angle); 
    var y = radius*Math.sin(angle);


    векторные преобразования (самая малость)
    вариант 1. есть некий отрезок (вектор) заданный декартовыми координатами точек (начала и конца) x1,y1 и x2,y2 соответственно.
    // угол между осью X и отрезком, заданным координатами (x1,y1)-(x2,y2), он же направление вектора.
    var angle = Math.atan2(x2-x1,y2-y1); // в радианах
    var angle = 180*Math.atan2(x2-x1,y2-y1)/Math.PI; // в градусах
    
    // длинна отрезка, заданного координатами (x1,y1)-(x2,y2), он же длина (размер) вектора
    var radius = Math.sqrt( Math.pow(x2-x1, 2) + Math.pow(y2-y1, 2) );


    вариант 2. есть некий отрезок (вектор) заданный декартовыми координатами точки (начала) x1,y1 и полярными координатами точки конца - angle и radius, указывающими направление отрезка и его длинну, относительно точки начала x1,y1.
    // находим декартовы координаты точки конца. угол angle задан в радианах
    var x2 = x1+radius*Math.cos(angle); 
    var y2 = y1+radius*Math.sin(angle);