i have a calculation for convert 3D vectors to 2D vectors:
(isn't a C++ code, but you get the point)
Private Function ConvertPositon3DTo2D(Position As Position3D, World3DSize As Size3D) As POINTAPI    Dim ConvertedPosition As POINTAPI
    Dim PosZZDepth As Long
    PosZZDepth = Position.Z + World3DSize.distance
    If (PosZZDepth = 0) Then PosZZDepth = 1 'avoiding division by zero
    Dim Width As Double
    Dim Height As Double
    Width = World3DSize.Width / 2
    If (Width = 0) Then Width = 0
    Height = World3DSize.Height / 2
    If (Height = 0) Then Height = 0
    ConvertedPosition.X = (Position.X * World3DSize.distance / PosZZDepth) + Width ' i add '+ Width', because it's the center of screen
    ConvertedPosition.Y = (Position.Y * World3DSize.distance / PosZZDepth) + Height
    ConvertPositon3DTo2D = ConvertedPosition
End Function
i need ask 1 thing that it's killing me and make confused: if the X and Y are negative(on 2D), why it be can drawed on camera in a diffent way?(like seen 2 triangles)
see the image:
unless i miss something that i don't know.. please can anyone explain to me what i'm doing wrong on these conversion?