(pt, M)
return numpy.asarray([pt3[0] / pt3[3], pt3[1] / pt3[3], pt3[2] / pt3[3]])
Transform point in 3D coordinates
    :param pt: point coordinates
    :param M: transformation matrix
    :return: transformed point
Transform point in 3D coordinates
    :param pt: point coordinates
    :param M: transformation matrix
    :return: transformed point
Transform point in 3D coordinates : param pt : point coordinates : param M : transformation matrix : return : transformed point
def transformPoint3D(pt, M):
    """
    Transform point in 3D coordinates
    :param pt: point coordinates
    :param M: transformation matrix
    :return: transformed point
    """
    pt3 = numpy.dot(numpy.asarray(M).reshape((4, 4)), numpy.asarray([pt[0], pt[1], pt[2], 1]))
    return numpy.asarray([pt3[0] / pt3[3], pt3[1] / pt3[3], pt3[2] / pt3[3]])
def transformPoint3D ( pt , M ) : pt3 = numpy . dot ( numpy . asarray ( M ) . reshape ( ( 4 , 4 ) ) , numpy . asarray ( [ pt [ 0 ] , pt [ 1 ] , pt [ 2 ] , 1 ] ) ) return numpy . asarray ( [ pt3 [ 0 ] / pt3 [ 3 ] , pt3 [ 1 ] / pt3 [ 3 ] , pt3 [ 2 ] / pt3 [ 3 ] ] )