如何在三维空间中设计圆圈?
对于2-D空间中的圆圈,两个成员就足够了。
1个中心;
2 radius;
但在3D中,我该如何定义圆的方向和位置?
答案 0 :(得分:3)
一种可能性是包括一个与圆所在平面垂直的向量。这样做的好处是,如果你决定渲染圆圈,法线将用于确定像圆圈定义的表面反射之类的东西。
答案 1 :(得分:2)
你真的想在3D空间中使用圆形(2D形状)吗?那么这可能是解决方案:
x,y,z
:圆圈中心的坐标dx,dy,dz
:圆圈所在平面的方向r
:radius 答案 2 :(得分:1)
根据您对对象的要求 - 我有另一种选择。 将圆形建模为xy平面中的单位圆,z = 0。 完成缩放,翻译和旋转操作。 如果您计划对对象进行许多矩阵运算,这可能就是您的选择。
您还可以将单位圆的位置,半径和平面信息的法线保持为属性。并有一个方法来转换两个描述方法。
Circle() - Default Unit circle at (0,0,0), radius 1, xy plane at z=0
Circle(scale, translate, rotate) - my constructor
Circle(location, radius, normal) - the other proposed constructor