'**SUMMARY**
Draw SIFT keypoints draws a side by side representation of two images, calculates
keypoints for both images, determines the keypoint correspondences, and then draws
the correspondences. This method is helpful for debugging keypoint calculations
and also looks really cool :) .  The parameters mirror the parameters used
for findKeypointMatches to assist with debugging
**PARAMETERS**
* *template* - A template image.
* *distance* - This can be any value between about 100 and 500. Lower value should
return less number of features but higher quality features.
* *num* -   Number of features you want to draw. Features are sorted according to the
dist from min to max.
* *width* - The width of the drawn line.
**RETURNS**
A side by side image of the template and source image with each feature correspondence
draw in a different color.
**EXAMPLE**
>>> img = cam.getImage()
>>> template = Image("myTemplate.png")
>>> result = img.drawSIFTKeypointMatch(self,template,300.00):
**SEE ALSO**
:py:meth:`drawKeypointMatches`
:py:meth:`findKeypoints`
:py:meth:`findKeypointMatch`'

def drawSIFTKeyPointMatch(self, template, distance=200, num=(-1), width=1):

    if (template == None):
        return
    resultImg = template.sideBySide(self, scale=False)
    hdif = ((self.height - template.height) / 2)
    (sfs, tfs) = self.matchSIFTKeyPoints(template, distance)
    maxlen = min(len(sfs), len(tfs))
    if ((num < 0) or (num > maxlen)):
        num = maxlen
    for i in range(num):
        skp = sfs[i]
        tkp = tfs[i]
        pt_a = (int(tkp.y), (int(tkp.x) + hdif))
        pt_b = ((int(skp.y) + template.width), int(skp.x))
        resultImg.drawLine(pt_a, pt_b, color=Color.getRandom(), thickness=width)
    return resultImg
