From ac5139566be8957be2f885b64850c09d35bebb38 Mon Sep 17 00:00:00 2001
From: lizhanwei <Dana_Lee1016@126.com>
Date: 星期三, 18 三月 2020 10:58:46 +0800
Subject: [PATCH] 增加路考绘图;两个点推出第三个点;增加路考地图对应的json类
---
app/src/main/java/safeluck/drive/evaluation/util/Utils.java | 73 ++++++++++++++++++++++++++++++++++++
1 files changed, 73 insertions(+), 0 deletions(-)
diff --git a/app/src/main/java/safeluck/drive/evaluation/util/Utils.java b/app/src/main/java/safeluck/drive/evaluation/util/Utils.java
index 689ee59..b53bcf2 100644
--- a/app/src/main/java/safeluck/drive/evaluation/util/Utils.java
+++ b/app/src/main/java/safeluck/drive/evaluation/util/Utils.java
@@ -1,6 +1,7 @@
package safeluck.drive.evaluation.util;
import android.content.res.Resources;
+import android.graphics.PointF;
import android.os.SystemClock;
import android.util.Log;
import android.util.TypedValue;
@@ -17,6 +18,13 @@
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
+
+import safeluck.drive.evaluation.bean.Point;
+
+import static java.lang.Math.cos;
+import static java.lang.Math.pow;
+import static java.lang.Math.sin;
+import static java.lang.Math.toRadians;
/**
* MyApplication2
@@ -312,6 +320,71 @@
System.out.println("intCurrTIme="+CurrTIme);
int unsignedTime= parseUnsignedInt(String.valueOf(longCurrTIme),10);
System.out.println("unsigned int time = "+unsignedTime);
+
+Point p1 = new Point(1.0,2.0);
+Point p2 = new Point(3.0,4.0);
+ System.out.println(Calc3Point(p1,p2,5.0).toString());
+ }
+
+ public static Point Calc3Point(Point p1,Point p2,double L ){
+ Point p3 = new Point(0.0,0.0);
+ System.out.println(p1.toString()+" "+p2.toString());
+ if (isEqual(p1.getX(), p2.getX())) {
+ p3.setY( p2.getY());
+ if (p2.getY() > p1.getY()) {
+ p3.setX(p2.getX() - L);
+ } else {
+ p3.setX(p2.getX() + L) ;
+ }
+ return p3;
+ }
+ if (isEqual(p1.getY(), p2.getY())) {
+ p3.setX(p2.getX());
+ if (p2.getX() > p1.getX()) {
+ p3.setY(p2.getY()+L);
+ } else {
+ p3.setY(p2.getY() - L);
+ }
+ return p3;
+ }
+
+ double k = (p2.getY() - p1.getY()) / (p2.getX() - p1.getX());
+ double b = p1.getY() - k*p1.getX();
+
+ double A = 1 + pow(k, 2);
+ double B = 2*k*(b - p2.getY()) - 2*p2.getX();
+ double C = pow(b - p2.getY(), 2) + pow(p2.getX(), 2) - pow(L,2);
+
+ double x3, y3;
+
+
+ if (p1.getX() < p2.getX()) {
+ x3 = (- B - Math.sqrt(pow(B, 2) - 4*A*C))/(2*A);
+ } else {
+ x3 = (- B + Math.sqrt(pow(B, 2) - 4*A*C))/(2*A);
+ }
+ y3 = k * x3 + b;
+
+ p3.setX(x3);
+ p3.setY(y3);
+
+ p3 = rotatePoint(p3, p2, 270);
+
+ return p3;
+
+ }
+
+ private static boolean isEqual(double a,double b){
+ return (Math.abs(a-b)<1e-3);
+ }
+ private static Point rotatePoint(Point oldPoint,Point centre,double degree){
+
+ Point newPoint = new Point(0.0,0.0);
+ newPoint.setX((oldPoint.getX()-centre.getX())*cos(toRadians(degree)) -
+ (oldPoint.getY()-centre.getY())*sin(toRadians(degree)) + centre.getX()) ;
+ newPoint.setY( (oldPoint.getX()-centre.getX())*sin(toRadians(degree))
+ + (oldPoint.getY()-centre.getY())*cos(toRadians(degree)) + centre.getY());
+ return newPoint;
}
}
--
Gitblit v1.8.0