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

use*_*708 5 3d lua geometry

我试图在块游戏中创建一个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
Run Code Online (Sandbox Code Playgroud)

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

Pau*_*nko 2

据此,这是测试表达式符号的问题:

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

其中点为 {x,y,z},环面的短半径为 b,长半径为 a。