--
-- pixwerx - test - core
--

-- loading our libraries
pw.script:load_all()

-- vector3
local v1 = pw.vector3(3,2,1)
print("v1 ",v1.x,v1.y,v1.z)

local v2 = pw.vector3(1,2,3)
print("v2 ",v2.x,v2.y,v2.z)

local v_up = pw.vector3.up
print("v_up",v_up.x,v_up.y,v_up.z)

local v3 = v1 + v2
print(v1 + v2)
print("v3 ",v3.x,v3.y,v3.z)
print("v3.norm",v3.norm)
print("v3.squared_norm",v3.squared_norm)

print(v1,v1.arr,v1.data[2])

local v4 = v3

print("v4",v4)

print(v4.table)

v4.table = { 11, 22, 33 }

print("v4 ", v4.x, v4.y, v4.z)


local m4 = pw.matrix4x4.identity

v44 = m4 * v4

print("v44 ", v44.x, v44.y, v44.z)


-- quaternion
local q = pw.quaternion.identity

print("q",q.x,q.y,q.z,q.w)

qi = q.inverse

print("q.inverse",qi.x,qi.y,qi.z,qi.w)

local q2 = pw.quaternion(1,1,1,2)

local qn = q2.normalized
print("q2.normalized",qn.x,qn.y,qn.z,qn.w)

local ql = pw.quaternion.lerp(q,q2,0.5).normalized
print("q-qi lerp",ql.x,ql.y,ql.z,ql.w)

local qsl = pw.quaternion.slerp(q,q2,0.5).normalized
print("q-qi slerp",qsl.x,qsl.y,qsl.z,qsl.w)


-- axisangle
local aa = pw.axisangle(pw.vector3.up,0.707)
print("aa.axis",aa.axis.x,aa.axis.y,aa.axis.z)
print("aa.angle",aa.angle)

local g = pw.geometry()
g.indices = { 11, 22, 33 }


-- alert! the returned table is a copy!
table.insert(g.indices,44)

print("#g.indices   ",#g.indices)

-- to insert one needs to set the whole table
local temp = g.indices
temp[#temp + 1] = 44
g.indices = temp


for k,v in ipairs(g.indices) do
    print("index: ",k,v)
end


g.vertices = {
    { 11, 11, 11 },
    { 22, 22, 22 },
    { 33, 33, 33 }
}

-- now look at the vertices
for k,v in ipairs(g.vertices) do
    print("vertex: ",k,v.x,v.y,v.z)
end


-- now look at the texture coordinates

g.texture_coordinates = {
{
    { 0, 0 },
    { 1, 0 },
    { 1, 1 },
    { 0, 1 }
}
}

for k,v in ipairs(g.texture_coordinates) do
    for ki,vi in ipairs(v) do
        print("texture_coord",k,ki,vi.x,vi.y)
    end
end


