| | |
| | | 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; |
| | |
| | | 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 |
| | |
| | | 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; |
| | | } |
| | | |
| | | } |