| Bytes | Lang | Time | Link |
|---|---|---|---|
| 180 | JavaScript Node.js | 250314T043551Z | l4m2 |
| 141 | Python | 250313T155740Z | Mukundan |
| 097 | Mathematica | 200213T180412Z | RGS |
JavaScript (Node.js), 180 bytes
A=>g=(B,k=0)=>new Set(A.flatMap((x,i)=>B.map((y,j)=>A[j]&&B[i]&&D(x,A[j])/D(B[i],y)))).size<3||B[k>>1]&&g(B.reverse(),++k,k&1&&B.push(B.shift()))
D=([a,b],[c,d])=>(c-a)**2+(d-b)**2
Each pair of distance in ratio
Python, 141 bytes
lambda a,b:max(h(a:=a[1:]+[i],max(d:=h(b))/max(h(a)))in[d,d[::-1]]for i in a)
h=lambda a,d=1:[d*((i-k)**2+(j-l)**2)for i,j in a for k,l in a]
Port of @RGS's answer, modified to properly handle cases that require reflections or scenarios where one polygon is clockwise and the other is counterclockwise.
Python, 126 bytes
lambda a,b:max(h(a:=a[1:]+[i],max(d:=h(b))/max(h(a)))in[d,d[::-1]]for i in a)
h=lambda a,d=1:[d*abs(i-j)for i in a for j in a]
Takes input as complex numbers, it fails the first testcase due to rounding errors.
Mathematica, 97 bytes (SBCS)
Or@@(Equal@@(a@u/#)&/@(a/@NestList[RotateLeft,v,Length@v]))
a@l_:=Norm[#〚1〛-#〚2〛]&/@l~Subsets~{2}
You can try it online!
The function a computes all the pairwise distances between any two vertices of the polygon.
The main function applies this to the first list and to every rotation of the second list, to try and find the corresponding vertices. The rotation of the second list is correct if all the corresponding distances have been scaled accordingly.
Thanks to @J42161217 for saving me some 3 bytes