Умножение матрицы собственнойC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Умножение матрицы собственной

Сообщение Anonymous »

#include
#include
#include
#include

int main()
{
const int num_points = 300000000;

Eigen::Matrix init_points(num_points, 3);
Eigen::Matrix transformed_points(num_points, 3);

std::mt19937 rng(42);
std::uniform_real_distribution dist(-100.0f, 100.0f);

for (int i = 0; i < num_points; ++i)
{
init_points(i, 0) = dist(rng); // x
init_points(i, 1) = dist(rng); // y
init_points(i, 2) = dist(rng); // z
}

float theta = 3.14159265358 / 4; // pi/4
Eigen::Matrix3f rotation;
rotation = Eigen::AngleAxisf(theta, Eigen::Vector3f::UnitZ());

Eigen::Vector3f translation(10.0f, 20.0f, 30.0f);

auto start_time = std::chrono::high_resolution_clock::now();

//transformed_points = init_points * rotation; //uncomment this line to use the Matrix multiply version
//transformed_points.rowwise() += translation.transpose(); //uncomment this line to use the Matrix multiply version

for (int i = 0; i < num_points; ++i) //comment this for loop to use the Matrix multiply version
{
Eigen::Vector3f v = init_points.row(i).transpose();
v = rotation * v;
v += translation;
transformed_points.row(i) = v.transpose();
}

auto end_time = std::chrono::high_resolution_clock::now();
std::chrono::duration duration_ms = end_time - start_time;
std::cout

Подробнее здесь: https://stackoverflow.com/questions/792 ... -traversal
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»