用变换矩阵将圆柱体转化为锥体
Converting a cylinder into a cone using transformation matrix
使用基于OpenGL ES 2.0的图形引擎时,我遇到了以下数学问题:
使用这里描述的创建圆柱体的算法http://paulbourke.net/geometry/circlesphere/可以创建一个通用的圆柱体网格。在我的应用程序中,我只使用一个圆柱体网格。通过缩放圆柱体,可以创建具有不同半径和高度的新圆柱体,而无需改变标准圆柱体网格(r=1,h=1)。
对于锥体,我目前创建了另一个网格,但我有一个想法,它必须以某种方式可以使用矩阵操作将圆柱体转换为锥体。理想情况下,应该可以创建一个具有指定r1和r2的圆柱体(对于标准网格,r1=r2=1)。
你知道这怎么可能吗?我想过透视矩阵,但没有成功。
从技术上讲,使用投影变换可以从圆柱体生成截锥形。但是您必须考虑到投影将顶点映射到标准化的设备坐标(范围从-1.0到1.0)。此外,投影变换可能是不够的情况下,当你定义你的形状的单位截锥体,所以你将不得不使用额外的相机变换。
实际上,你可以尝试烘烤(以某种方式)你的主相机转换&投影。只需将圆柱体放置在视图区域的中心,沿相机的Z轴定向其Y轴,设置适当的FOV并烘烤所有转换(包括圆柱体的世界转换)。通过将所有这些矩阵相乘,您将得到在标准化设备坐标下的圆柱体到锥体的变换。
相关文章:
- 基于范围的变换以实现正常循环
- OpenCV 傅里叶变换复杂输出问题
- SFML 纹理变换(放大)
- 平面缓冲区可以利用向量中的 0 吗?还是其他小波比哈尔变换更好?
- 有没有一种惯用的方法可以在不存储变换或不必要地重新计算的情况下找到数组变换的最小/最大值?
- 在特征中显示仿射变换
- 离散傅立叶变换C++
- ICP变换矩阵平移和旋转
- 如何从2D数组为QHeightMapSurfaceDataProxy创建高度图以显示2D傅立叶变换结果
- 将 3D 变换转换为 2D
- 使用变换翻转地图,接收错误"type int unexpected"
- 指示 Qi 变换属性失败的适当方法是什么?
- 如何在 c++ 中将变换与对的向量一起使用
- 骨骼动画:变换矩阵(collada)之间的插值
- 函数已知时的傅里叶变换
- 与 fftw3 相比,错误的 2D CuFFT 逆变换
- DFT(离散傅里叶变换)与C++代码
- 3D 矢量 - 变换和减号
- 快速计算变换/旋转马里克斯4x4
- 用变换矩阵将圆柱体转化为锥体