0
"pos"는 실린더 내부에있는 3D 좌표입니다.정의 된 3D 실린더 내부의 위치입니다.
"pos2"는 실린더 내부에 있지 않은 3D 좌표입니다.
그러나 아래 코드를 실행하면 두 코드가 모두 실린더 밖에 있다고 판단됩니다. "ContainsVector"함수 뒤에있는 수학 문제가 있습니까? 이 데이터의, http://hastebin.com/giquwomuko.lua
Vector3 = {
new = function(x0, y0, z0)
return {x = x0, y = y0, z = z0}
end
}
CylinderRegion = {
New = function(self, center, height, r)
return {
Center = center;
Bottom = center.y - height/2;
Top = center.y + height/2;
Radius = r;
Height = height;
Volume = math.pi * r^2 * height;
PrintProperties = function(self)
for prop, val in pairs(self) do
if type(val) == "number" then
print("Cylinder "..prop..": "..tostring(val))
elseif type(val) == "table" then
print("Cylinder "..prop..": "..tostring(val.x..", "..val.y..", "..val.z))
end
end
print("\n")
end;
ContainsVector = function(self, vector)
--vector is between top and bottom
if vector.y < self.Top and vector.y > self.Bottom then
local x0 = self.Center.x
local z0 = self.Center.z
local r = self.Radius
local x1 = vector.x
local z1 = vector.z
local cont = math.sqrt((x1-x0)*(x1-x0) + (z1-z0)*(z1-z0)) < r
return cont
end
return false
end
}
end;
}
function main()
local pos = Vector3.new(-2.5, 7.5, -80.7)
local pos2 = Vector3.new(9.3, 2.5, -60.5)
local region = CylinderRegion:New(Vector3.new(13.9, 14.2, 16.7), 28.4, 61)
print("Created new cylinder with the following properties:\n")
region:PrintProperties()
local ex = region:ContainsVector(pos)
local ex2 = region:ContainsVector(pos2)
if ex then
print("pos ("..tostring(pos.x..", "..pos.y..", "..pos.z)..") is inside the cylinder!")
else
print("pos ("..tostring(pos.x..", "..pos.y..", "..pos.z)..") is NOT inside the cylinder!")
end
if ex2 then
print("pos2 ("..tostring(pos2.x..", "..pos2.y..", "..pos2.z)..") is inside the cylinder!")
else
print("pos2 ("..tostring(pos2.x..", "..pos2.y..", "..pos2.z)..") is NOT inside the cylinder!")
end
end
local s, e = pcall(main)
if not s then
print(e)
end
io.read()
[this] (https://stackoverflow.com/help/mcve)를 읽으십시오. – philipxy
내 질문에 문제를 8 줄로 좁혔는데, 나는 가독성과 이해를 위해 전체 표를 추가했다. – Elmub
이해. 그러나 중간 값을 포함하여 입력 및 예상 출력 및 출력을 제공해야합니다. 또한 문제는 당신이 생각하는 곳이 아닐 수도 있습니다. – philipxy