首页 > 解决方案 > 4 元素归一化函数的输出

问题描述

我正在尝试开发一个 C++ 函数来规范化 4 元素向量。我认为函数内部的向量数学是正确的,但我不太确定如何从函数中获取归一化的向量元素(不使用全局变量)。

//  NORMALIZATION FUNCTION //

double normalizeThis(double q0,double q1,double q2,double q3){

    double mag; // unnormalized vector magnitude variable

    mag = pow((pow(q0,2)+pow(q1,2)+pow(q2,2)+pow(q3,2)),0.5); // calculating magnitude 
 
    q0 = q0/mag; q1 = q1/mag; q2 = q2/mag; q3 = q3/mag; // normalization!!

    return q0; q1; q2; q3;

}

标签: c++normalization

解决方案


使用结构化绑定,它看起来像这样......

#include <tuple>
#include <iostream>

using namespace std;

std::tuple<double, double, double, double> normalizeThis(double q0, double q1, double q2, double q3) {
    double mag; // unnormalized vector magnitude variable

    mag = pow((pow(q0, 2) + pow(q1, 2) + pow(q2, 2) + pow(q3, 2)), 0.5); // calculating magnitude 

    q0 /= mag; q1 /= mag; q2 /= mag; q3 /= mag; // normalization!!

    return std::make_tuple(q0, q1, q2, q3);
}

int main() {
    auto [a, b, c, d] = normalizeThis(1., 2., 3., 4.);

    std::cout << a << ',' << b << ',' << c << ',' << d << std::endl;
}

推荐阅读