from typing import Sequence
from typing import Tuple
import math


def rotate2d(origin: Sequence[float], angle: float, point: Sequence[float]) -> Tuple[float,float]:
	"""
	Rotate a 2d point counterclockwise by a given angle around a given 2d origin.
	The angle should be given in radians.
	
	:param origin: 2x float X Y, rotate-around point
	:param angle: float, radians to rotate
	:param point: 2x float X Y, point-that-will-be-rotated
	:return: 2x float X Y, point after rotation
	"""
	ox, oy = origin
	px, py = point
	qx = ox + math.cos(angle) * (px - ox) - math.sin(angle) * (py - oy)
	qy = oy + math.sin(angle) * (px - ox) + math.cos(angle) * (py - oy)
	return qx, qy