uint32 data2 = transitionVertexData[tableIndex][ind];
uint32 edge = data2 >> 8;
uint32 edgeId = edge & 0x0F;
if (!(edgeId == 0x9 || edgeId == 0x8))
{
    uint32 id;
    uint32 corner0 = data2 & 0x0F;
    uint32 corner1 = (data2 & 0xF0) >> 4;
    vector3 pt = calculateIntersectionTransvoxel(x, y, z, corner0, corner1, mpTrans, voxel[coord]);
    pt*=m_scale;

    uint32 owner = (edge & 0xF0) >> 4;
    uint32 diffX = owner%2;
    uint32 diffY = (owner >> 1)%2;
    uint32 diffZ = 1;
    if (coord == 0)
    {
        diffX = 1;
        diffY = owner%2;
        diffZ = (owner >> 1)%2;
    }
    if (coord == 2)
    {
        diffY = 1;
        diffZ = (owner >> 1)%2;
    }

    id = vertexID(x - diffX, y - diffY, z - diffZ) + (edgeId-1) + 20 * (coord+1) * (m_sizeX+3)*(m_sizeY+3)*(m_sizeZ+3);
    if (owner == 4) // wont get reused
        id = vertexID(x, y, z) + 200 * (coord+1) * (m_sizeX+3)*(m_sizeY+3)*(m_sizeZ+3) + ind;
        verticesCalc->insert(id, vertex(pt, normal));
        ids[ind]=id;
    }
    // calc normal
    vertex *pos0(&(*verticesCalc)[ids[data->vertexIndex[ind+0]]]);
    vertex *pos1(&(*verticesCalc)[ids[data->vertexIndex[ind+1]]]);
    vertex *pos2(&(*verticesCalc)[ids[data->vertexIndex[ind+2]]]);
    if (pos0->pos == pos1->pos || pos1->pos == pos2->pos || pos0->pos == pos2->pos)
        continue; // triangle with 0 space
    vector3 addNormal = (pos1->pos - pos0->pos).crossProduct(pos2->pos - pos0->pos);
    {
        pos0->normal += addNormal;
        pos1->normal += addNormal;
        pos2->normal += addNormal;
    }
}

triangle tri;
uint32 invert = 1;
if (invertTriangles)
    invert = 0;
if ((classIndex >> 7) % 2 == invert)
{
    tri = triangle(ids[data->vertexIndex[ind+0]],
    ids[data->vertexIndex[ind+1]],
    ids[data->vertexIndex[ind+2]]);
}
else
{
    tri = triangle(ids[data->vertexIndex[ind+1]],
    ids[data->vertexIndex[ind+0]],
    ids[data->vertexIndex[ind+2]]);
}
triangleCalc->push_back(tri);

Willkommen!

Hier finden Sie einen Überblick über meine beruflichen und privaten Interessen als Entwickler.

In den letzten Jahren habe ich mir in meiner Freizeit und als freier Entwickler ein breites Fachwissen als Programmierer angeeignet. Von effizienten maschinennahen Sprachen wie C/C++ über Skriptsprachen wie Lua, Python, JavaScript bis hin zu ABAP (SAP).

Mein besonderes Interesse gilt der parallelen und asynchronen Programmierung, sowie der Netzwerkentwicklung. Ich arbeite sehr gerne an Echtzeitalgorithmen und Echtzeitsimulationen. Sprich, alles das wo Millisekunden entscheidend sind.

Als großer Linux-Fan versuche ich bei meinen Entwicklungen immer möglichst plattformunabhängig zu implementieren. So habe ich Applikationen für Linux, Windows und Mac OSX  fertiggestellt und Apps für Android und iOS  freigegeben.

Dabei ist eine große Zahl an Projekten entstanden. Über einen Teil kannst du dich auf der Projekteseite informieren. Sie wurden alle in meiner Freizeit erstellt und sind zum Teil open source.

Haben Sie irgendwelche Fragen, dann freue ich mich über eine Nachricht von Ihnen. Folgen Sie meinen neuesten Aktivitäten und Projekten auf Google+ oder meinem Youtube Channel.

Sprachen, Libraries, SDKs und Engines

Ich habe exzellente Kenntnisse in objektorientierter Programmierung, vor allem in C++, C#/Mono, Java und Phyton.  Des Weiteren arbeitete ich mit folgenden Sprachen: ABAP, Assembler, C, objective C, JavaScript, lua, bash, VisualBasic, postgreScript, Prolog, HLSL, GLSL und Nvidia Cg 3.*.  Im Zuge dessen habe ich mich in zahlreiche Bibliotheken, SDKs, Frameworks und Engines eingearbeitet.

Mit Folgenden habe ich mich sehr intensiv auseinander gesetzt und dabei gelernt: "Dokumentation ist wie Sex: Ist sie gut, will man mehr; ist sie schlecht, ist es besser als gar nichts."

Allgemeinboost
MobilAndroid, iOS
SpielengineUnity3d, XNA
GUIQt, Gtk/Gtk+/PyObjectGtk, MyGUI
NetzwerkAsio, RakNet 3/4
GrafikOgre3dDirectX9
SoundOpenAL, fmod
Physikbullet, PhysX
AlgorithmenOpenCV