Delaunay Triangulations

Information about Delaunay Triangulations

Published on June 15, 2007

Author: funnyside

Source: authorstream.com

Content

Delaunay Triangulations:  Delaunay Triangulations Presented by Glenn Eguchi 6.838 Computational Geometry October 11, 2001 Motivation: Terrains:  Motivation: Terrains Set of data points A  R2 Height ƒ(p) defined at each point p in A How can we most naturally approximate height of points not in A? Option: Discretize:  Option: Discretize Let ƒ(p) = height of nearest point for points not in A Does not look natural Better Option: Triangulation:  Better Option: Triangulation Determine a triangulation of A in R2, then raise points to desired height triangulation: planar subdivision whose bounded faces are triangles with vertices from A Triangulation: Formal Definition:  Triangulation: Formal Definition maximal planar subdivision: a subdivision S such that no edge connecting two vertices can be added to S without destroying its planarity triangulation of set of points P: a maximal planar subdivision whose vertices are elements of P Triangulation is made of triangles:  Triangulation is made of triangles Outer polygon must be convex hull Internal faces must be triangles, otherwise they could be triangulated further Triangulation Details:  Triangulation Details For P consisting of n points, all triangulations contain 2n-2-k triangles, 3n-3-k edges n = number of points in P k = number of points on convex hull of P Terrain Problem, Revisited:  Terrain Problem, Revisited Some triangulations are 'better' than others Avoid skinny triangles, i.e. maximize minimum angle of triangulation Angle Optimal Triangulations:  Angle Optimal Triangulations Create angle vector of the sorted angles of triangulation T, (1, 2, 3, … 3m) = A(T) with 1 being the smallest angle A(T) is larger than A(T’) iff there exists an i such that j = ’j for all j andlt; i and i andgt; ’i Best triangulation is triangulation that is angle optimal, i.e. has the largest angle vector. Maximizes minimum angle. Angle Optimal Triangulations:  Angle Optimal Triangulations Consider two adjacent triangles of T: If the two triangles form a convex quadrilateral, we could have an alternative triangulation by performing an edge flip on their shared edge. Illegal Edges:  Edge e is illegal if: Only difference between T containing e and T’ with e flipped are the six angles of the quadrilateral. Illegal Edges Illegal Triangulations:  Illegal Triangulations If triangulation T contains an illegal edge e, we can make A(T) larger by flipping e. In this case, T is an illegal triangulation. Thale’s Theorem:  Thale’s Theorem We can use Thale’s Theorem to test if an edge is legal without calculating angles Let C be a circle, l a line intersecting C in points a and b and p, q, r, and s points lying on the same side of l. Suppose that p and q lie on C, that r lies inside C, and that s lies outside C. Then: Testing for Illegal Edges:  Testing for Illegal Edges The edge pipj is illegal iff pl lies inside C. If pi, pj, pk, pl form a convex quadrilateral and do not lie on a common circle, exactly one of pipj and pkpl is an illegal edge. Computing Legal Triangulations:  Computing Legal Triangulations 1. Compute a triangulation of input points P. 2. Flip illegal edges of this triangulation until all edges are legal. Algorithm terminates because there is a finite number of triangulations. Too slow to be interesting… Sidetrack: Delaunay Graphs:  Sidetrack: Delaunay Graphs Before we can understand an interesting solution to the terrain problem, we need to understand Delaunay Graphs. Delaunay Graph of a set of points P is the dual graph of the Voronoi diagram of P Delaunay Graphs:  Delaunay Graphs To obtain DG(P): Calculate Vor(P) Place one vertex in each site of the Vor(P) Constructing Delaunay Graphs:  Constructing Delaunay Graphs If two sites si and sj share an edge (si and sj are adjacent), create an arc between vi and vj, the vertices located in sites si and sj Constructing Delaunay Graphs:  Constructing Delaunay Graphs Finally, straighten the arcs into line segments. The resultant graph is DG(P). Properties of Delaunay Graphs:  Properties of Delaunay Graphs No two edges cross; DG(P) is a planar graph. Proved using Theorem 7.4(ii). Largest empty circle property Delaunay Triangulations:  Delaunay Triangulations Some sets of more than 3 points of Delaunay graph may lie on the same circle. These points form empty convex polygons, which can be triangulated. Delaunay Triangulation is a triangulation obtained by adding 0 or more edges to the Delaunay Graph. Properties of Delaunay Triangles:  Properties of Delaunay Triangles From the properties of Voronoi Diagrams… Three points pi, pj, pk  P are vertices of the same face of the DG(P) iff the circle through pi, pj, pk contains no point of P on its interior. Properties of Delaunay Triangles:  Properties of Delaunay Triangles From the properties of Voronoi Diagrams… Two points pi, pj  P form an edge of DG(P) iff there is a closed disc C that contains pi and pj on its boundary and does not contain any other point of P. Properties of Delaunay Triangles:  Properties of Delaunay Triangles From the previous two properties… A triangulation T of P is a DT(P) iff the circumcircle of any triangle of T does not contain a point of P in its interior. Legal Triangulations, revisited:  Legal Triangulations, revisited A triangulation T of P is legal iff T is a DT(P). DT  Legal: Empty circle property and Thale’s Theorem implies that all DT are legal Legal  DT: Proved on p. 190 from the definitions and via contradiction. DT and Angle Optimal:  DT and Angle Optimal The angle optimal triangulation is a DT. Why? If P is in general position, DT(P) is unique and thus, is angle optimal. What if multiple DT exist for P? Not all DT are angle optimal. By Thale’s Theorem, the minimum angle of each of the DT is the same. Thus, all the DT are equally 'good' for the terrain problem. All DT maximize the minimum angle. Terrain Problem, revisited:  Terrain Problem, revisited Therefore, the problem of finding a triangulation that maximizes the minimum angle is reduced to the problem of finding a Delaunay Triangulation. So how do we find the Delaunay Triangulation? How do we compute DT(P)?:  How do we compute DT(P)? We could compute Vor(P) then dualize into DT(P). Instead, we will compute DT(P) using a randomized incremental method. Algorithm Overview:  Algorithm Overview 1. Initialize triangulation T with a 'big enough' helper bounding triangle that contains all points P. 2. Randomly choose a point pr from P. 3. Find the triangle  that pr lies in. 4. Subdivide  into smaller triangles that have pr as a vertex. 5. Flip edges until all edges are legal. 6. Repeat steps 2-5 until all points have been added to T. Let’s skip steps 1, 2, and 3 for now… Triangle Subdivision: Case 1 of 2:  Triangle Subdivision: Case 1 of 2 Assuming we have already found the triangle that pr lives in, subdivide  into smaller triangles that have pr as a vertex. Two possible cases: 1) pr lies in the interior of  Triangle Subdivision: Case 2 of 2:  Triangle Subdivision: Case 2 of 2 2) pr falls on an edge between two adjacent triangles Which edges are illegal?:  Which edges are illegal? Before we subdivided, all of our edges were legal. After we add our new edges, some of the edges of T may now be illegal, but which ones? Outer Edges May Be Illegal:  Outer Edges May Be Illegal An edge can become illegal only if one of its incident triangles changed. Outer edges of the incident triangles {pjpk, pipk, pkpj} or {pipl, plpj, pjpk, pkpi} may have become illegal. New Edges are Legal:  New Edges are Legal Are the new edges (edges involving pr) legal? Consider any new edge prpl. Before adding prpl, pl was part of some triangle pipjpl Circumcircle C of pi, pj, and pl did not contain any other points of P in its interior New edges incident to pr are Legal:  New edges incident to pr are Legal If we shrink C, we can find a circle C’ that passes through prpl C’ contains no points in its interior. Therefore, prpl is legal. Any new edge incident pr is legal. Flip Illegal Edges:  Flip Illegal Edges Now that we know which edges have become illegal, we flip them. However, after the edges have been flipped, the edges incident to the new triangles may now be illegal. So we need to recursively flip edges… LegalizeEdge:  LegalizeEdge pr = point being inserted pipj = edge that may need to be flipped LEGALIZEEDGE(pr, pipj, T) if pipj is illegal then Let pipjpl be the triangle adjacent to prpipj along pipj Replace pipj with prpl LEGALIZEEDGE(pr, pipl, T) LEGALIZEEDGE(pr, plpj, T) Flipped edges are incident to pr:  Flipped edges are incident to pr Notice that when LEGALIZEEDGE flips edges, these new edges are incident to pr By the same logic as earlier, we can shrink the circumcircle of pipjpl to find a circle that passes through pr and pl. Thus, the new edges are legal. Bounding Triangle:  Bounding Triangle Remember, we skipped step 1 of our algorithm. Begin with a 'big enough' helper bounding triangle that contains all points. Let {p-3, p-2, p-1} be the vertices of our bounding triangle. 'Big enough' means that the triangle: contains all points of P in its interior. will not destroy edges between points in P. Considerations for Bounding Triangle:  Considerations for Bounding Triangle We could choose large values for p-1, p-2 and p-3, but that would require potentially huge coordinates. Instead, we’ll modify our test for illegal edges, to act as if we chose large values for bounding triangle. Bounding Triangle:  Bounding Triangle We’ll pretend the vertices of the bounding triangle are at: p-1 = (3M, 0) p-2 = (0, 3M) p-3 = (-3M, -3M) M = maximum absolute value of any coordinate of a point in P Modified Illegal Edge Test:  Modified Illegal Edge Test pipj is the edge being tested pk and pl are the other two vertices of the triangles incident to pipj Our illegal edge test falls into one of 4 cases. Illegal Edge Test, Case 1:  Illegal Edge Test, Case 1 Case 1) Indices i and j are both negative pipj is an edge of the bounding triangle pipj is legal, want to preserve edges of bounding triangle Illegal Edge Test, Case 2:  Illegal Edge Test, Case 2 Case 2) Indices i, j, k, and l are all positive. This is the normal case. pipj is illegal iff pl lies inside the circumcircle of pipjpk Illegal Edge Test, Case 3:  Illegal Edge Test, Case 3 Case 3) Exactly one of i, j, k, l is negative We don’t want our bounding triangle to destroy any Delaunay edges. If i or j is negative, pipj is illegal. Otherwise, pipj is legal. Illegal Edge Test, Case 4:  Illegal Edge Test, Case 4 Case 4) Exactly two of i, j, k, l are negative. k and l cannot both be negative (either pk or pl must be pr) i and j cannot both be negative One of i or j and one of k or l must be negative If negative index of i and j is smaller than negative index of k and l, pipj is legal. Otherwise pipj is illegal. Triangle Location Step:  Triangle Location Step Remember, we skipped step 3 of our algorithm. 3. Find the triangle T that pr lies in. Take an approach similar to Point Location approach. Maintain a point location structure D, a directed acyclic graph. Structure of D:  Structure of D Leaves of D correspond to the triangles of the current triangulation. Maintain cross pointers between leaves of D and the triangulation. Begin with a single leaf, the bounding triangle p-1p-2p-3 Subdivision and D:  Subdivision and D Whenever we split a triangle 1 into smaller triangles a and b (and possibly c), add the smaller triangles to D as leaves of 1 Subdivision and D:  Subdivision and D A B C A B C Edge Flips and D:  Edge Flips and D Whenever we perform an edge flip, create leaves for the two new triangles. Attach the new triangles as leaves of the two triangles replaced during the edge flip. Edge Flips and D:  Edge Flips and D C C C Searching D:  Searching D pr = point we are searching with Let the current node be the root node of D. Look at child nodes of current node. Check which triangle pr lies in. Let current node = child node that contains pr Repeat steps 2 and 3 until we reach a leaf node. Searching D:  Searching D Each node has at most 3 children. Each node in path represents a triangle in D that contains pr Therefore, takes O(number of triangles in D that contain pr) Properties of D:  Properties of D Notice that the: Leaves of D correspond to the triangles of the current triangulation. Internal nodes correspond to destroyed triangles, triangles that were in an earlier stage of the triangulation but are not present in the current triangulation. Algorithm Overview:  Algorithm Overview Initialize triangulation T with helper bounding triangle. Initialize D. Randomly choose a point pr from P. Find the triangle  that pr lies in using D. Subdivide  into smaller triangles that have pr as a vertex. Update D accordingly. Call LEGALIZEEDGE on all possibly illegal edges, using the modified test for illegal edges. Update D accordingly. Repeat steps 2-5 until all points have been added to T. Analysis Goals:  Analysis Goals Expected running time of algorithm is: O(n log n) Expected storage required is: O(n) First, some notation…:  First, some notation… Pr = {p1, p2, …, pr} Points added by iteration r  = {p-3, p-2, p-1} Vertices of bounding triangle DGr = DG(  Pr) Delaunay graph as of iteration r Sidetrack: Expected Number of s:  Sidetrack: Expected Number of s It will be useful later to know the expected number of triangles created by our algorithm… Lemma 9.11 Expected number of triangles created by DELAUNAYTRIANGULATION is 9n+1. In initialization, we create 1 triangle (bounding triangle). Expected Number of Triangles:  Expected Number of Triangles In iteration r where we add pr, in the subdivision step, we create at most 4 new triangles. Each new triangle creates one new edge incident to pr each edge flipped in LEGALIZEEDGE creates two new triangles and one new edge incident to pr Expected Number of Triangles:  Expected Number of Triangles Let k = number of edges incident to pr after insertion of pr, the degree of pr We have created at most 2(k-3)+3 triangles. -3 and +3 are to account for the triangles created in the subdivision step The problem is now to find the expected degree of pr Expected Degree of pr:  Expected Degree of pr Use backward analysis: Fix Pr, let pr be a random element of Pr DGr has 3(r+3)-6 edges Total degree of Pr  2[3(r+3)-9] = 6r E[degree of random element of Pr]  6 Triangles created at step r:  Triangles created at step r Using the expected degree of pr, we can find the expected number of triangles created in step r. deg(pr, DGr) = degree of pr in DGr Expected Number of Triangles:  Expected Number of Triangles Now we can bound the number of triangles:  1 initial  + s created at step 1 + s created at step 2 + … + s created at step n  1 + 9n Expected number of triangles created is 9n+1. Storage Requirement:  Storage Requirement D has one node per triangle created 9n+1 triangles created O(n) expected storage Expected Running Time:  Expected Running Time Let’s examine each step… Begin with a 'big enough' helper bounding triangle that contains all points. O(1) time, executed once = O(1) Randomly choose a point pr from P. O(1) time, executed n times = O(n) Find the triangle  that pr lies in. Skip step 3 for now… Expected Running Time:  Expected Running Time 4. Subdivide  into smaller triangles that have pr as a vertex. O(1) time executed n times = O(n) 5. Flip edges until all edges are legal. In total, expected to execute a total number of times proportional to number of triangles created = O(n) Thus, total running time without point location step is O(n). Point Location Step:  Point Location Step Time to locate point pr is O(number of nodes of D we visit) + O(1) for current triangle Number of nodes of D we visit = number of destroyed triangles that contain pr A triangle is destroyed by pr if its circumcircle contains pr We can charge each triangle visit to a Delaunay triangle whose circumcircle contains pr Point Location Step:  Point Location Step K() = subset of points in P that lie in the circumcircle of  When pr  K(), charge to . Since we are iterating through P, each point in K() can be charged at most once. Total time for point location: Point Location Step:  Point Location Step We want to have O(n log n) time, therefore we want to show that: Point Location Step:  Point Location Step Introduce some notation… Tr = set of triangles of DG(  Pr) Tr \ Tr-1 triangles created in stage r Rewrite our sum as: Point Location Step:  Point Location Step More notation… k(Pr, q) = number of triangles   Tr such that q is contained in  k(Pr, q, pr) = number of triangles   Tr such that q is contained in  and pr is incident to  Rewrite our sum as: Point Location Step:  Point Location Step Find the E[k(Pr, q, pr)] then sum later… Fix Pr, so k(Pr, q, pr) depends only on pr. Probability that pr is incident to a triangle is 3/r Thus: Point Location Step:  Point Location Step Using: We can rewrite our sum as: Point Location Step:  Point Location Step Now find E[k(Pr, pr+1)]… Any of the remaining n-r points is equally likely to appear as pr+1 So: Point Location Step:  Point Location Step Using: We can rewrite our sum as: Point Location Step:  Point Location Step Find k(Pr, pr+1) number of triangles of Tr that contain pr+1 these are the triangles that will be destroyed when pr+1 is inserted; Tr \ Tr+1 Rewrite our sum as: Point Location Step:  Point Location Step Remember, number of triangles in triangulation of n points with k points on convex hull is 2n-2-k Tm has 2(m+3)-2-3=2m+1 Tm+1 has two more triangles than Tm Thus, card(Tr \ Tr+1) = card(triangles destroyed by pr) = card(triangles created by pr) – 2 = card(Tr+1 \ Tr) - 2 We can rewrite our sum as: Point Location Step:  Point Location Step Remember we fixed Pr earlier… Consider all Pr by averaging over both sides of the inequality, but the inequality comes out identical. E[number of triangles created by pr] = E[number of edges incident to pr+1 in Tr+1] = 6 Therefore: Analysis Complete:  Analysis Complete If we sum this over all r, we have shown that: And thus, the algorithm runs in O(n log n) time.

Related presentations


Other presentations created by funnyside

HCM Luzern
18. 06. 2007
0 views

HCM Luzern

lecture12
12. 10. 2007
0 views

lecture12

basketball
01. 08. 2007
0 views

basketball

Atacama Large Millimeter Array
15. 06. 2007
0 views

Atacama Large Millimeter Array

gen mtgmar07 slides
18. 06. 2007
0 views

gen mtgmar07 slides

THAKKAR ANJALI artificial blood
16. 10. 2007
0 views

THAKKAR ANJALI artificial blood

20030815 RepICFA HN
27. 09. 2007
0 views

20030815 RepICFA HN

Owen
03. 10. 2007
0 views

Owen

14BBlackHoles
07. 10. 2007
0 views

14BBlackHoles

Noda06
09. 10. 2007
0 views

Noda06

reptile
10. 10. 2007
0 views

reptile

leskov
15. 10. 2007
0 views

leskov

461
17. 10. 2007
0 views

461

Europe Presentation
19. 10. 2007
0 views

Europe Presentation

RadOnc
22. 10. 2007
0 views

RadOnc

schnittsysteme
23. 10. 2007
0 views

schnittsysteme

ch1 10 part2
23. 10. 2007
0 views

ch1 10 part2

firma end Presentation
19. 10. 2007
0 views

firma end Presentation

sta291 5c
29. 10. 2007
0 views

sta291 5c

ACM India Studies 2005
26. 11. 2007
0 views

ACM India Studies 2005

Mirabel
01. 12. 2007
0 views

Mirabel

ghana
10. 12. 2007
0 views

ghana

DanishCitationEventJB final
15. 10. 2007
0 views

DanishCitationEventJB final

aleynikov
26. 10. 2007
0 views

aleynikov

ShortageChicago Seago 2
29. 10. 2007
0 views

ShortageChicago Seago 2

Daylight Saving Time
07. 11. 2007
0 views

Daylight Saving Time

unity
21. 08. 2007
0 views

unity

Fad Diets
21. 08. 2007
0 views

Fad Diets

NACADA Combined Workshop
21. 08. 2007
0 views

NACADA Combined Workshop

TeraGrid SC06 1
22. 10. 2007
0 views

TeraGrid SC06 1

plane parallel 2 1
24. 10. 2007
0 views

plane parallel 2 1

cronologia storia contemporanea
13. 11. 2007
0 views

cronologia storia contemporanea

IDitarod
16. 11. 2007
0 views

IDitarod

Axiome Von Neumann Morgenstern
19. 11. 2007
0 views

Axiome Von Neumann Morgenstern

Dog bite sepsis
19. 11. 2007
0 views

Dog bite sepsis

Girish
21. 11. 2007
0 views

Girish

EcoValidity
17. 12. 2007
0 views

EcoValidity

matthew
29. 12. 2007
0 views

matthew

Cyatheaceae Classification
02. 01. 2008
0 views

Cyatheaceae Classification

RFF Shinnecock
03. 01. 2008
0 views

RFF Shinnecock

AustralianPoetry
03. 01. 2008
0 views

AustralianPoetry

dbl dutch
22. 11. 2007
0 views

dbl dutch

Lecture10 overheads
21. 08. 2007
0 views

Lecture10 overheads

Deborah Russell Presentation
14. 11. 2007
0 views

Deborah Russell Presentation

AAPT v3
01. 08. 2007
0 views

AAPT v3

EScannapieco
15. 11. 2007
0 views

EScannapieco

Successful  Case  Studies
29. 09. 2007
0 views

Successful Case Studies

Interv Hajji
23. 10. 2007
0 views

Interv Hajji

khelif edson rep
09. 10. 2007
0 views

khelif edson rep

aadcrocodile
11. 10. 2007
0 views

aadcrocodile

matricole
16. 10. 2007
0 views

matricole

the three little pigs
14. 02. 2008
0 views

the three little pigs

Exon HKSB
30. 10. 2007
0 views

Exon HKSB

June06SPCCUpdateJVan voorhis
07. 11. 2007
0 views

June06SPCCUpdateJVan voorhis

cultural impact hispanics tn
24. 02. 2008
0 views

cultural impact hispanics tn

SE 05 Punctuation I
29. 02. 2008
0 views

SE 05 Punctuation I

GaryCorbett e
04. 03. 2008
0 views

GaryCorbett e

Radiation Hazards
06. 03. 2008
0 views

Radiation Hazards

Portoroz
04. 10. 2007
0 views

Portoroz

jdean c10
25. 03. 2008
0 views

jdean c10

SoS
25. 03. 2008
0 views

SoS

MVestergaard SantaFe06
29. 11. 2007
0 views

MVestergaard SantaFe06

PowerPointTour
02. 11. 2007
0 views

PowerPointTour

tal daly
10. 04. 2008
0 views

tal daly

matz011
16. 04. 2008
0 views

matz011

installaware faq
17. 04. 2008
0 views

installaware faq

ATMSELong
18. 04. 2008
0 views

ATMSELong

36329938
22. 04. 2008
0 views

36329938

ITCan
10. 03. 2008
0 views

ITCan

kejian4
11. 10. 2007
0 views

kejian4

061213 dialog north korea petrov
11. 10. 2007
0 views

061213 dialog north korea petrov

Session6 Adm Wilcocks
07. 11. 2007
0 views

Session6 Adm Wilcocks

high technology surgery
30. 04. 2008
0 views

high technology surgery

Robot Convoy final presentation
07. 01. 2008
0 views

Robot Convoy final presentation

harry truman
18. 06. 2007
0 views

harry truman

goldrush
18. 06. 2007
0 views

goldrush

GMK
18. 06. 2007
0 views

GMK

gatech
18. 06. 2007
0 views

gatech

fusion be
18. 06. 2007
0 views

fusion be

Fun Facts updated 3 05
18. 06. 2007
0 views

Fun Facts updated 3 05

Geomatic AAU 07032007 forkortet
18. 06. 2007
0 views

Geomatic AAU 07032007 forkortet

General Spring Intro
18. 06. 2007
0 views

General Spring Intro

intervento Ambrosi Legge125
18. 06. 2007
0 views

intervento Ambrosi Legge125

insostegno
18. 06. 2007
0 views

insostegno

Inhalts angabe
18. 06. 2007
0 views

Inhalts angabe

Implant Simulations
18. 06. 2007
0 views

Implant Simulations

implantate berlin
18. 06. 2007
0 views

implantate berlin

Imber stud
18. 06. 2007
0 views

Imber stud

hsm bend2
18. 06. 2007
0 views

hsm bend2

history mat storia dei diritti
18. 06. 2007
0 views

history mat storia dei diritti

headquarters structure
18. 06. 2007
0 views

headquarters structure

Department Of Conservation
23. 10. 2007
0 views

Department Of Conservation

Hippo
18. 07. 2008
0 views

Hippo

pa3 disare ppt
28. 09. 2007
0 views

pa3 disare ppt

Sudan Polio Update 03 05
21. 10. 2007
0 views

Sudan Polio Update 03 05

bradford ancer
21. 08. 2007
0 views

bradford ancer

Bayesian analysis and problems
15. 06. 2007
0 views

Bayesian analysis and problems

Biofuels - Think Big
15. 06. 2007
0 views

Biofuels - Think Big

AVO  - Virtual Observatory
15. 06. 2007
0 views

AVO - Virtual Observatory

PHOBOS Collaboration
15. 06. 2007
0 views

PHOBOS Collaboration

gennaipm
18. 06. 2007
0 views

gennaipm

sigcse2003
07. 12. 2007
0 views

sigcse2003

Introductionto Kyrgyzstan
26. 11. 2007
0 views

Introductionto Kyrgyzstan

HIT SAN
18. 06. 2007
0 views

HIT SAN

Metzenbaum Shelley
23. 10. 2007
0 views

Metzenbaum Shelley

ppt CHAP018
24. 02. 2008
0 views

ppt CHAP018

lesson3 warm up
07. 04. 2008
0 views

lesson3 warm up

shelving with lcc
19. 02. 2008
0 views

shelving with lcc

25ConnectionsV5 p2
18. 10. 2007
0 views

25ConnectionsV5 p2

2506043
15. 11. 2007
0 views

2506043

TravelChapter7 3
27. 03. 2008
0 views

TravelChapter7 3

french rfp
18. 06. 2007
0 views

french rfp

BEFxii Coronado
09. 04. 2008
0 views

BEFxii Coronado

spectrumastrotalk
28. 11. 2007
0 views

spectrumastrotalk

metadata frames
05. 10. 2007
0 views

metadata frames

Dancefinal
27. 11. 2007
0 views

Dancefinal