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

问题描述

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

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...