我正在开发一个Python项目,其中有一个画布,其中包含可以在各个点上放大/缩小的图像,我这样做是为了可以在这个画布上放置点。最初在 Zoom_scale 1(没有缩放变化)时,点被正确放置,但是当我放大时,它会缩小到不合适的位置,我无法弄清楚要使用什么函数来计算它们在 512x512 画布上的位置并使它们不移动。
参考:
[][]
Canvas保持不变512x512,这是我需要坐标的形式。
第一次迭代是有效的(在图像被缩放之前(裁剪并调整大小以适合画布))并且我得到坐标x:73 y:700,我可以通过将它们除以1.5轻松转换为512x512格式(图像大小/画布大小)。但是当我缩放并且图像大小为698x698(缩放倍数为1.1)时,红点开始漂移,它应该是一致的,因此无论我移动画布,该点都会保留在那里,并且如果它超出了画布范围画布我只是不渲染它。
这是当前代码:
def get_zoomed_image_xy_canvas_position
(x, y, img_size, canvas_size, cropped_image_bbox, zoom_scale)
:
size_factor = img_size/canvas_size/zoom_scale
x /= size_factor
y /= size_factor
return Vector3(x, 0, y)