simulated_resolution = v2(1920, 1080) function screenwriter_to_coords(pos, scale) local x, y, width, height, x_px, y_px, width_px, height_px, x_left, x_right, y_top, y_bottom x = pos.x y = pos.y width = scale.x height = scale.y x_px = x * simulated_resolution.x / 2 + simulated_resolution.x / 2 y_px = y * simulated_resolution.y / 2 + simulated_resolution.y / 2 width_px = width * simulated_resolution.x / 2 + simulated_resolution.x / 2 height_px = height * simulated_resolution.y / 2 + simulated_resolution.y / 2 x_left = x_px - width_px / 2 x_right = x_px + width_px / 2 y_top = y_px - height_px / 2 y_bottom = y_px + height_px / 2 return v2(x_left, y_top), v2(x_right, y_bottom) end function coords_to_screenwriter(coord1, coord2) local x_left, x_right, y_top, y_bottom, width, height x_left = math.min(coord1.x, coord2.x) x_right = math.max(coord1.x, coord2.x) y_top = math.min(coord1.y, coord2.y) y_bottom = math.max(coord1.y, coord2.y) width = x_right - x_left height = y_bottom - y_top return coords_partial_to_screenwriter(v2(x_left, x_top), v2(width, height), 1) end function coords_partial_to_screenwriter(pos_px, scale_px, anchor) local x_px, y_px, x, y, width, height if anchor == 1 then --top left x_px = pos_px.x + scale_px.x / 2 y_px = pos_px.y - scale_px.y / 2 elseif anchor == 2 then --top right x_px = pos_px.x - scale_px.x / 2 y_px = pos_px.y - scale_px.y / 2 elseif anchor == 3 then --bottom right x_px = pos_px.x - scale_px.x / 2 y_px = pos_px.y + scale_px.y / 2 elseif anchor == 4 then --bottom left x_px = pos_px.x + scale_px.x / 2 y_px = pos_px.y + scale_px.y / 2 else --center x_px = pos_px.x y_px = pos_px.y end x = x_px / simulated_resolution.x * 2 - 1 y = y_px / simulated_resolution.y * 2 - 1 width = scale_px.x / simulated_resolution.x * 2 height = scale_px.y / simulated_resolution.y * 2 return v2(x, y), v2(width, height) end --[[ simulated_resolution = v2(1920, 1080) # screenwriter to coords local pos, scale, x, y, width, height, x_px, y_px, width_px, height_px, x_left, x_right, y_top, y_bottom #x = .5 #y = 0 #width = 1 #height = 1 pos = v2(.5, 0) scale = v2(1, 1) x = pos.x y = pos.y width = scale.x height = scale.y x_px = x * simulated_resolution.x / 2 + simulated_resolution.x / 2 y_px = y * simulated_resolution.y / 2 + simulated_resolution.y / 2 width_px = width * simulated_resolution.x / 2 + simulated_resolution.x / 2 height_px = height * simulated_resolution.y / 2 + simulated_resolution.y / 2 x_left = x_px - width_px / 2 x_right = x_px + width_px / 2 y_top = y_px - height_px / 2 y_bottom = y_px + height_px / 2 print(x_left) -- 960 print(x_right) -- 1920 print(y_top) -- 270 print(y_bottom) -- 810 # coords to screenwriter local coord1, coord2, x_left, x_right, y_top, y_bottom, width_px, height_px, x_px, y_px, x, y, width, height #x_left = 960 #x_right = 1920 #y_top = 270 #y_bottom = 810 coord1 = v2(1920, 270) coord2 = v2(960, 810) x_left = math.min(coord1.x, coord2.x) x_right = math.max(coord1.x, coord2.x) y_top = math.min(coord1.y, coord2.y) y_bottom = math.max(coord1.y, coord2.y) width_px = x_right - x_left height_px = y_bottom - y_top x_px = x_left + width_px / 2 y_px = y_top + height_px / 2 x = (x_px - simulated_resolution.x / 2) / simulated_resolution.x * 2 y = (y_px - simulated_resolution.y / 2) / simulated_resolution.y * 2 width = (width_px - simulated_resolution.x / 2) / simulated_resolution.x * 2 height = (height_px - simulated_resolution.y / 2) / simulated_resolution.y * 2 print(x) print(y) print(width) print(height) ]]