Cast не учитывает неявные преобразования, определенные пользователем, поэтому вы не можете использовать такой массив. Вместо этого вы можете использовать select:
myArray.Select(p => (Vec2)p).ToArray();
Или записать конвертер:
Array.ConvertAll(points, (p => (Vec2)p));
Последнее, вероятно, более эффективно, поскольку размер результата известен заранее.