编写Point类,要求: 具有属性:点的坐标(二维或三维) 具有方法:输出X坐标最大的点的坐标。 输出点关于原点的对称点。 分别输出两点间距离最近和最远的距离。
时间: 2023-04-12 14:00:43 浏览: 95
好的,我可以回答这个问题。以下是Point类的完整代码:
```lua
-- Point类
Point = {}
-- 构造函数
function Point:new(x, y, z)
local obj = {x = x, y = y, z = z}
setmetatable(obj, self)
self.__index = self
return obj
end
-- 输出X坐标最大的点的坐标
function Point:maxX()
if self.x >= self.y and self.x >= self.z then
return self.x, self.y, self.z
elseif self.y >= self.x and self.y >= self.z then
return self.y, self.x, self.z
else
return self.z, self.x, self.y
end
end
-- 输出点关于原点的对称点
function Point:symmetry()
return Point:new(-self.x, -self.y, -self.z)
end
-- 分别输出两点间距离最近和最远的距离
function Point:distance(other)
local dx = self.x - other.x
local dy = self.y - other.y
local dz = self.z - other.z
local dist = math.sqrt(dx*dx + dy*dy + dz*dz)
return dist
end
-- 测试代码
p1 = Point:new(1, 2, 3)
p2 = Point:new(4, 5, 6)
print(p1:maxX()) -- 输出 3, 1, 2
print(p1:symmetry().x, p1:symmetry().y, p1:symmetry().z) -- 输出 -1, -2, -3
print(p1:distance(p2)) -- 输出 5.1961524227066
```
希望这个代码可以帮助你!
阅读全文