Я пытаюсь получить точки из изображения, спроецировать их на сферу, переместить точки по сфере, а затем преобразовать их обратно для моделирования тектоники плит. Код для получения точек с изображения работает нормально, а вот функции, связанные с перемещением точек, не работают. Я ожидаю полярного искажения, но форма в основном просто транслируется.
Я пытаюсь получить точки из изображения, спроецировать их на сферу, переместить точки по сфере, а затем преобразовать их обратно для моделирования тектоники плит. Код для получения точек с изображения работает нормально, а вот функции, связанные с перемещением точек, не работают. Я ожидаю полярного искажения, но форма в основном просто транслируется. [code]def __detect_shapes(image): img = Image.open(image)
img = img.convert("L") img = img.point(lambda p: p > 128 and 255) img = img.convert("RGB")
# get a list of every black pixel black_pixels = []
for x in range(img.width): for y in range(img.height): if img.getpixel((x, y)) == (0, 0, 0): black_pixels.append((x, y))
# separate the black pixels into shapes black_pixels = set(black_pixels) shapes = []
while black_pixels: shape = [] stack = [black_pixels.pop()]
while stack: x, y = stack.pop() shape.append((x, y)) for dx in range(-1, 2): for dy in range(-1, 2): if (dx, dy) == (0, 0): continue
neighbor = (x + dx, y + dy)
if neighbor in black_pixels: stack.append(neighbor) black_pixels.remove(neighbor)
for s in shapes: for p in s: draw.point(p, fill="black")
for p in shapes[1]: moved_point = __move_point(p, 512, 256, -50, 90) draw.point(moved_point, fill="red")
output.save("export/test.png") output.show() [/code] Вот тестовое изображение: Три черные фигуры [img]https://i.sstatic.net/6ow51ABM.png[/img]
Вот результат после запуска программы: [h4] те же три черные фигуры, но самая правая передвинута вверх[/h4] [img]https://i.sstatic.net/fOS7XE6t.png [/img]
И вот чего я (примерно) ожидал: [h4]Те же три черные фигуры, но самая правая была перемещено вверх и искажено[/h4] [img]https://i.sstatic.net/vxcKquo7.png[/img] Почему нет искажений в результате работы программы?
Для шести квадратных кубических карт (соотношение сторон 1:1, разрешение 1000x1000) с углом обзора 90° я пытаюсь преобразовать их в равноугольную панораму (соотношение сторон 2:1, разрешение 4000x2000). Мой текущий подход состоит в том, чтобы...
Для шести квадратных кубических карт (соотношение сторон 1:1, разрешение 1000x1000) с углом обзора 90° я пытаюсь преобразовать их в равноугольную панораму (соотношение сторон 2:1, разрешение 4000x2000). Мой текущий подход состоит в том, чтобы...
Я математик, и я впервые использую Stack Overflow. Извините, если вопрос неадекватен или есть место получше, чтобы задать его. Я хотел бы знать, есть ли стандартный способ сделать следующее. Пусть d будет небольшим расстоянием (например, d=0,03).
Я...
мне нужен алгоритм, который может дать мне позиции вокруг сферы для n точек (вероятно, менее 20, вероятно), которые смутно распространяют их. Нет необходимости в «совершенстве», но мне это просто нужно, чтобы ни один из них не сгруппировался вместе....
Я создаю 3D-рендерер, который отображает куб на основе заданных точек и ребер. Для проецирования 3D-точек на 2D-экран используется следующая формула:
xproj = (x*f)/(z+f)
yproj = (y*f)/(z+f)
где f — фокусное расстояние, а x proj и yproj — координаты...