closest_approach_2D: THEORY %---------------------------------------------------------------------------- % We compute the closest point of approach (CPA) between two % points that are dynamically moving in a straight line. This is % an important computation in collision detection. For example, % to calculate the time and distance of two planes (represented as % line vectors) when they are at their closest point. % % We use time-parametric equations to represent the paths of the % two planes: % % p(t) = p0 + t*u q(t) = q0 + t*v % % Distance between D(t) is given by: % % D(t) = (u-v)*(u-v) t^2 + 2 * w0 * (u-v) t + w0*w0 % % where w0 = p0 - q0. This is a quadratic equation with % % a = (u-v)*(u-v) AND % b = 2*w0*(u-v) AND % c = w0*w0 AND % % which has a minimum at -b/2a. % % Minimum separation occurs at: % % t_cpa = -w0*(u-v)/sq(norm(u-v)) % % where w0 = p0 - q0 % % dist(L1,L2,t): MACRO nnreal = dist(loc(L1)(t),loc(L2)(t)) % dist(L1,L2): nnreal = dist(L1,L2,t_cpa(L1,L2)) % % We also introduce the following convenient predicates % % divergent?(p0,q0,u,v): bool = % FORALL (t: posreal): dist(p0,q0) < dist(p0+t*u,q0+t*v) % % dot_prop?(p0,q0,u,v): bool = (p0-q0)*(u-v) >= 0 % % and we prove there equivalence when u /= v. See "dot_prop_divergent". % % See % http://geometryalgorithms.com/Archive/algorithm_0106/algorithm_0106.htm % % for a very nice discussion. % % Author: Ricky Butler NASA Langley Research Center % %---------------------------------------------------------------------------- BEGIN
IMPORTING distance_2D,
reals@quad_minmax
t,t0,t1,t2 : VAR real
a,b,c : VAR real
p0,q0,u,v,w0,wt : VAR Vect2
% ----- time of closest point of approach --------
time_closest(p0,q0,u,v): real = IF norm(u-v) = 0 THEN% parallel, eq speed
0 ELSE
-((p0-q0)*(u-v))/sq(norm(u-v)) ENDIF
time_closest_lem: LEMMA norm(u-v) /= 0 AND
a = (u-v)*(u-v) AND
b = 2*(p0-q0)*(u-v) IMPLIES
time_closest(p0,q0,u,v) = -b/(2*a)
% ----- distance at time of closest point of approach
dist_closest(p0,q0,u,v): MACRO nnreal = LET t_cpa=time_closest(p0,q0,u,v) IN
dist(p0+t_cpa*u, q0+t_cpa*v)
% ----- distance at closest point is indeed a minimum -------
t_cpa: VAR real
d_cpa: VAR nnreal
cpa_prep_mono: LEMMA w0 = p0 - q0 AND
a = (u-v)*(u-v) AND
b = 2*w0*(u-v) AND
c = w0*w0 AND
t_cpa = time_closest(p0,q0,u,v) AND
norm(u-v) /= 0 AND
t_cpa <= t1 AND t1 < t2 IMPLIES LET D2 = (LAMBDA t: sq_dist(p0+t*u,q0+t*v)) IN
D2(t1) < D2(t2)
% ------ Intersection of dynamic line and a circle ----- % % See reals@circles_and_lines for similar lemmas
s: VAR Vect2
% The first lemma states that if t1 and t2 are the intersection % points with a circle of radius D, then the distance for all times % between t1 and t2 is less than D
t1_lt_t2_lt_D : LEMMAFORALL (t,t1,t2,D:real):
sqv(v) /= 0 AND
t1 < t2 AND
sqv(s+t1*v) = D AND
sqv(s+t2*v) = D AND
t1 < t AND t < t2 IMPLIES
sqv(s+t*v) < D
% The second lemma is the reciprocal of the previous lemma. It states that % if the distance at time t is less than D, then t is between t1 and % t2.
lt_D_t1_lt_t2 : LEMMAFORALL (t,t1,t2,D:real):
sqv(v) /= 0 AND
t1 < t2 AND
sqv(s+t1*v) = D AND
sqv(s+t2*v) = D AND
sqv(s+t*v) < D IMPLIES
t1 < t AND t < t2
% The third lemma states that if there are no intersection points with % a circle of radius D then the distance at any time is greater than D.
discr_le_0 : LEMMAFORALL (t,D:real):
sqv(v) /= 0 AND
discr(sqv(v),2*(s*v),sqv(s) - D) <= 0 IMPLIES
sqv(s+t*v) >= D
gt_D_t1_lt_t2 : LEMMAFORALL (t,t1,t2,t3,D:real):
sqv(v) /= 0 AND
t1 <= t AND t < t2 AND t2 < t3 AND
sqv(s+t1*v) > D AND
sqv(s+t2*v) = D AND
sqv(s+t3*v) < D IMPLIES
sqv(s+t*v) > D
cpa_sqvs_lt: LEMMA 0 <= t1 AND t1 < t2 AND s*v > 0 IMPLIES
sqv(s+t1*v) < sqv(s+t2*v)
END closest_approach_2D
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.11Bemerkung:
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.