Lua 如何获得三角形内点的颜色?

Lua 如何获得三角形内点的颜色?,lua,computercraft,Lua,Computercraft,我正在做的是为名为ComputerCraft的Minecraft mod构建一个类似GL的粗略API。。。 我已经得到了几乎所有需要的东西,并且能够在黑色背景上画一个白色三角形 我现在要做的是从给定的网格数据中找到像素的颜色。。。 这是我的密码:LUA -- static 3D data (structured with classes not displayed) local data = triangle.Create( facepoint.Create( vector.Create

我正在做的是为名为ComputerCraft的Minecraft mod构建一个类似GL的粗略API。。。 我已经得到了几乎所有需要的东西,并且能够在黑色背景上画一个白色三角形

我现在要做的是从给定的网格数据中找到像素的颜色。。。 这是我的密码:LUA

-- static 3D data (structured with classes not displayed)
local data = triangle.Create(
facepoint.Create(
    vector.Create(0.1,0.1,0.0), --position
    vector.Create(255,0,0) --color
),
facepoint.Create(
    vector.Create(0.9,0.1,0.0),
    vector.Create(0,255,0)
),
facepoint.Create(
    vector.Create(0.5,0.9,0.0),
    vector.Create(0,0,255)
)
)

local m = peripheral.wrap('left') --gets the adv. monitor to draw on
m.setTextScale(0.5) --pseudo-pixels

local w, h = m.getSize()
local pw,ph= 1.0/w, 1.0/h -- 0.0 at top-left

local cr = 1.0/255

local p = vector.Create(0.0,0.0,0.0)
for y=1,h do
    local posy = ((y-1)*ph)+(ph*0.5)
    for x=1,w do
        local posx = ((x-1)*pw)+(pw*0.5)

        p = vector.update(posx,posy,0.0)

        local t = data

        local va,ca,vb,cb,vc,cc = t.a.vert,t.a.color,t.b.vert,t.b.color,t.c.vert,t.c.color
        -- Compute vectors
        local v0,v1,v2 = vector.Create(vc.x-va.x,vc.y-va.y,0.0), vector.Create(vb.x-va.x,vb.y-va.y,0.0), vector.Create(vp.x-va.x,vp.y-va.y,0.0)
        -- Compute dot products
        local dot00 = (v0[1]*v0[1])+(v0[2]*v0[2])
        local dot01 = (v0[1]*v1[1])+(v0[2]*v1[2])
        local dot02 = (v0[1]*v2[1])+(v0[2]*v2[2])
        local dot11 = (v1[1]*v1[1])+(v1[2]*v1[2])
        local dot12 = (v1[1]*v2[1])+(v1[2]*v2[2])
        -- Compute barycentric coordinates
        local invDenom = 1 / (dot00 * dot11 - dot01 * dot01)
        local u = (dot11 * dot02 - dot01 * dot12) * invDenom
        local v = (dot00 * dot12 - dot01 * dot02) * invDenom

        if (u >= 0) and (v >= 0) and (u + v < 1) then -- Check if point is in triangle
            -- calculate color

        else setColor(0,0,0) end

        m.write(' ')

    end
end
从代码中,我已经验证了点或像素m.write“”位于三角形内。。。 但是如何验证像素的颜色


谢谢:

您可以使用它,根据您的PointInTriangle实现,您可能已经在计算它了。将每个顶点的颜色乘以其相应的重心坐标,然后求和得到插值颜色。好的,是的,所以只需使用颜色而不是顶点来运行相同的实现,对吗??仅颜色一项我将尝试:可能需要一些帮助,尽管主要是视觉理解>^在这里找到了一个资源来帮助我:是的,这没有多大帮助,我仍然像以前一样困惑。。。我已经使用函数的内容回滚并编辑了我的代码,希望这将有助于清除一些未解决的问题