lua z维度中的3d光栅化器问题不起作用

lua z维度中的3d光栅化器问题不起作用,lua,3d,minecraft,computercraft,Lua,3d,Minecraft,Computercraft,所以基本上我试着将olc3d引擎从cpp翻译成minecraft中computercraft中的lua 我可以在x和y方向上平移立方体,但z方向不起作用 这是我试图复制的原始olc3d引擎 如果有人想尝试复制设置,它是一个6x8高级显示器,在左侧显示,在右侧显示高级计算机(显示器在左侧很重要)。modpack是ftb显示,但它应该只与安装的computercraft mod一起工作 function newLine() xPos, yPos = term.getCursorPos()

所以基本上我试着将olc3d引擎从cpp翻译成minecraft中computercraft中的lua 我可以在x和y方向上平移立方体,但z方向不起作用 这是我试图复制的原始olc3d引擎

如果有人想尝试复制设置,它是一个6x8高级显示器,在左侧显示,在右侧显示高级计算机(显示器在左侧很重要)。modpack是ftb显示,但它应该只与安装的computercraft mod一起工作

function newLine()
  xPos, yPos = term.getCursorPos()
  term.setCursorPos(1,(yPos + 1))
end
paitutils2.newMonitor("left")
mesh = {
  
  {vector.new(0.0,0.0,0.0),vector.new(0.0,1.0,0.0),vector.new(1.0,1.0,0.0)},
  {vector.new(0.0,0.0,0.0),vector.new(1.0,1.0,0.0),vector.new(1.0,0.0,0.0)},
  
  {vector.new(1.0,0.0,0.0),vector.new(1.0,1.0,0.0),vector.new(1.0,1.0,1.0)},
  {vector.new(1.0,0.0,0.0),vector.new(1.0,1.0,1.0),vector.new(1.0,0.0,1.0)},
  
  {vector.new(1.0,0.0,1.0),vector.new(1.0,1.0,1.0),vector.new(0.0,1.0,1.0)},
  {vector.new(1.0,0.0,1.0),vector.new(0.0,1.0,1.0),vector.new(0.0,0.0,1.0)},
  
  {vector.new(0.0,0.0,1.0),vector.new(0.0,1.0,1.0),vector.new(0.0,1.0,0.0)},
  {vector.new(0.0,0.0,1.0),vector.new(0.0,1.0,0.0),vector.new(0.0,0.0,0.0)},
  
  {vector.new(0.0,1.0,0.0),vector.new(0.0,1.0,1.0),vector.new(1.0,1.0,1.0)},
  {vector.new(0.0,1.0,0.0),vector.new(1.0,1.0,1.0),vector.new(1.0,1.0,0.0)},
  
  {vector.new(1.0,0.0,1.0),vector.new(0.0,0.0,1.0),vector.new(0.0,0.0,0.0)},
  {vector.new(1.0,0.0,1.0),vector.new(0.0,0.0,0.0),vector.new(1.0,0.0,0.0)}

}

matrix = {{0,0,0,0},
         {0,0,0,0},
         {0,0,0,0},
         {0,0,0,0}}
       
matproj = matrix

wysokosc  = 80.0
szerokosc = 164.0

fnear = 0.1
ffar  = 1000.0
ffov  = 90.0
fasr  = (wysokosc/szerokosc)* (7/5) --because 'pixel' is 7x5 pixels 
ffovr = 1.0 / math.tan(ffov * 0.5 / 180.0 * math.pi)
w=1
        --3dpespective matrix

matproj[1][1] = fasr * ffovr
matproj[2][2] = ffovr
matproj[3][3] = -ffar / (ffar - fnear)
matproj[4][3] = (-ffar * fnear)/(ffar - fnear)
matproj[3][4] = -1.0
matproj[4][4] = 0.0


function proj_mat(matrix ,trj)
  proj_tri = vector.new()
  --print(trj.x .." ".. trj.y .." " .. trj.z )
  
 
  
  proj_tri.x = (trj.x * matrix[1][1]) + (trj.y * matrix[2][1]) + (trj.z * matrix[3][1] )+ w * matrix[4][1]
  
  proj_tri.y = (trj.x * matrix[1][2]) + (trj.y * matrix[2][2]) + (trj.z * matrix[3][2] )+ w * matrix[4][2]
  
  proj_tri.z = (trj.x * matrix[1][3]) + (trj.y * matrix[2][3]) + (trj.z * matrix[3][3] )+ w * matrix[4][3]
  
  w          = (trj.x * matrix[1][4]) + (trj.y * matrix[2][4]) + (trj.z * matrix[3][4] )+ w * matrix[4][4]
  
  if not  w == 0.0 then
    proj_tri.x = proj_tri.x / w
    proj_tri.y = proj_tri.y / w
    proj_tri.z = proj_tri.z / w
  end
  print(proj_tri.x .." ".. proj_tri.y .." " .. proj_tri.z .."  ".. trj.x .." ".. trj.y .. " " .. trj.z)
  return(proj_tri)
end

  
  peripheral.call("left","setBackgroundColor",colors.black)
  peripheral.call("left","setCursorBlink",false)
  peripheral.call("left","setTextScale",0.5)
  peripheral.call("left","clear")
  peripheral.call("left","setBackgroundColor",colors.red)
  for i = 1  ,  12 ,1 do
    vert = {}
 vert[1] = mesh[i][1]
    vert[2] = mesh[i][2]
    vert[3] = mesh[i][3]
    --print(vert[1].x .." ".. vert[1].y.." " .. vert[1].z .. " "..vert[2].x .." ".. vert[2].y.." " .. vert[2].z .." ".. vert[3].x .." ".. vert[3].y.." " .. vert[3].z)
    
    vert[1].z = vert[1].z + 3.0
    vert[2].z = vert[2].z + 3.0 --translacja
    vert[3].z = vert[3].z + 3.0
    
    vert[1].x = vert[1].x + 0.25
    vert[2].x = vert[2].x + 0.25 --translacja
    vert[3].x = vert[3].x + 0.25

    --vert[1].y = vert[1].y + 0.5
    --vert[2].y = vert[2].y + 0.5 --translacja
    --vert[3].y = vert[3].y + 0.5
    --print(vert[1].x .." ".. vert[1].y.." " .. vert[1].z .. " | "..vert[2].x .." ".. vert[2].y.." " .. vert[2].z .." | ".. vert[3].x .." ".. vert[3].y.." " .. vert[3].z)
    
    proj_vert = vector.new()
    
    -- proj_vert[1] = proj_mat(rotx,vert[1])
    -- proj_vert[2] = proj_mat(rotx,vert[2]) --rotate x
    -- proj_vert[3] = proj_mat(rotx,vert[3])
    
    proj_vert[1] = proj_mat(matproj,vert[1])
    proj_vert[2] = proj_mat(matproj,vert[2]) --projekcja 3d na 2d
    proj_vert[3] = proj_mat(matproj,vert[3])
    
     --skalowanie
    
    
    
    proj_vert[1].x = proj_vert[1].x  * szerokosc
    proj_vert[1].y = proj_vert[1].y  * wysokosc + 1
    
    proj_vert[2].x = proj_vert[2].x  * szerokosc
    proj_vert[2].y = proj_vert[2].y  * wysokosc + 1
    
    proj_vert[3].x = proj_vert[3].x  * szerokosc
    proj_vert[3].y = proj_vert[3].y  * wysokosc + 1
    
 

    paitutils2.drawLine(proj_vert[1].x,proj_vert[1].y,proj_vert[2].x,proj_vert[2].y)
    paitutils2.drawLine(proj_vert[1].x,proj_vert[1].y,proj_vert[3].x,proj_vert[3].y)
    paitutils2.drawLine(proj_vert[3].x,proj_vert[3].y,proj_vert[2].x,proj_vert[2].y)
    
    term.setTextColor(colors.white)
    
    --term.write("w["..w.."] ")
    --newLine()
    --term.write(" x[" .. proj_vert[1].x .. "] y[" .. proj_vert[1].y .. "] x2[" .. proj_vert[2].x .. "] y2[" .. proj_vert[2].y .."] \n")
    --newLine()
    --term.write(" x[" .. proj_vert[1].x .. "] y[" .. proj_vert[1].y .. "] x2[" .. proj_vert[3].x .. "] y2[" .. proj_vert[3].y .."] \n")
    --newLine()
    --term.write(" x[" .. proj_vert[3].x .. "] y[" .. proj_vert[3].y .. "] x2[" .. proj_vert[2].x .. "] y2[" .. proj_vert[2].y .."] \n")
    --newLine()
  end