问题描述
编辑:我在问题的底部添加了答案。
我正在用OpenGL编写程序,并编写了一种算法来生成看起来像这样的多维数据集。我有一个std::vector<float> data;
,它保存了我所有的顶点数据-紧密包装的x,y,z坐标,即x,y,z,x,z
。
我想通过使每个点距立方体的中心(原点(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,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;
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)