diff --git a/HW2/1_1_1.png b/HW2/1_1_1.png new file mode 100644 index 0000000..8efed33 Binary files /dev/null and b/HW2/1_1_1.png differ diff --git a/HW2/1_2_1.png b/HW2/1_2_1.png new file mode 100644 index 0000000..4436dba Binary files /dev/null and b/HW2/1_2_1.png differ diff --git a/HW2/2_2_2.png b/HW2/2_2_2.png new file mode 100644 index 0000000..5a632e9 Binary files /dev/null and b/HW2/2_2_2.png differ diff --git a/HW2/HW2.html b/HW2/HW2.html new file mode 100644 index 0000000..f16a694 --- /dev/null +++ b/HW2/HW2.html @@ -0,0 +1,1029 @@ + + + + + HW2 + + + + + + + + + + +

HW2

+

Problem 1

+ +

Problem 2

+ + + + + + \ No newline at end of file diff --git a/HW2/HW2.md b/HW2/HW2.md new file mode 100644 index 0000000..90cd21f --- /dev/null +++ b/HW2/HW2.md @@ -0,0 +1,72 @@ +# HW2 +## Problem 1 + - 1. + Points: + | index | position | + | ----- | -------- | + | 0 | (3, 1) | + | 1 | (4, 4) | + | 2 | (5, -1) | + | 3 | (2, -1) | + | 4 | (2, 2) | + | 5 | (2, 1) | + | 6 | (4, -1) | + | 7 | (6, 1) | + | 8 | (8, 1) | + | 9 | (8, 5) | + | 10 | (7, 4) | + | 11 | (3, 3) | + + Afer sorting: + | index | position | deleted | + | ----- | -------- | ------- | + | 2 | (5, -1) | False | + | 8 | (8, 1) | False | + | 7 | (6, 1) | True | + | 9 | (8, 5) | False | + | 10 | (7, 4) | False | + | 1 | (4, 4) | False | + | 11 | (3, 3) | False | + | 0 | (3, 1) | True | + | 4 | (2, 2) | False | + | 5 | (2, 1) | False | + | 6 | (4, -1) | True | + | 3 | (2, -1) | False | + + Stack history: + | i | stack | + | --- | ----------- | + | 2 | 8,2 | + | 3 | 9,8,2 | + | 4 | 10,9,8,2 | + | 4 | 9,8,2 | + | 5 | 1,9,8,2 | + | 6 | 11,1,9,8,2 | + | 6 | 1,9,8,2 | + | 7 | 4,1,9,8,2 | + | 8 | 5,4,1,9,8,2 | + | 8 | 4,1,9,8,2 | + | 9 | 3,4,1,9,8,2 | + + image: + ![1_1_1](1_1_1.png) +- 2. + - 1. Because the stack only iterate through points once and exactly once, one point either push in or push in then pop out which take constant time k. So the total time is k*n which is O(n). + - 2. Consider a square ABDC, $p_0$ and $p_1$ is A and B. Then we go to C and push it. Then D, however B-C-D makes a right turn so we pop C then push D. Then we form a convex polygon with points A,B,D, but C is not inside the polygon. + ![1_2_1](1_2_1.png) + +## Problem 2 + - 1. + - QuickHull(p9 , p3 , {p0 , p1, p2 , p4, p5 , p6, p7 , p8, p10 , p 11, p12 }) + - QuickHull(p9 , p5 , {p4 , p11, p8 , p10}) + - QuickHull(p9 , p11 , {p4}) + - QuickHull(p11 , p5 , {p10}) + - QuickHull(p5 , p3 , {p6 , p7, p1}) + - QuickHull(p7 , p3 , {p1}) + - 2. + - 1. Correct, this is basically the same as Graham scan. + - 2. Wrong, counter example, c is the smallese angle but c is not a part of convex hull. + ![2_2_2](2_2_2.png) + - 3. Correct, base on Akl–Toussaint heuristic, for a set of points, the one with the highest y coordinate must be a part of the convex hull. + - 4. Correct, this is a Ellipse with same focuses but different axis. The one with longer axis must contain the one with shorter axis but not vise versa. Thus, the point with highest sum must be a part of convex hull. + - 5. Wrong, same graph as question 2, C is the one with minimal distance sum however it is not a part of convex hull. \ No newline at end of file diff --git a/HW2/HW2.pdf b/HW2/HW2.pdf new file mode 100644 index 0000000..3510a6f Binary files /dev/null and b/HW2/HW2.pdf differ diff --git a/HW2/hw2-graham-scan.ipe b/HW2/hw2-graham-scan.ipe new file mode 100644 index 0000000..5d68b9f --- /dev/null +++ b/HW2/hw2-graham-scan.ipe @@ -0,0 +1,368 @@ + + + + + + + +0 0 m +-1 0.333 l +-1 -0.333 l +h + + + + +0 0 m +-1 0.333 l +-1 -0.333 l +h + + + + +0 0 m +-1 0.333 l +-0.8 0 l +-1 -0.333 l +h + + + + +0 0 m +-1 0.333 l +-0.8 0 l +-1 -0.333 l +h + + + + +0.6 0 0 0.6 0 0 e +0.4 0 0 0.4 0 0 e + + + + +0.6 0 0 0.6 0 0 e + + + + + +0.5 0 0 0.5 0 0 e + + +0.6 0 0 0.6 0 0 e +0.4 0 0 0.4 0 0 e + + + + + +-0.6 -0.6 m +0.6 -0.6 l +0.6 0.6 l +-0.6 0.6 l +h +-0.4 -0.4 m +0.4 -0.4 l +0.4 0.4 l +-0.4 0.4 l +h + + + + +-0.6 -0.6 m +0.6 -0.6 l +0.6 0.6 l +-0.6 0.6 l +h + + + + + +-0.5 -0.5 m +0.5 -0.5 l +0.5 0.5 l +-0.5 0.5 l +h + + +-0.6 -0.6 m +0.6 -0.6 l +0.6 0.6 l +-0.6 0.6 l +h +-0.4 -0.4 m +0.4 -0.4 l +0.4 0.4 l +-0.4 0.4 l +h + + + + + + +-0.43 -0.57 m +0.57 0.43 l +0.43 0.57 l +-0.57 -0.43 l +h + + +-0.43 0.57 m +0.57 -0.43 l +0.43 -0.57 l +-0.57 0.43 l +h + + + + + +0 0 m +-1 0.333 l +-1 -0.333 l +h + + + + +0 0 m +-1 0.333 l +-0.8 0 l +-1 -0.333 l +h + + + + +0 0 m +-1 0.333 l +-0.8 0 l +-1 -0.333 l +h + + + + +-1 0.333 m +0 0 l +-1 -0.333 l + + + + +0 0 m +-1 0.333 l +-1 -0.333 l +h +-1 0 m +-2 0.333 l +-2 -0.333 l +h + + + + +0 0 m +-1 0.333 l +-1 -0.333 l +h +-1 0 m +-2 0.333 l +-2 -0.333 l +h + + + + +0.5 0 m +-0.5 0.333 l +-0.5 -0.333 l +h + + + + +0.5 0 m +-0.5 0.333 l +-0.5 -0.333 l +h + + + + +0.5 0 m +-0.5 0.333 l +-0.3 0 l +-0.5 -0.333 l +h + + + + +0.5 0 m +-0.5 0.333 l +-0.3 0 l +-0.5 -0.333 l +h + + + + +1 0 m +0 0.333 l +0 -0.333 l +h +0 0 m +-1 0.333 l +-1 -0.333 l +h + + + + +1 0 m +0 0.333 l +0 -0.333 l +h +0 0 m +-1 0.333 l +-1 -0.333 l +h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +0 + +64 256 m +576 256 l + + +192 192 m +192 576 l + +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 + +384 192 m +576 320 l +576 576 l +320 512 l +192 384 l +192 192 l +384 192 l +384 192 l +h + +A +B +C +D + +256 768 m +128 640 l + + +240 656 m +256 768 l + + +240 656 m +144 752 l + + +128 640 m +240 656 l + + + diff --git a/HW2/hw2-quickhull.ipe b/HW2/hw2-quickhull.ipe new file mode 100644 index 0000000..0f03933 --- /dev/null +++ b/HW2/hw2-quickhull.ipe @@ -0,0 +1,284 @@ + + + + + + + +0 0 m +-1 0.333 l +-1 -0.333 l +h + + + + +0 0 m +-1 0.333 l +-1 -0.333 l +h + + + + +0 0 m +-1 0.333 l +-0.8 0 l +-1 -0.333 l +h + + + + +0 0 m +-1 0.333 l +-0.8 0 l +-1 -0.333 l +h + + + + +0.6 0 0 0.6 0 0 e +0.4 0 0 0.4 0 0 e + + + + +0.6 0 0 0.6 0 0 e + + + + + +0.5 0 0 0.5 0 0 e + + +0.6 0 0 0.6 0 0 e +0.4 0 0 0.4 0 0 e + + + + + +-0.6 -0.6 m +0.6 -0.6 l +0.6 0.6 l +-0.6 0.6 l +h +-0.4 -0.4 m +0.4 -0.4 l +0.4 0.4 l +-0.4 0.4 l +h + + + + +-0.6 -0.6 m +0.6 -0.6 l +0.6 0.6 l +-0.6 0.6 l +h + + + + + +-0.5 -0.5 m +0.5 -0.5 l +0.5 0.5 l +-0.5 0.5 l +h + + +-0.6 -0.6 m +0.6 -0.6 l +0.6 0.6 l +-0.6 0.6 l +h +-0.4 -0.4 m +0.4 -0.4 l +0.4 0.4 l +-0.4 0.4 l +h + + + + + + +-0.43 -0.57 m +0.57 0.43 l +0.43 0.57 l +-0.57 -0.43 l +h + + +-0.43 0.57 m +0.57 -0.43 l +0.43 -0.57 l +-0.57 0.43 l +h + + + + + +0 0 m +-1 0.333 l +-1 -0.333 l +h + + + + +0 0 m +-1 0.333 l +-0.8 0 l +-1 -0.333 l +h + + + + +0 0 m +-1 0.333 l +-0.8 0 l +-1 -0.333 l +h + + + + +-1 0.333 m +0 0 l +-1 -0.333 l + + + + +0 0 m +-1 0.333 l +-1 -0.333 l +h +-1 0 m +-2 0.333 l +-2 -0.333 l +h + + + + +0 0 m +-1 0.333 l +-1 -0.333 l +h +-1 0 m +-2 0.333 l +-2 -0.333 l +h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +5 +8 +9 +0 +2 +1 +3 +4 +10 +6 +7 +11 + +12 + +