@dmitrie

Сгенерировать промежуточные координаты?

Мне нужно сгенерировать промежуточные координаты из списка по типу эмуляции движения мышкой, с рандомным шагом.
Координаты могут быть как на увеличение так и на убывание.
Допустим имеем список координат в таком виде:
[[392,556], [95,309], [207,192]]

На выходе нужно получить вложеный список:
Типа такого

[
	[392,556,1732631473015],
	[375,557,1732631473038],
	[370,558,1732631473054],
	[365,558,1732631473070],
	[361,558,1732631473086],
	[357,558,1732631473102],
	[352,558,1732631473118],
	[349,558,1732631473134],
	[348,558,1732631473150],
	[346,558,1732631473190],
	[344,558,1732631473262],
	[343,558,1732631474263],
	[341,558,1732631475062],
	[340,557,1732631475094],
	[336,554,1732631475110],
	[329,548,1732631475126],
	[313,535,1732631475142],
	[297,520,1732631475158],
	[283,507,1732631475174],
	[273,500,1732631475190],
	[267,494,1732631475206],
	[263,489,1732631475222],
	[258,486,1732631475238],
	[254,483,1732631475254],
	[249,478,1732631475270],
	[245,474,1732631475286],
	[241,470,1732631475302],
	[235,462,1732631475318],
	[231,457,1732631475334],
	[230,457,1732631475350],
	[230,456,1732631475382],
	[229,455,1732631475398],
	[228,454,1732631475422],
	[224,451,1732631475438],
	[222,449,1732631475454],
	[220,448,1732631475470],
	[219,446,1732631475486],
	[215,444,1732631475502],
	[212,441,1732631475518],
	[210,440,1732631475534],
	[208,438,1732631475558],
	[206,437,1732631475862],
	[203,435,1732631475878],
	[202,434,1732631475910],
	[201,433,1732631475942],
	[199,432,1732631475958],
	[196,430,1732631475974],
	[191,426,1732631475990],
	[186,418,1732631476006],
	[180,410,1732631476022],
	[174,402,1732631476038],
	[167,394,1732631476054],
	[157,383,1732631476071],
	[138,360,1732631476096],
	[129,352,1732631476113],
	[120,344,1732631476134],
	[117,341,1732631476150],
	[115,339,1732631476166],
	[113,335,1732631476182],
	[112,334,1732631476198],
	[110,331,1732631476215],
	[105,328,1732631476231],
	[97,323,1732631476254],
	[94,321,1732631476278],
	[94,320,1732631476454],
	[94,315,1732631476471],
	[95,309,1732631476494],
	[99,299,1732631476510],
	[105,290,1732631476526],
	[112,279,1732631476542],
	[120,270,1732631476558],
	[125,262,1732631476574],
	[132,253,1732631476590],
	[138,245,1732631476606],
	[144,237,1732631476622],
	[149,231,1732631476638],
	[154,227,1732631476654],
	[158,224,1732631476670],
	[165,219,1732631476686],
	[179,209,1732631476702],
	[190,200,1732631476718],
	[199,189,1732631476734],
	[202,185,1732631476750],
	[203,183,1732631476782],
	[207,192,1732631477158]
]


где третьим значением время (в js new Date().getTime())

Может есть какая-нить библиотека готовая?
Или подскажите как реализовать чтоб не городить кучу циклов
  • Вопрос задан
  • 80 просмотров
Пригласить эксперта
Ответы на вопрос 3
GavriKos
@GavriKos
Это реализуется обычным lerp-ом, погуглите (ну или гпт озадчьте). Там пара строк всего.
Ответ написан
Комментировать
Maksim_64
@Maksim_64
Data Analyst
import time
l = [[392,556], [95,309], [207,192]]
result = [item + [int(time.time() * 1000)] for item in l]
Ответ написан
Lord_of_Rings
@Lord_of_Rings
Python developer
import random
import time

def generate_intermediate_coords(coords, steps=30):
    result = []
    for i in range(len(coords) - 1):
        start_x, start_y = coords[i]
        end_x, end_y = coords[i + 1]

        delta_x = (end_x - start_x) / steps
        delta_y = (end_y - start_y) / steps

        for step in range(steps):
            x = start_x + delta_x * step + random.uniform(-1, 1)
            y = start_y + delta_y * step + random.uniform(-1, 1)
            timestamp = int(time.time() * 1000)
            result.append([x, y, timestamp])

    return result

coords = [[392, 556], [95, 309], [207, 192]] # ваши координаты
intermediate_coords = generate_intermediate_coords(coords)
for coord in intermediate_coords:
    print(coord)


Этот код делает следующее:
1. Принимает список координат и количество промежуточных шагов.
2. Для каждой пары координат (начальная и конечная точка) вычисляет приращения по осям X и Y.
3. Генерирует промежуточные координаты с рандомным шагом и добавляет временную метку.
4. Возвращает список промежуточных координат.

Вы можете настроить количество шагов (steps) или изменить диапазон рандомного шага (random.uniform(-1, 1)) для более плавного или более хаотичного движения.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы