2016-11-22 10 views
2

に最も近いQVector3Dを探す:のQt:私はこのようなQMapを持ってQMap

"1" (0.183,-0.232,0.747) 
"2" (1.232, 1.322,-0.123) etc. 

Iが入力QVector3Dされ、その出力は入力ベクトルに最も近い 鍵となる機能を必要としています。

例については

InputVector(0.189,-0.234,0.755) -> Output: "1" 

任意のアイデアをどのようにこの問題を解決するには?

答えて

0

はちょうどマップを反復処理との距離を確認してください。

int getClosestKey(const QVector3D & ref, const QMap<int, QVector3D> & map) 
{ 
    int closestKey = -1; 
    double minDistance = std::numeric_limits<double>::max(); 
    for (auto itr = map.constBegin(); itr != map.constEnd(); ++itr) 
    { 
     double d = ref.distanceToPoint(itr.value()); 
     if (d > minDistance) 
     continue; 

     closestKey = itr.key(); 
     minDistance = d; 
    } 

    return closestKey; 
} 
関連する問題