point rotate(point origional, point around, radian add_angle) {
point offset = {origional.x-around.x, origional.y-around.y};
double length = distance(origional, around);
radian angle = atan2(offset.y, offset.x);
angle += add_angle;
point result = {length*cos(angle), length*sin(angle)};
result += around;
return result;
}
cG9pbnQgcm90YXRlKHBvaW50IG9yaWdpb25hbCwgcG9pbnQgYXJvdW5kLCByYWRpYW4gYWRkX2FuZ2xlKSB7CiAgICBwb2ludCBvZmZzZXQgPSB7b3JpZ2lvbmFsLngtYXJvdW5kLngsIG9yaWdpb25hbC55LWFyb3VuZC55fTsKICAgIGRvdWJsZSBsZW5ndGggPSBkaXN0YW5jZShvcmlnaW9uYWwsIGFyb3VuZCk7CiAgICByYWRpYW4gYW5nbGUgPSBhdGFuMihvZmZzZXQueSwgb2Zmc2V0LngpOwogICAgYW5nbGUgKz0gYWRkX2FuZ2xlOwogICAgcG9pbnQgcmVzdWx0ID0ge2xlbmd0aCpjb3MoYW5nbGUpLCBsZW5ndGgqc2luKGFuZ2xlKX07CiAgICByZXN1bHQgKz0gYXJvdW5kOwogICAgcmV0dXJuIHJlc3VsdDsKfQ==