【发布时间】:2015-05-25 18:11:31
【问题描述】:
我正在尝试在基于 Lua 或 VB 的代码中创建一个函数来绘制/绘制一个填充椭圆。 我对这个数学知之甚少,我可以寻求帮助。
我在 Google 上搜索了所有关于用代码绘制椭圆的信息,但我找不到一个在 VB 或 Lua 中用于填充椭圆的简单工作示例。
在本网站之前的一篇文章中,我确实得到了关于如何绘制普通椭圆的答案,但没有找到填充椭圆的答案,这就是我为填充椭圆创建一个新主题的原因。
这是我访问过的几个网站,但我找不到一种方法来制作填充椭圆而不重绘已绘制的像素...
http://groups.csail.mit.edu/graphics/classes/6.837/F98/Lecture6/circle.html
http://www.blitzbasic.com/codearcs/codearcs.php?code=2817
https://scratch.mit.edu/projects/49873666/
http://www.sourcecodesworld.com/source/show.asp?ScriptID=112
这是我的普通椭圆代码(感谢 VB 版本的“Johnny Strings”):
function DrawEllipse(xc,yc,w,h)
local w2 = w * w
local h2 = h * h
local fw2 = 4 * w2
local fh2 = 4 * h2
xc = xc + w
yc = yc + h
local x = 0
local y = h
local s = 2 * h2 + w2 * (1 - h)
while h2 * x <= w2 * y do
dot(xc + x, yc + y)
dot(xc - x, yc + y)
dot(xc + x, yc - y)
dot(xc - x, yc - y)
redraw()inkey()
color(int(rnd()*255),int(rnd()*255),int(rnd()*255))
if s >= 0 then
s = s + fw2 * (1 - y)
y = y - 1
end
s = s + h2 * ((4 * x) + 6)
x = x + 1
end
x = w
y = 0
s = 2 * w2 + h2 * (1 - w)
while w2 * y <= h2 * x do
dot(xc + x, yc + y)
dot(xc - x, yc + y)
dot(xc + x, yc - y)
dot(xc - x, yc - y)
redraw()inkey()
color(int(rnd()*255),int(rnd()*255),int(rnd()*255))
if s >= 0 then
s = s + fh2 * (1 - x)
x = x - 1
end
s = s + w2 * ((4 * y) + 6)
y = y + 1
end
end
【问题讨论】:
-
@The Blue Dog,对于这个主题的相似之处感到抱歉,但在这里我明确要求绘制填充椭圆的代码,在另一篇文章中我只收到了普通椭圆的回复......也许因为我要求 2 件事(填充椭圆和普通椭圆)最好为填充椭圆创建一个新主题?
-
我正在努力翻译它,如果我有一些问题,我可以在这里发布我未完成的代码吗?还是我必须编辑我的问题?
标签: vb.net lua draw pixels ellipse