Rick,
According to Robert's blog, there is another algorithm to rotate (x,y). Same result with yours.

https://blogs.sas.com/content/graphicallyspeaking/2021/07/14/sas-can-turn-your-world-upside-down/

%let alpha = 0.333; /* Odita's work uses a vertex as (1-alpha, alpha) */
data Poly1;
ID = 1;
input x y @@;
if x=. then do; /* just for fun, support other locations of vertex */
x = 1 - α y = α
end;
datalines;
0 0 . . 1 1 0 1 0 0
;

%let angle=90;
data Poly2(keep=id x_rotated y_rotated rename=(x_rotated=x y_rotated=y));
set Poly1;
id=2;
angle_radians=&angle*(constant("pi")/180);
x_rotated=cos(angle_radians)*x - sin(angle_radians)*y;
y_rotated=sin(angle_radians)*x + cos(angle_radians)*y;
run;

%let angle=180;
data Poly3(keep=id x_rotated y_rotated rename=(x_rotated=x y_rotated=y));
set Poly1;
id=3;
angle_radians=&angle*(constant("pi")/180);
x_rotated=cos(angle_radians)*x - sin(angle_radians)*y;
y_rotated=sin(angle_radians)*x + cos(angle_radians)*y;
run;

%let angle=270;
data Poly4(keep=id x_rotated y_rotated rename=(x_rotated=x y_rotated=y));
set Poly1;
id=4;
angle_radians=&angle*(constant("pi")/180);
x_rotated=cos(angle_radians)*x - sin(angle_radians)*y;
y_rotated=sin(angle_radians)*x + cos(angle_radians)*y;
run;

data want;
set Poly1-Poly4;
run;

%let blue = CX0f5098;
%let orange = CXeba411;
%let teal = CX288c95;
%let salmon = CXd5856e;
%let gray = CX929386;
title "Pinwheel Figure";
title2 "Colors=(Teal, Orange, Blue, Salmon)";
proc sgplot data=want aspect=1;
styleattrs wallcolor=&gray datacolors=(&teal &orange &blue &salmon);
polygon x=x y=y ID=ID / group=ID fill;
xaxis offsetmin=0 offsetmax=0;
yaxis offsetmin=0 offsetmax=0;
run;