From 213a144df5df69f03332f6869b663a6e8fa8d15b Mon Sep 17 00:00:00 2001 From: Reed Es Date: Fri, 19 Nov 2021 17:21:05 -0700 Subject: [PATCH] added image --- .gitignore | 1 + Images/naive_nice.png | Bin 0 -> 29192 bytes README.md | 2 ++ 3 files changed, 3 insertions(+) create mode 100644 Images/naive_nice.png diff --git a/.gitignore b/.gitignore index bb460e7..59e2947 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ xcuserdata/ DerivedData/ .swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata +Package.resolved diff --git a/Images/naive_nice.png b/Images/naive_nice.png new file mode 100644 index 0000000000000000000000000000000000000000..7a09139a1ea6dd2ef99c354eb6f0c607f0d99ffa GIT binary patch literal 29192 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 TG~2}w8cMvA5zP_) + Adapted from pseudo-code in *Graphics Gems, Volume 1* by Andrew S. Glassner (1995). Using the example from the book: ```swift