在三维空间中设计一个圆

时间:2010-02-10 15:59:25

标签: oop

如何在三维空间中设计圆圈?

对于2-D空间中的圆圈,两个成员就足够了。

1个中心;

2 radius;

但在3D中,我该如何定义圆的方向和位置?

3 个答案:

答案 0 :(得分:3)

一种可能性是包括一个与圆所在平面垂直的向量。这样做的好处是,如果你决定渲染圆圈,法线将用于确定像圆圈定义的表面反射之类的东西。

答案 1 :(得分:2)

你真的想在3D空间中使用圆形(2D形状)吗?那么这可能是解决方案:

  1. x,y,z:圆圈中心的坐标
  2. dx,dy,dz:圆圈所在平面的方向
  3. 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