public Record getPredict(string ctsMarker, ClientObjectAttribute cl) { Program dbscan = new Program(); //Debug.Log("!!!!!!!!!!!!!Start Dbscan!!!!!!!!!!!!!"); List <int> clusterIds; List <Cluster> clusterDes; HashSet <Record[]> _clusters = dbscan.Dbscan(out clusterIds, out clusterDes); Predict predict = new Predict(); List <Record> gazePoints = preGaze.getGazePoints(getAllBrowseRecord()); List <Record> predictedCluster = predict.GetPredictedCluster( new Vector3(cl.CameraPosX, cl.CameraPosY, cl.CameraPosZ), new Vector3(cl.CameraRotX, cl.CameraRotY, cl.CameraRotZ), _clusters, clusterDes ); Record posRange = getRangeRecord(predictedCluster); Vector3 tmpPos = pathHistory[ctsMarker].cameraPos; Vector3 rot; float x_sum = 0, y_sum = 0, z_sum = 0, x_rot = 0, y_rot = 0, z_rot = 0; foreach (var j in predictedCluster) { x_sum += (float)j.posX; y_sum += (float)j.posY; z_sum += (float)j.posZ; x_rot += (float)j.rotX; y_rot += (float)j.rotY; z_rot += (float)j.rotZ; } float x_ave = x_sum / predictedCluster.Count; float y_ave = y_sum / predictedCluster.Count; float z_ave = z_sum / predictedCluster.Count; float x_averot = x_rot / predictedCluster.Count; float y_averot = y_rot / predictedCluster.Count; float z_averot = z_rot / predictedCluster.Count; if (tmpPos.x <= posRange.posX && tmpPos.y <= posRange.posY && tmpPos.z <= posRange.posZ && tmpPos.x >= posRange.rotX && tmpPos.y >= posRange.rotY && tmpPos.z >= posRange.rotZ) { rot = new Vector3(x_averot, y_averot, z_averot); } else { rot = new Vector3(x_ave, y_ave, z_ave); rot = rot - tmpPos; } //------ /*if (predictedCluster != null) * { * //把块变成坐标系 * var exchangeAxis = new ExchangeAxis(); * Record pos = new Record(exchangeAxis.ModelIndex_to_unityPos(x_ave, y_ave, z_ave), new Vector3(x_averot, y_averot, z_averot)); * return pos; * * } * else { Debug.Log("No suggestion"); }*/ return(new Record(MoveForwardPredict(pathHistory[ctsMarker], rot), rot)); }
public Record getPredict(string ctsMarker, ClientObjectAttribute cl) { Debug.Log("Start predict"); Predict predict = new Predict(); List <Record> gazePoints = preGaze.getGazePoints(getAllBrowseRecord()); Cluster predictedCluster = predict.GetPredictedCluster( new Vector3(cl.CameraPosX, cl.CameraPosY, cl.CameraPosZ), new Vector3(cl.CameraRotX, cl.CameraRotY, cl.CameraRotZ), clusterNet, gazePoints); //Record posRange = getRangeRecord(predictedCluster); Vector3 tmpPos = pathHistory[ctsMarker].cameraPos; //float x_sum = 0, y_sum = 0, z_sum = 0, x_rot = 0, y_rot = 0, z_rot = 0; //foreach (var j in predictedCluster) //{ // x_sum += (float)j.posX; // y_sum += (float)j.posY; // z_sum += (float)j.posZ; // x_rot += (float)j.rotX; // y_rot += (float)j.rotY; // z_rot += (float)j.rotZ; //} //float x_ave = x_sum / predictedCluster.Count; //float y_ave = y_sum / predictedCluster.Count; //float z_ave = z_sum / predictedCluster.Count; Vector3 cluterPos = predictedCluster.center; //float x_averot = x_rot / predictedCluster.Count; //float y_averot = y_rot / predictedCluster.Count; //float z_averot = z_rot / predictedCluster.Count; Vector3 rot = cluterPos - tmpPos; //if (tmpPos.x <= posRange.posX && tmpPos.y <= posRange.posY && tmpPos.z <= posRange.posZ // && tmpPos.x >= posRange.rotX && tmpPos.y >= posRange.rotY && tmpPos.z >= posRange.rotZ) //{ // rot = new Vector3(x_averot, y_averot, z_averot); //} //else //{ // rot = new Vector3(x_ave, y_ave, z_ave); // rot = rot - tmpPos; //} //------ /*if (predictedCluster != null) * { * //把块变成坐标系 * var exchangeAxis = new ExchangeAxis(); * Record pos = new Record(exchangeAxis.ModelIndex_to_unityPos(x_ave, y_ave, z_ave), new Vector3(x_averot, y_averot, z_averot)); * return pos; * * } * else { Debug.Log("No suggestion"); }*/ return(new Record(MoveForwardPredict(pathHistory[ctsMarker], rot), rot)); }