So I have these two parts.
You would assume that using :PointToObjectSpace from the larger part to the smaller part would return (0,-1,0), since it’s one stud below it. But no. It returns this.
0, -0.99999988079071, 6.556510925293e-07
print(workspace.P1.CFrame:PointToObjectSpace(workspace.P2.Position))
Yes, I know about floating point variation, but I have no idea why Z is 6.556510925293e-07
P1 (The larger part)'s orientation is (22.5, 0, 0)
and P2’s orientation is the same. So I have no idea why this is behaving weirdly and I need to use this for my building system.