Dames, Heren
Ik ben bezig met een gps applicatie en moet nu kijken of een punt binnen een radius rondom de route valt.
Ik ben bezig geweest met "point to line distance" en heb verschillende methoden geprobeerd.
zie hier
Dit alles gaat goed totdat ik mijn huidige positie een x positie geef die groter is dan mijn routebegin.x
dan wordt mijn positie niet mee gedraait met de route.
Enig idee hoe ik dit kan oplossen?
Ik heb het forum doorzocht en ik ben een "x" aantal posts tegen gekomen maar dat klopt binnen mijn code allemaal niet..
Ik heb mijn gps coordinaten omgezet naar pixel posities
en ik reken dus ook met pixel posites. vandaar de cast naar een int.
Ik ben bezig met een gps applicatie en moet nu kijken of een punt binnen een radius rondom de route valt.
Ik ben bezig geweest met "point to line distance" en heb verschillende methoden geprobeerd.
zie hier
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
| public RouteCoordinate[] calculate(RouteCoordinate me, RouteCoordinate routeBegin, RouteCoordinate routeEnd)
{
RouteCoordinate[] returnCoordinate = new RouteCoordinate[2];
RouteCoordinate newEnd = new RouteCoordinate();
RouteCoordinate newMe = new RouteCoordinate();
RouteCoordinate triggerPoint1 = new RouteCoordinate(0,0);
RouteCoordinate triggerPoint2 = new RouteCoordinate(0,0);
triggerPoint1 = new RouteCoordinate(routeBegin.x,routeEnd.y);
double yDistance1 = Math.abs(routeBegin.y - triggerPoint1.y); // lengte a
double xDistance1 = Math.abs(routeEnd.x - triggerPoint1.x); // lengte b
double routeDistance1 = Math.sqrt(Math.pow(yDistance1, 2.0) + Math.pow(xDistance1, 2.0)); // lengte c
newEnd = new RouteCoordinate((int)routeBegin.x, (routeBegin.y + (int)Math.round(routeDistance1)) );
double angleAlpha = Math.atan(xDistance1 / yDistance1);
triggerPoint2 = new RouteCoordinate(routeBegin.x,me.y);
double yDistance2 = Math.abs(routeBegin.y - triggerPoint2.y); // lengte d
double xDistance2 = Math.abs(me.x - triggerPoint2.x); // lengte e
double lengthF = Math.sqrt(Math.pow(yDistance2, 2.0) + Math.pow(xDistance2, 2.0)); // lengte f
double angleBeta = Math.atan(xDistance2 / yDistance2);
double angleDelta = angleBeta - angleAlpha;
double lengthG = lengthF * Math.sin(angleDelta);
double lengthH = Math.sqrt(Math.pow(lengthF,2) - Math.pow(lengthG,2));
newMe = new RouteCoordinate(routeBegin.x - (int)Math.round(lengthG),routeBegin.y + (int)Math.round(lengthH));
returnCoordinate[0] = newEnd;
returnCoordinate[1] = newMe;
return returnCoordinate;
} |
Dit alles gaat goed totdat ik mijn huidige positie een x positie geef die groter is dan mijn routebegin.x
dan wordt mijn positie niet mee gedraait met de route.
Enig idee hoe ik dit kan oplossen?
Ik heb het forum doorzocht en ik ben een "x" aantal posts tegen gekomen maar dat klopt binnen mijn code allemaal niet..
Ik heb mijn gps coordinaten omgezet naar pixel posities
en ik reken dus ook met pixel posites. vandaar de cast naar een int.