Inductive definitions for discrete plane geometry. Jean Duprat* Laurent Vuillon** *Lip, ENS-Lyon **Lama, Université de Savoie.
The discrete plane like Z 2 . Each pixel is defined by its coordinates (x,y). A line is defined by an execution of Bresenham’s algorithm or by a Diophantin inequation 20 ≤ 5y-3x ≤ 24
Objectives and limitations. Intrinsic constructive inductive definitions. Now : strict first quadrant N *2 . only positive slope lines.
Directing vectors. u> Inductive definition : u > is a DV, v> if v > is a DV then N(v > ) is a DV, Nv> if v > is a DV then D(v > ) is a DV. Symmetry π : Dv> π (u > )= u > , π (N(v > ))=D( π (v > )), � v> π (D(v > ))=N( π (v > )).
Vectors. v > is a DV and α a strictly positive integer 1v> then α .v > is a vector. Over-notations : we identify v > and 1.v > , we note π ( α .v > ) the 3v> vector α .( π (v > )), we extend the constructors N and D by : N α v > = α Nv > , D α v > = α Dv > .
Coordinates of a vector. (1,1) The coordinates of the vector v > is the couple of (5,3) integers computed by : the coordinates of u > are (8,3) (1,1), if the coordinates of v > are (x,y) then (5,8) the coordinates of Nv > are (x+y,y), the coordinates of Dv > are (x,x+y), the coordinates of α v > are (15,9) ( α x, α y).
Points. There is a bijection ε 1v> between vectors and points. ε : v > -> A. U= ε (u > ). A
Transformations. h α : A -> B. if A = ε ( β . v > ) then B = ε (( αβ ) .v > ), (we note B= α A) 3A n : A -> B. dA if A = ε ( α .v > ) then B = ε ( α .N(v > )), (we note B=nA) pA d : A -> B. A nA if A = ε ( α .v > ) then B = ε ( α .D(v > )), (we note B=dA) p : A -> B. if A= ε (v > ) then B = ε ( π (v > )), (we note B=pA).
Canonical notation. For each point A, there exist a non null integer α , an dnddnnU integer m and two sequences of integers x 0 , x 1 , …, x m and y 0 , y 1 , …, y m which are not null when they exist except eventually x 0 and y m such that : ddnnU nddnnU A = n x 0 d y 0 n x 1 d y 1 K n x m d y m � U Example : U nnU A = dnd 2 n 2 U.
Similarities. Given v > a vector, the similarity of v > B=dndA changes A into B : if v > = α N x 0 D y 0 N x 1 D y 1 …N x m D y m u > then B= α n x 0 d y 0 n x 1 d y 1 …n x m d y m A . We note B = v > A. Example : A=dnnU A = dn 2 U, v > = dndu > , U B = v > A.
Coordinates. X : P -> nat Example : X(dnd 2 n 2 U) = X(U)=1, X(nd 2 n 2 U) = X(nA)=X(A)+X(pA), X(d 2 n 2 U) + X(n 2 d 2 U) = X(n 2 U) + X(nd 2 U) + X(dn 2 U) = X(dA)=X(A), X(nU) + X(dU) + X(d 2 U) + X(n 2 U) + X(n 2 U) X( α A)= α X(A). = X(U) + X(U) + X(U) + X(dU) + X(nU) + Y : P -> nat X(dU) + X(nU) + X(dU) = Y(U)=1, 3 + X(U) + X(U) + X(U) + X(U) + X(U) + X(U) + X(U) = Y(nA)=Y(A), 10. Y(dA)=Y(A)+Y(pA), Y(dnd 2 n 2 U) = Y( α A)= α Y(A). Y(nd 2 n 2 U) + Y(dn 2 d 2 U) = Y(d 2 n 2 U) + Y(n 2 d 2 U) + Y(d 2 n 2 U) = Fast computation : Y(n 2 U) + 2Y(d 2 U) + Y(d 2 U) + Y(n 2 U) + X(n α A)=X(A)+ α X(pA). 2Y(d 2 U) = 2Y(U) + 5(Y(U) + 2Y(U)) = Y(d α A)=Y(A)+ α Y(pA). 2 + 15 = 17.
Generators. We call generators the sets of points : Gv7 Gdd Gdd = { α U}, Gh α = {A | Y(A) = α }, Gv α = {A | X(A) = α }. Gh4 Examples : Gdd, Gh4, Gv7.
Lines. A line L is defined by a L directing vector v > and a generator G : if G = Gdd then L = {v > A | A ∈ Gdd} noted <v > ,Gdd>, if G = Gh α then L = {v > dA | A ∈ Gh α } noted <v > ,Gh α >, if G = Gv α then Gh4 L = {v > nA | A ∈ Gv α } noted <v > ,Gv α >. Example : L = <DNu > , Gh4>.
Bundle of lines. A bundle of lines is built with lines having the same directing vector v > and consecutives generators : {<v > ,Gh α } i ≤ α ≤ j , {<v > ,Gdd} ∪ {<v > ,Gh α } 0 ≤ α ≤ j , {<v > ,Gv α } 0 ≤ α ≤ j ∪ {<v > ,Gdd} ∪ {<v > ,Gh β } 0 ≤ β ≤ j , {<v > ,Gv α } 0 ≤ α ≤ j ∪ {<v > ,Gdd}, {<v > ,Gv α } i ≤ α ≤ j . The width of a bundle is the Gh4 number of generators. Gh3 Example : Gh2 {<DNu > , Gh α } 2 ≤ α ≤ 4 .
Bresenham drawing. A bundle of directing vector v > is connected by vertex if the width is greater or equal to max(x,y) where (x,y) are the coordinates of v > , connected by edge if the width is greater or equal to x+y where (x,y) are the coordinates of v > . Example : {<DNu > ,Gdd} ∪ {<DNu > , Gh α } 1 ≤ α ≤ 4 .
Incidence check. A point A belongs to a line L = L <v > ,G> if there exists a point B such A=dndB if G = Gdd then A = v > B and B = α U, if G=Gh α then A = v > dB and Y(B) = α , if G = Gv α then A = v > nB and X(C) = α . Example : A = dnd 2 n 2 U belongs to Gh4 B=dnnU L = <DNu > ,Gh4> since A = DNu > dB with B = dn 2 U.
Incidences. There are a finite Example : number of lines A=dnd 2 n 2 U belongs to : passing through a point L1=<u > , Gh7>, A. L2=<Du > , Gv3>, A = n x 0 d y 0 n x 1 d y 1 K n x m d y m � U L3=<DNu > , Gh4>, The directing vectors of L4=<DNDu > , Gh1>, these lines are L5=<DND 2 u > , Gv2>, deduced by the L6=<DND 2 Nu > , Gv1>, beginning word of the L7=<DND 2 N 2 u > , Gdd>. canonical representation of A.
Example of incidences. L L L Gv3 A=dB A=dnB A=dndB B=nddnnU B=ddnnU Gh7 Gh4 B=dnnU L L L L Gv1 Gv2 A=dnddB A=dnddnB A=dnddnnB A=dndB Gdd Gh1 B=nnU B=nU B=U B=U
Future work. How to extend such a study to the whole plane ? How to extend the definition of lines to the negative slope lines ? (and to null or infinite slope lines ?) Does it exists a better definition of generators ? With such a representation of vectors, does it exist a suitable algorithm to implement the addition of vectors ?
Recommend
More recommend