C ++如何将立方体映射到球形立方体?

时间:2020-09-10 04:39:23

标签: c++ opengl

编辑:我在问题的底部添加了答案。

我正在用OpenGL编写程序,并编写了一种算法来生成看起来像这样的多维数据集。我有一个std::vector<float> data;,它保存了我所有的顶点数据-紧密包装的x,y,z坐标,即x, y, z, x, y, z

enter image description here

我想通过使每个点距立方体的中心(原点(0、0、0))具有相同的半径,将其变成球形立方体,但是我只是通过学习数学来补充学习内容,因此我仍然对此毫无希望。我已经读过这个answer,但我不太了解如何将其应用于我的个人坐标。

例如,假设我有原点(0,0,0)和坐标(3,3,5),特别是作为3个不同的floats,我将如何获得翻译后的x,y,z我是否希望半径为2?代码可能看起来像这样:

std::vector<float> data;
data.push_back(3); // Random vertex, x, y, z
data.push_back(3);
data.push_back(5);
data.push_back(3); // Another random vertex
data.push_back(3);
data.push_back(4);

/* Now map coordinates to a sphere. ADDING ANSWER BELOW */
float x = data.at(0);
float y = data.at(1);
float z = data.at(2);
float div = sqrt((x * x) + (y * y) + (z * z));
data.at(0) = data.at(0) / div;
data.at(1) = data.at(1) / div;
data.at(2) = data.at(2) / div;

0 个答案:

没有答案
相关问题