当前位置 : 主页 > 网络编程 > lua >

3d – 给定原点和半径,如何找出p(x,y,z)是否在环面内?

来源:互联网 收集:自由互联 发布时间:2021-06-23
我试图在块游戏中创建一个3D圆环,所以我需要评估一系列坐标,看看它们是否在圆环内.我用球体做的方式是: shapefunc = function (pos,fields) map = {} pos.x = math.floor(pos.x+0.5) pos.y = math.floor(pos.
我试图在块游戏中创建一个3D圆环,所以我需要评估一系列坐标,看看它们是否在圆环内.我用球体做的方式是:

shapefunc = function (pos,fields)
  map = {}
  pos.x = math.floor(pos.x+0.5)
  pos.y = math.floor(pos.y+0.5)
  pos.z = math.floor(pos.z+0.5)

  for x=-fields.radius,fields.radius do
    for y=-fields.radius,fields.radius do
      for z=-fields.radius,fields.radius do
        if x*x+y*y+z*z <= fields.radius*fields.radius then
          table.insert(map,{x=pos.x+x,y=pos.y+y,z=pos.z+z})
        end
      end
    end
  end
  return map
end

给定高度(在y轴上),次要和主要半径(在xz轴上)和一个原点,我试过的评估表达式都没有给我任何接近圆环的东西.

根据 this,这是测试表达符号的问题:

(x ^ 2 y ^ 2 z ^ 2-(a ^ 2 b ^ 2))^ 2 – 4 * a * b *(b ^ 2-z ^ 2)

其中点是{x,y,z},圆环的小半径是b,主半径是a.

网友评论