| | |
| | | |
| | | import com.anyun.exam.lib.MyLog; |
| | | import com.anyun.exam.lib.util.ByteUtil; |
| | | import com.google.gson.Gson; |
| | | import com.safeluck.aykj.utils.BytesUtils; |
| | | |
| | | import java.io.File; |
| | |
| | | import javax.crypto.spec.DESKeySpec; |
| | | import javax.crypto.spec.IvParameterSpec; |
| | | |
| | | import safeluck.drive.evaluation.app; |
| | | import safeluck.drive.evaluation.bean.CarModel; |
| | | import safeluck.drive.evaluation.bean.GisCarModel; |
| | | import safeluck.drive.evaluation.bean.Point; |
| | | import safeluck.drive.evaluation.httpmodule.GsonConverterFactory; |
| | | |
| | | import static java.lang.Math.cos; |
| | | import static java.lang.Math.pow; |
| | |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | public static List<CarModel> getCarModelData(Point basePoint, List<Integer> axial, List<Point> car){ |
| | | List<CarModel> carModelList = new ArrayList<>(); |
| | | double C02= (car.get(0).getX()-basePoint.getX())*(car.get(0).getX()-basePoint.getX()) + (car.get(0).getY()-basePoint.getY())*(car.get(0).getY()-basePoint.getY()); |
| | | double c0 = Math.sqrt(C02); |
| | | CarModel carModel = new CarModel(); |
| | | carModel.setDistance(c0); |
| | | carModel.setAngle(0.0); |
| | | carModelList.add(carModel); |
| | | |
| | | for (int i = 1; i < car.size(); ++i) { |
| | | double dis2 = (car.get(i).getX()-basePoint.getX())*(car.get(i).getX()-basePoint.getX()) + (car.get(i).getY()-basePoint.getY())*(car.get(i).getY()-basePoint.getY()); |
| | | double dis = Math.sqrt(dis2); |
| | | |
| | | CarModel c =new CarModel(); |
| | | c.setDistance(dis); |
| | | |
| | | c.setAngle(180 * Math.acos((dis2 + C02 - ((car.get(i).getX()-car.get(0).getX())*(car.get(i).getX()-car.get(0).getX()) + |
| | | (car.get(i).getY()-car.get(0).getY())*(car.get(i).getY()-car.get(0).getY())))/(2*c0*dis)) / Math.PI); |
| | | |
| | | if (i > axial.get(1)){ |
| | | c.setAngle( 360.0 - c.getAngle()); |
| | | } |
| | | carModelList.add(c); |
| | | } |
| | | return carModelList; |
| | | } |
| | | |
| | | public static List<Point> getCarPoint(double pitch,double yaw,Point point){ |
| | | pitch = 0; |
| | | // yaw = 45; |
| | | Point main_ant = point; |
| | | List<Point> carNew = new ArrayList<>(); |
| | | StringBuffer buffer=FileUtil.readAssetTxtFile(app.getAppContext(),"giscar.json"); |
| | | Log.i(TAG,"giscar="+buffer.toString()); |
| | | GisCarModel gisCarModel= new Gson().fromJson(buffer.toString(),GisCarModel.class); |
| | | List<Point> pointList = new ArrayList<Point>() ; |
| | | for (int i = 0; i < gisCarModel.getPoint().size(); i++) { |
| | | double x= gisCarModel.getPoint().get(i); |
| | | i++; |
| | | double y= gisCarModel.getPoint().get(i); |
| | | pointList.add(new Point(x,y)); |
| | | |
| | | |
| | | |
| | | } |
| | | double mainAnt_x = gisCarModel.getMain_ant().get(0); |
| | | double mainAnt_y = gisCarModel.getMain_ant().get(1); |
| | | List<CarModel> carModels = getCarModelData(new Point(mainAnt_x, mainAnt_y),gisCarModel.getAxial(),pointList); |
| | | if (carModels != null && carModels.size()>0){ |
| | | |
| | | for (int i = 0; i < carModels.size(); ++i) { |
| | | Log.i(TAG,String.format("位置[%d],distance=%f,angle=%f",i,carModels.get(i).getDistance(),carModels.get(i).getAngle())); |
| | | double qrx = carModels.get(i).getDistance() * Math.sin(carModels.get(i).getAngle() * Math.PI / 180); |
| | | double qry = carModels.get(i).getDistance() * Math.cos(carModels.get(i).getAngle() * Math.PI / 180) * Math.cos(pitch * Math.PI / 180); |
| | | |
| | | double projectDistance = Math.sqrt(Math.pow(qrx, 2) + Math.pow(qry, 2)); |
| | | double projectAngle = Math.acos(qry / projectDistance) * 180 / Math.PI; |
| | | |
| | | if (carModels.get(i).getAngle() > 180) { |
| | | projectAngle = 360 - projectAngle; |
| | | } |
| | | |
| | | double X = |
| | | projectDistance * Math.sin(yaw * Math.PI / 180) * Math.cos(projectAngle * Math.PI / 180) - |
| | | projectDistance * Math.cos(yaw * Math.PI / 180) * Math.sin(projectAngle * Math.PI / 180) + |
| | | main_ant.getX(); |
| | | double Y = |
| | | projectDistance * Math.sin(yaw * Math.PI / 180) * Math.sin(projectAngle * Math.PI / 180) + |
| | | projectDistance * Math.cos(yaw * Math.PI / 180) * Math.cos(projectAngle * Math.PI / 180) + |
| | | main_ant.getY(); |
| | | carNew.add(new Point(X,Y)); |
| | | |
| | | } |
| | | } |
| | | return carNew; |
| | | |
| | | |
| | | } |
| | | } |