• Как можно найти центроид четырёх точек ( Quadrilateral ), зная координаты этих вершин?

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    Вот тут хорошо расписано.

    Сначала надо триангулировать четырехугольник. Потом, центр масс каждого треугольника - среднее арифметическое координат. Далее, остается найти центр масс двух точек - центров масс треугольников, где в каждой точке лежит масса равная площади треугольника.

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

    Итоговая фромула (в векторах):
    C = ((p1+p2+p3)/3*(p1p2*p1p3)+(p3+p4+p1)/3*(p1p3*p1p4))/((p1p2*p1p3)+(p1p3*p1p4))


    Тут pi - i-ая вершина четырехугольника, pipj - вектор между точками i и j. pipj*pkpl - векторное произведение двух векторов.
    Ответ написан
    Комментировать
  • Как можно найти центроид четырёх точек ( Quadrilateral ), зная координаты этих вершин?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    [ (x1+x2+x3+x4)/4 ; (y1+y2+y3+y4)/4 ]
    Ответ написан
    3 комментария
  • Java, эта задача решается только через множество if?

    LaRN
    @LaRN
    Senior Developer
    Если не хочется заморачиваться на проверку границ массива можно дважды пройтись по массиву, вначале слева-направо затем наоборот.
    Первый проход от 0 элемента до array.length - 2
    включительно.
    Вот так:
    5 3 8 1
    array[i] = min([array[i], array[i+1])
    На выходе получим
    5-3 - > 3
    3-5 - > 3
    8-1 - > 1
    Второй проход от array.length - 3 до 1 включительно.
    array[i] = min([array[i], array[i+1])
    На выходе получим
    3-1 - > 1
    И на 0 индексе уже стоит число 3 его не трогаем.
    В итоге в выходной массиве в диапазоне индексов [0;array.length - 3] будет находиться ответ.
    В нашем примере ответ это подмассив [0;1]
    И там должно быть 3 1
    Ответ написан
    Комментировать
  • Java, эта задача решается только через множество if?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    for (int i = 0; i < array.length; i++) {
        double previous = i == 0 ? Double.POSITIVE_INFINITY : array[i - 1];
        double next = i < array.length ? array[i + 1] : Double.POSITIVE_INFINITY;
        int current = array[i];
    
        if (current > previous || current > next)
            continue;
    
        localMax[++s] = current;
    }
    Ответ написан
    Комментировать
  • Function Scope vs Block Scope?

    @alekcena
    Нелинейный наставник
    Эта штука работает вместе с старым объявлением переменной.
    function test(){
    // Работаем в области функции нет разницы
    var a = 10; // console.log(a)  - 10
    let b = 10; // console.log(b)  - 10
    // var в блоке можно получить из вне.
    for(var c = 0;c < 2; c++){}
    console.log(c) // console.log(c) - 2
    for(let d = 0;d<1;d++){}
    console.log(d) // console.log(d) - ошибка нет такой переменной
    }

    use strict - директива включающая новые правила для написания правильного кода. Чтобы человек меньше себе стрелял в ногу тем что переменная из цикла могла существовать на глобальном уровне.
    Там если ошибка то сразу по ручкам.
    Пример:

    //Обычный js:
    function test(){
    magic = 10;}
    test();
    console.log(magic) // 10
    //С use strict:
    function test(){
    magic = 10;}
    test();
    console.log(magic) // magic is not defined


    P.S:
    Если можете то просто посмотрите как писать с use strict ) И не вспоминайте как можно работать без него
    Ответ написан
    Комментировать
  • Как внутри устроена HashMap, она использует singly linked list или BTS?

    @temp_temp
    Бакеты хранят внутри себя ноды в форме односвязного списка, но как только количество нод достигает 8 (константа TREEIFY_THRESHOLD = 8) и количество бакетов достигает 64 (константа MIN_TREEIFY_CAPACITY = 64), произойдет переход к древовидной структуре в этом бакете. Но возможен и обратный переход из древовидной структуры в односвязный список. Это происходит, когда количество нод в этом бакете сокращается до 6 (константа UNTREEIFY_THRESHOLD = 6), например при увеличении ёмкости хэш-таблицы (количеста бакетов). В этот момент происходит перехеширование всех элементов. Но есть ещё один интересный момент. Допустим вы переопределили хэшкод, чтобы тот возвращал одно и то же значение. И как не трудно догадаться все элементы будут попадать в один бакет. Изначально 16 бакетов, если добавить 9 нод и все они попадут в один бакет, то мапа расширится до 32, если не произойдет распределение, то при добавлении 10 ноды - расширится до 64. И вот если снова не произошло распределения и 11 ноду добавить в тот же бакет, то этот бакет перестроится в дерево.
    Ответ написан
    Комментировать
  • Почему Role и Privileges выдаются в UserDetailsService в одной коллекции, как равноценные понятия в данном примере?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    Собственно говоря, в той же статье откуда вы взяли код (baeldung) ниже написана причина смешивания ролей и привилегий.
    The interesting thing to follow here is how the Privileges (and Roles) are mapped to GrantedAuthority entities.This mapping makes the entire security configuration highly flexible and powerful – you can mix and match roles and privileges as granular as necessary, and at the end, they'll be correctly mapped to authorities and returned back to the framework.


    Вот, еще полезная информация (прочитайте первый ответ) - https://stackoverflow.com/questions/6357579/spring...

    В Spring есть понятие Authority. Это могут быть как роли, так и привилегии (privilege, permission). Так как конечная цель заключается в том, чтобы проверить права пользователя и так как привилегия и роль по факту являются теми самыми "правами", но лишь на разных уровнях абстракции (роль содержит сет привилегий), то в примере кода, который вы указали все смешано в одну кучу.
    Отличие проявляется на другом уровне, когда есть метод для проверки роли hasRole(), к слову, к значению этого метода автоматически добавляется префикс ROLE_, а также метод hasAuthority(), когда проверяются все права (роли и привилегии) и в этом случае для проверки роли нужно указывать префикс ROLE_ самому или уже указать название привилегии (например, READ_PRIVILEGE).
    Ответ написан
    Комментировать
  • Можно ли использовать нижнее подчеркивание в методах для тестов?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Да, можно.
    Подробности тут:
    https://dzone.com/articles/7-popular-unit-test-naming

    А использование нижнего подчеркивания не в тестах не рекомендуется.
    Ответ написан
    3 комментария
  • Где должны находиться методы конвертации DTO -> Entity и наоборот?

    BorLaze
    @BorLaze
    Java developer
    Мне создать отдельный пакет mapper, а в нем классы? Допустим, класс EmployeeMapper и в нем два метода toEmployee, toEmployeeDTO? Правильно ли я мыслю?

    Да.

    Можно долго расписывать, почему именно так, но особо смысла не вижу.
    Ответ написан
    4 комментария