【发布时间】:2015-01-21 01:41:01
【问题描述】:
用这个函数画一个“圆”,我真的想出了一个椭圆的东西。这是因为我正在使用的格式错误的像素除了使此功能变得必要之外,它们并不真正相关。
local function drawCircle( centerX, centerY, radius, col, solid )
solid = solid or false
local isAdvanced = term.isColor and term.isColor()
local char = isAdvanced and " " or "|"
if isAdvanced then term.setBackgroundColor( col ) end
local radStep = 1/(1.5*radius)
for angle = 1, math.pi+radStep, radStep do
local pX = math.cos( angle ) * radius * 1.5
local pY = math.sin( angle ) * radius
if solid then
local chord = 2*math.abs(pX)
term.setCursorPos( centerX - chord/2, centerY - pY )
write( char:rep( chord ) )
term.setCursorPos( centerX - chord/2, centerY + pY )
write( char:rep( chord ) )
else
for i=-1,1,2 do
for j=-1,1,2 do
term.setCursorPos( centerX + i*pX, centerY + j*pY )
write( char )
end
end
end
end
end
现在,我正在制作一款涉及行星(即圆圈)的游戏,但由于限制,我只能以 10 FPS 的速度运行它。我最终在游戏中获得了如此大的加速度,以至于船每 10 秒的移动速度比“圆”的直径更快,所以我正在寻找一种简单(希望是快速)的方法来计算船是否会当它神奇地在 A 点和 B 点之间传送时击中地球。
例如,假设我的船在 75、100,它的动量会使它移动 +80、-50。它最终会是 155、50。在这两点之间是我的星球,但我如何检测它呢?
我用谷歌搜索了一下,但没有想出任何我能理解的东西。我在读 11 年级的数学,只是求解方程组,虽然我也在工程课上,在那里我学习了力向量。
如果有帮助,地球就不会移动。
【问题讨论】:
标签: math lua collision-detection intersection