Мне нужно перебрать определенное количество точек отбора проб. Эти точки отбора являются нормализованными векторами, представляющими направления. Они должны быть рассчитаны в коде. Начиная с прямого вектора 1, 0
Я хочу вращаться вокруг источника, чтобы придумать заданное количество направлений.
for(int i = 0; i < number_of_sampling_points; ++i)
{
// get direction vector based on i and number_of_sampling_points
// ...
}
Например, с number_of_sampling_points
является 4
внутри цикла я хочу получить пары значений 1, 0
, 0, 1
, -1, 0
, 0, -1
, Порядок не имеет значения.
Попробуй это:
const double PI = 3.14159265358979323846;
const int number_of_sampling_points = 4;
for (int i = 0; i < number_of_sampling_points; ++i)
{
const double a = PI * 2 * (1.0 - i) / number_of_sampling_points;
double x = sin(a);
double y = cos(a);
cout << "(" << x << " , " << y << ")" << endl;
}
Выход (округлено):
(1 , 0)
(0 , 1)
(-1 , 0)
(0 , -1)
Используйте триг:
double x = std::cos(pi * 2 * (double)i / (double)number_of_sampling_points);
double y = std::sin(pi * 2 * (double)i / (double)number_of_sampling_points);