001package org.opencv.core;
002
003//C++: class DMatch
004
005/**
006 * Structure for matching: query descriptor index, train descriptor index, train
007 * image index and distance between descriptors.
008 */
009public class DMatch {
010
011    /**
012     * Query descriptor index.
013     */
014    public int queryIdx;
015    /**
016     * Train descriptor index.
017     */
018    public int trainIdx;
019    /**
020     * Train image index.
021     */
022    public int imgIdx;
023
024    // javadoc: DMatch::distance
025    public float distance;
026
027    // javadoc: DMatch::DMatch()
028    public DMatch() {
029        this(-1, -1, Float.MAX_VALUE);
030    }
031
032    // javadoc: DMatch::DMatch(_queryIdx, _trainIdx, _distance)
033    public DMatch(int _queryIdx, int _trainIdx, float _distance) {
034        queryIdx = _queryIdx;
035        trainIdx = _trainIdx;
036        imgIdx = -1;
037        distance = _distance;
038    }
039
040    // javadoc: DMatch::DMatch(_queryIdx, _trainIdx, _imgIdx, _distance)
041    public DMatch(int _queryIdx, int _trainIdx, int _imgIdx, float _distance) {
042        queryIdx = _queryIdx;
043        trainIdx = _trainIdx;
044        imgIdx = _imgIdx;
045        distance = _distance;
046    }
047
048    /**
049     * Less is better.
050     */
051    public boolean lessThan(DMatch it) {
052        return distance < it.distance;
053    }
054
055    @Override
056    public String toString() {
057        return "DMatch [queryIdx=" + queryIdx + ", trainIdx=" + trainIdx
058                + ", imgIdx=" + imgIdx + ", distance=" + distance + "]";
059    }
060
061}