Профиль пользователя заблокирован сроком с 20 сентября 2021 г. и навсегда по причине: систематические нарушения правил сервиса
Ответы пользователя по тегу Canvas
  • Как лучше всего анимировать отрисовку кривой Безье canvas?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Массив можно, но не обязательно.
    Можно последовательно вычислять все точки и отрисовывать их с задержкой
    Ответ написан
    Комментировать
  • Как спарсить информацию из графика canvas при помощи selenium python?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Надо читать webRequest (xhr), а не анализировать картинки.
    За код в виде картинки - банят. Убери, пока не забанили тебя
    Ответ написан
    Комментировать
  • Как правильно построить поле зрения?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Школьная геометрия.
    1) Сначала вычисляем угол, куда (X, Y) игрок (x0, y0) смотрит:
    dx = X - x0; dy = Y = y0;
    d = sqrt(dx*dx + dy*dy); - длина отрезка
    alpha = arccos(dx/d); - вычисляем угол. Здесь нужно будет дополнить, т.к. знак может потеряться. Смотри на dx и dy.

    2). Теперь строим угол обзора (betaLeft, betaRight):
    betaLeft = alpha - ugObz/2;
    betaRight = alpha + ugObz/2;

    3). Всё. Теперь вычисляем точки, через которые будет проходить линия обзора:
    xL = x0 + cos(betaLeft) * Radius;
    yL = y0 + sin(betaLeft) * Radius;
    xR = x0 + cos(betaRight) * Radius;
    yR = y0 + sin(betaRight) * Radius;

    И строишь через эти точки бесконечную линию, чтобы она выходила за пределы экрана. Можешь для этого подобрать Radius такой, чтобы он был больше разрешения экрана
    Ответ написан
    Комментировать
  • Как по двум точкам сделать бесконечно длинную прямую?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Через уравнение прямой ищем значения X для точек по оси Y: 0 и maxY
    То же самое для значений Y - ищем на оси X для x=0 и x=maxX
    maxX и maxY - размеры canvas
    Ответ написан
    Комментировать
  • Как сделать анимацию?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    С ходу видится такое решение: надо двигаться по окружности, у которой с каждой итерацией изменяется радиус. Радиус r должен меняться линейно от значения r1 до r2, при достижении r значения r2 сделать r1 равным r2, и вычислить новое значение r2.
    При этом для абсцисс и ординаты свои значения r: rx и ry
    Продолжать двигаться по окружности n итераций
    Ответ написан
    Комментировать