Initial commit
56
.github/workflows/cmake.yml
vendored
Normal file
|
@ -0,0 +1,56 @@
|
|||
name: CMake
|
||||
|
||||
on: [push]
|
||||
|
||||
env:
|
||||
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
|
||||
BUILD_TYPE: Release
|
||||
|
||||
jobs:
|
||||
build:
|
||||
# The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac.
|
||||
# You can convert this to a matrix build if you need cross-platform coverage.
|
||||
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
- os: [self-hosted,Windows]
|
||||
outputsuffix: win
|
||||
archive_type: zip
|
||||
archive_extension: zip
|
||||
outputfile1: Release/normals.exe
|
||||
outputfile2: Release/obj.exe
|
||||
outputfile3: Release/quad_subdivision.exe
|
||||
- os: [self-hosted,Linux]
|
||||
outputsuffix: ux
|
||||
archive_type: zip
|
||||
archive_extension: zip
|
||||
outputfile1: normals
|
||||
outputfile2: obj
|
||||
outputfile3: quad_subdivision
|
||||
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Configure CMake
|
||||
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
|
||||
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
|
||||
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}
|
||||
|
||||
- name: Build
|
||||
# Build your program with the given configuration
|
||||
run: |
|
||||
cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}
|
||||
|
||||
- name: Upload a Build Artifact
|
||||
uses: actions/upload-artifact@v3.1.2
|
||||
with:
|
||||
# Artifact name
|
||||
name: CG_${{ matrix.outputsuffix }}_${{env.BUILD_TYPE}}
|
||||
# A file, directory or wildcard pattern that describes what to upload
|
||||
path: |
|
||||
${{github.workspace}}/build/${{matrix.outputfile1}}
|
||||
${{github.workspace}}/build/${{matrix.outputfile2}}
|
||||
${{github.workspace}}/build/${{matrix.outputfile3}}
|
40
.gitignore
vendored
Normal file
|
@ -0,0 +1,40 @@
|
|||
# Compiled Object files
|
||||
*.slo
|
||||
*.lo
|
||||
*.o
|
||||
|
||||
# Precompiled Headers
|
||||
*.gch
|
||||
*.pch
|
||||
|
||||
# Compiled Dynamic libraries
|
||||
*.so
|
||||
*.dylib
|
||||
*.dll
|
||||
|
||||
# Fortran module files
|
||||
*.mod
|
||||
*.smod
|
||||
|
||||
# Compiled Static libraries
|
||||
*.lai
|
||||
*.la
|
||||
*.a
|
||||
*.lib
|
||||
|
||||
# Executables
|
||||
*.exe
|
||||
*.out
|
||||
*.app
|
||||
|
||||
# Visual Studio
|
||||
.vs/*
|
||||
out/*
|
||||
CMakeSettings.json
|
||||
|
||||
*.un~
|
||||
*.swo
|
||||
*.swp
|
||||
build/*
|
||||
bin/*
|
||||
*.DS_Store
|
34
CMakeLists.txt
Normal file
|
@ -0,0 +1,34 @@
|
|||
cmake_minimum_required(VERSION 3.0)
|
||||
|
||||
project(meshes)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
|
||||
list(PREPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
|
||||
|
||||
# Libigl
|
||||
include(libigl)
|
||||
|
||||
# Enable the target igl::glfw and igl::stb
|
||||
igl_include(glfw)
|
||||
igl_include(stb)
|
||||
|
||||
# include the header files
|
||||
include_directories(include/)
|
||||
|
||||
# add the source files
|
||||
file(GLOB SRCFILES src/*.cpp)
|
||||
|
||||
# create 1 library "core" (from the SRCFILES) and 3 projects/executables ("normals", "quad_subdivision", "obj")
|
||||
|
||||
add_library(core ${SRCFILES})
|
||||
target_link_libraries(core PUBLIC igl::glfw)
|
||||
|
||||
add_executable(normals "normals.cpp")
|
||||
target_link_libraries(normals PUBLIC core igl::glfw )
|
||||
|
||||
add_executable(quad_subdivision "quad_subdivision.cpp")
|
||||
target_link_libraries(quad_subdivision PUBLIC core igl::glfw )
|
||||
|
||||
add_executable(obj "obj.cpp")
|
||||
target_link_libraries(obj PUBLIC core igl::glfw igl::stb)
|
367
README.md
Normal file
|
@ -0,0 +1,367 @@
|
|||
# Computer Graphics Lab3 – Meshes
|
||||
**Deadline: Nov. 15 2024, 22:00**
|
||||
|
||||
## Building using CMake
|
||||
|
||||
### Windows
|
||||
If your CMake version < 3.16.0, you might see an error pop up while using CMake, saying that Libigl requires a version >= 3.16.0. If you don't want to update your CMake, simply go to the line throwing that error and change the version:
|
||||
|
||||
```
|
||||
# on my machine the error is thrown in
|
||||
# "out/build/x64-Debug/_deps/libigl-src/CMakeLists.txt" on line 12:
|
||||
set(REQUIRED_CMAKE_VERSION "3.16.0")
|
||||
|
||||
# change this to a version <= your version, for example:
|
||||
set(REQUIRED_CMAKE_VERSION "3.0.0")
|
||||
```
|
||||
|
||||
### Linux
|
||||
If CMake succeeds without errors, great. However, if not, then you will have to resolve the thrown exceptions. We follow [libigl's example project](https://github.com/libigl/libigl-example-project) in this assignment, which they claim should work on Ubuntu out of the box. It can be however that CMake throws exceptions that look like:
|
||||
|
||||
1. `"Could not find X11 (missing: X11_X11_LIB ...)"`
|
||||
2. `"... headers not found; ... install ... development package"`
|
||||
3. `"Could NOT find OpenGL (missing: OPENGL_opengl_LIBRARY ...)"`
|
||||
|
||||
To solve errors like this, install the missing packages (you might need to search around on the web if the following command does not suffice):
|
||||
```
|
||||
sudo apt install libx11-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libgl1-mesa-dev
|
||||
```
|
||||
|
||||
### WSL (Windows)
|
||||
Follow the Linux instructions above. Warning: the assignment uses OpenGL and GLFW to create a window, which might not work with WSL. We will not be able to help you here.
|
||||
|
||||
### MacOS
|
||||
We follow [libigl's example project](https://github.com/libigl/libigl-example-project) in this assignment, which they claim should work on MacOS out of the box. If you experience CMake errors that you cannot solve with some help online, please contact us.
|
||||
|
||||
## Background
|
||||
|
||||
### Read Section 12.1 of _Fundamentals of Computer Graphics (4th Edition)_.
|
||||
|
||||
### Skim read Chapter 11 of _Fundamentals of Computer Graphics (4th Edition)_.
|
||||
|
||||
There are many ways to store a triangle (or polygonal) mesh on the computer. The
|
||||
data-structures have very different complexities in terms of code, memory, and
|
||||
access performance. At the heart of these structures, is the problem of storing
|
||||
the two types of information defining a mesh: the _geometry_ (where are points
|
||||
on the surface located in space) and the _connectivity_ (which points are
|
||||
connected to each other). The connectivity is also sometimes referred to as the
|
||||
[topology](https://en.wikipedia.org/wiki/Topology) of the mesh.
|
||||
|
||||
The [graphics pipeline](https://en.wikipedia.org/wiki/Graphics_pipeline) works
|
||||
on a per-triangle and per-vertex basis. So the simplest way to store geometry is
|
||||
a 3D position <img src="/markdown/ec6276257da0cb44caa5ae4b07afb40e.svg?invert_in_darkmode&sanitize=true" align=middle width=56.27160494999998pt height=26.76175259999998pt/> for each <img src="/markdown/77a3b857d53fb44e33b53e4c8b68351a.svg?invert_in_darkmode&sanitize=true" align=middle width=5.663225699999989pt height=21.68300969999999pt/>-th vertex of the mesh. And to store
|
||||
triangle connectivity as an ordered triplet of indices referencing vertices:
|
||||
<img src="/markdown/567132d8a883ab35cbb45db628ebb96e.svg?invert_in_darkmode&sanitize=true" align=middle width=36.147533399999986pt height=22.831056599999986pt/> defines a triangle with corners at vertices <img src="/markdown/5474c8baa2bc6feabb0eac4237772aab.svg?invert_in_darkmode&sanitize=true" align=middle width=14.628015599999989pt height=14.611878600000017pt/>, <img src="/markdown/4e86697c693f7bd2ebcf1bf515fbba2f.svg?invert_in_darkmode&sanitize=true" align=middle width=16.08162434999999pt height=14.611878600000017pt/> and <img src="/markdown/fac5b28b95f69ccc2e9d37b26c68864f.svg?invert_in_darkmode&sanitize=true" align=middle width=17.24314514999999pt height=14.611878600000017pt/>.
|
||||
Thus, the geometry is stored as a list of <img src="/markdown/55a049b8f161ae7cfeb0197d75aff967.svg?invert_in_darkmode&sanitize=true" align=middle width=9.86687624999999pt height=14.15524440000002pt/> 3D vectors: efficiently, we can
|
||||
put these vectors in the rows of a real-valued matrix <img src="/markdown/907f9d3f474ec1dea25687fb39c395a7.svg?invert_in_darkmode&sanitize=true" align=middle width=73.77646979999999pt height=26.76175259999998pt/>. Likewise,
|
||||
the connectivity is stored as a list of <img src="/markdown/0e51a2dede42189d77627c4d742822c3.svg?invert_in_darkmode&sanitize=true" align=middle width=14.433101099999991pt height=14.15524440000002pt/> triplets: efficiently, we can put
|
||||
these triplets in the rows of an integer-valued matrix <img src="/markdown/c7299835acc0beb6d4c78f128f1d90cd.svg?invert_in_darkmode&sanitize=true" align=middle width=123.31228469999999pt height=26.76175259999998pt/>.
|
||||
|
||||
> **Question:** What if we want to store a (pure-)quad mesh?
|
||||
|
||||
### Texture Mapping
|
||||
|
||||
[Texture mapping](https://en.wikipedia.org/wiki/Texture_mapping) is a process
|
||||
for mapping image information (e.g., colors) onto a surface (e.g., triangle
|
||||
mesh). The standard way to define a texture mapping is to augment the 3D
|
||||
geometric information of a mesh with additional 2D _parametrization_
|
||||
information: where do we find each point on the texture image plane? Typically,
|
||||
parameterization coordinates are bound to the unit square.
|
||||
|
||||
Mapping a 3D flat polygon to 2D is rather straightforward. The problem of
|
||||
finding a good mapping from a 3D surface to 2D becomes much harder if our
|
||||
surface is not flat (e.g., like a
|
||||
[hemisphere](https://en.wikipedia.org/wiki/Hemisphere)), if the surface does not
|
||||
have exact one boundary (e.g., like a sphere) or if the surface has "holes"
|
||||
(e.g., like a [torus/doughnut](https://en.wikipedia.org/wiki/Torus)).
|
||||
|
||||
Curved surfaces must get _distorted_ when flattened onto the plane. This is why
|
||||
[Greenland looks bigger than
|
||||
Africa](https://www.youtube.com/watch?v=vVX-PrBRtTY) on a common map of the
|
||||
Earth.
|
||||
|
||||
The lack or presence of too many boundaries or the presence of "doughnut holes"
|
||||
in surfaces implies that we need to "cut" the surface to lay out it on the
|
||||
plane so all parts of the surface are "face up". _Think about trying to flatten
|
||||
a deflated basketball on the ground._
|
||||
|
||||
### Normals
|
||||
|
||||
For a smooth surface, knowing the surface geometry (i.e., position in space)
|
||||
near a point fully determines the [normal
|
||||
vector](https://en.wikipedia.org/wiki/Normal_(geometry)) at that point.
|
||||
|
||||
For a discrete mesh, the normal is only well-defined in the middle of planar
|
||||
faces (e.g., inside the triangles of a triangle mesh, but not along the edges or
|
||||
at vertices). Furthermore, if we use these normals for rendering, the surface
|
||||
will have a faceted appearance. This appearance is mathematically correct, but
|
||||
not necessarily desired if we wish to display a smooth looking surface.
|
||||
|
||||
[Phong](https://en.wikipedia.org/wiki/Bui_Tuong_Phong) realized that [linearly
|
||||
interpolating](https://en.wikipedia.org/wiki/Linear_interpolation) normals
|
||||
stored at the corners of each triangle leads to a [smooth
|
||||
appearance](https://en.wikipedia.org/wiki/Phong_shading#Phong_interpolation).
|
||||
|
||||
This raises the question: what normals should we put at vertices or corners of
|
||||
our mesh?
|
||||
|
||||
For a faceted surface (e.g., a cube), all corners of a planar face <img src="/markdown/190083ef7a1625fbc75f243cffb9c96d.svg?invert_in_darkmode&sanitize=true" align=middle width=9.81741584999999pt height=22.831056599999986pt/> should
|
||||
share the face's normal <img src="/markdown/aa0f607fb8a0f302675de85aeabededc.svg?invert_in_darkmode&sanitize=true" align=middle width=59.845697999999985pt height=26.76175259999998pt/> .
|
||||
|
||||
For a smooth surface (e.g., a sphere), corners of triangles located at the same
|
||||
vertex should share the same normal vector. This way the rendering is continuous
|
||||
across the vertex. A common way to define per-vertex normals is to take a
|
||||
weighted average of normals from incident faces. Different weighting schemes are
|
||||
possible: uniform average (easy, but sensitive to irregular triangulations),
|
||||
angle-weighted (geometrically well motivated, but not robust near zero-area
|
||||
triangles), area-weighted (geometrically reasonable, well behaved). In this
|
||||
assignment, we'll compute area-weighted per-vertex normals:
|
||||
|
||||
<p align="center"><img src="/markdown/599fe3b222b5898bd240d6ac12d5c5b5.svg?invert_in_darkmode&sanitize=true" align=middle width=161.40208425pt height=41.4976122pt/></p>
|
||||
|
||||
where <img src="/markdown/f947b3c602ca948910b99f1601e5abed.svg?invert_in_darkmode&sanitize=true" align=middle width=36.34324319999999pt height=24.65753399999998pt/> is the set of faces neighboring the <img src="/markdown/6c4adbc36120d62b98deef2a20d5d303.svg?invert_in_darkmode&sanitize=true" align=middle width=8.55786029999999pt height=14.15524440000002pt/>-th vertex.
|
||||
|
||||

|
||||
|
||||
For surfaces with a mixture of smooth-looking parts and creases, it is useful to
|
||||
define normals independently for each triangle corner (as opposed to each mesh
|
||||
vertex). For each corner, we'll again compute an area-weighted average of normals
|
||||
triangles incident on the shared vertex at this corner, but we'll ignore
|
||||
triangle's whose normal is too different from the corner's face's normal:
|
||||
|
||||
<p align="center"><img src="/markdown/cc96dd182e07003c6232739259df10ec.svg?invert_in_darkmode&sanitize=true" align=middle width=245.6981736pt height=42.4291164pt/></p>
|
||||
|
||||
where <img src="/markdown/1926c401973f24b4db4f35dca2eb381d.svg?invert_in_darkmode&sanitize=true" align=middle width=6.672392099999992pt height=14.15524440000002pt/> is the minimum dot product between two face normals before we declare
|
||||
there is a crease between them.
|
||||
|
||||

|
||||
|
||||
### .obj File Format
|
||||
A common file format to save meshes is the [.obj file format](https://en.wikipedia.org/wiki/Wavefront_.obj_file), which contains a _face_-based representation. The connectivity/topological data is stored implicitly by a list of faces made out of vertices. Per vertex, three main types of geometric information can be stored:
|
||||
|
||||
- 3D position information of a vertex (denoted as `v` in the file, and `V` in the src code)
|
||||
- 3D normal vector information of a vertex (`vn`, or `NV` in src code)
|
||||
- 2D parameterization information (e.g. texture coordinate) of a vertex (`vt`, or `UV` in the src code)
|
||||
|
||||
Take a cube for example. You could construct a mesh with 6 faces, each having 1 normal vector, and 4 vertices per face. You could make it so that each vertex has a 2D texture coordinate.
|
||||

|
||||
|
||||
In an .obj file, a face is defined as a list of indices pointing towards certain lines of `v`, `vt` and/or `vn`. For example :
|
||||
```
|
||||
v 0.0 0.0 0.0 # 3D position 1
|
||||
v 2.0 0.0 0.0 # 2
|
||||
v 1.0 2.0 0.0 # 3
|
||||
vt 0.0 0.0 # 2D texture coordinate 1
|
||||
vt 1.0 0.0 # 2
|
||||
vt 0.5 1.0 # 3
|
||||
vn 0.0 0.0 1.0 # 3D normal vector 1
|
||||
|
||||
# some examples faces that can be made:
|
||||
|
||||
f 1 2 3 # face 1: a face made of 3 vertices, with 3D positions 1,2,3
|
||||
f 1/1 2/2 3/3 # face 2: same as face 1, but with 2D texture coordinates 1,2,3 respectively
|
||||
f 1//1 2//1 3//1 # face 3: same as face 1, but with normal vector 1 for each vertex
|
||||
f 1/1/1 2/2/1 3/3/1 # face 4: each vertex has a position, texture coordinate and normal vector
|
||||
```
|
||||
|
||||
> **Warning:** In an .obj file, indexing always starts at `1`, not `0`!
|
||||
|
||||
This is just an example of course. Faces can have more than 3 vertices, can have vertices with different normal vectors, and the order of faces does not matter.
|
||||
|
||||
### Subdivision Surfaces
|
||||
|
||||
A [subdivision surface](https://en.wikipedia.org/wiki/Subdivision_surface) is a
|
||||
natural generalization of a [spline
|
||||
curve](https://en.wikipedia.org/wiki/Spline_(mathematics)). A smooth spline can
|
||||
be defined as the [limit](https://en.wikipedia.org/wiki/Limit_(mathematics)) of
|
||||
a [recursive
|
||||
process](https://en.wikipedia.org/wiki/Recursion_(computer_science)) applied to
|
||||
a polygon: each edge of the polygon is split with a new vertex and the vertices
|
||||
are smoothed toward eachother. If you've drawn smooth curves using Adobe
|
||||
Illustrator, PowerPoint or Inkscape, then you've used splines.
|
||||
|
||||
At a high-level, subdivision surfaces work the same way. We start with a
|
||||
polyhedral mesh and subdivide each face. This adds new vertices on the faces
|
||||
and/or edges of the mesh. Then we smooth vertices toward each other.
|
||||
|
||||
The first and still (most) popular subdivision scheme was invented by
|
||||
[Catmull](https://en.wikipedia.org/wiki/Edwin_Catmull) (who went on to co-found
|
||||
[Pixar](https://en.wikipedia.org/wiki/Pixar)) and
|
||||
[Clark](https://en.wikipedia.org/wiki/James_H._Clark) (founder of
|
||||
[Silicon Graphics](https://en.wikipedia.org/wiki/Silicon_Graphics) and
|
||||
[Netscape](https://en.wikipedia.org/wiki/Netscape)). [Catmull-Clark
|
||||
subdivision](https://en.wikipedia.org/wiki/Catmull–Clark_subdivision_surface) is
|
||||
defined for inputs meshes with arbitrary polygonal faces (triangles, quads,
|
||||
pentagons, etc.) but always produces a pure-quad mesh as output (i.e., all faces
|
||||
have 4 sides).
|
||||
|
||||
To keep things simple, in this assignment we'll assume the input is also a
|
||||
pure-quad mesh.
|
||||
|
||||
 converging
|
||||
toward a smooth surface.](markdown/bob-subdivision.gif)
|
||||
|
||||
## Mesh Viewers
|
||||
|
||||
(Optional) In this assignment, you will create meshes that you can save to an .obj file thanks to `write_obj.cpp`. If you would like to view these meshes in something other than the `libigl` viewer we provide, you can open the .obj files in:
|
||||
|
||||
1. [Mesh Lab](http://www.meshlab.net) free, open-source. **_Warning_:** Mesh Lab does not appear
|
||||
to respect user-provided normals in .obj files.
|
||||
|
||||
2. [Blender](https://www.blender.org/download/): free, open-source. If you want to see the texture, you will have to make a shader with an image texture.
|
||||
|
||||
3. [Autodesk Maya](https://en.wikipedia.org/wiki/Autodesk_Maya) is a commericial 3D
|
||||
modeling and animation software. They often have [free student versions](https://www.autodesk.com/education/free-software/maya).
|
||||
|
||||
## Almost ready to start implementing
|
||||
|
||||
### Eigen Matrices
|
||||
This assignment use the Eigen library. This section contains some useful syntax:
|
||||
|
||||
```
|
||||
Eigen::MatrixXi A; // creates a 0x0 matrix of integers
|
||||
A.resize(10, 3); // resizes the matrix to 10x3 (meaning 10 rows, 3 columns)
|
||||
|
||||
Eigen::MatrixXd B; // creates a 0x0 matrix of doubles
|
||||
B.resize(10, 3); // important, always use resize() !
|
||||
|
||||
Eigen::MatrixXd C = Eigen::MatrixXd::Zero(10, 3); // here C.resize() is not necessary
|
||||
|
||||
C.row(0) = Eigen::RowVector3d(0, 0, 1); // overwrite the first row of C
|
||||
C.row(5); // gives the 5th row of C, as an Eigen::RowVectorXd
|
||||
C(5,0); // gives the element on row=5 and column=0 of C
|
||||
```
|
||||
|
||||
### White list
|
||||
|
||||
You're encouraged to use `#include <Eigen/Geometry>` to compute the [cross
|
||||
product](https://en.wikipedia.org/wiki/Cross_product) of two 3D vectors
|
||||
`.cross`.
|
||||
|
||||
### Black list
|
||||
|
||||
This assignment uses [libigl](http://libigl.github.io) for mesh viewing. libigl
|
||||
has many mesh processing functions implemented in C++, including some of the
|
||||
functions assigned here. Do not copy or look at the following implementations:
|
||||
|
||||
`igl::per_vertex_normals`
|
||||
`igl::per_face_normals`
|
||||
`igl::per_corner_normals`
|
||||
`igl::double_area`
|
||||
`igl::vertex_triangle_adjacency`
|
||||
`igl::writeOBJ`
|
||||
|
||||
# Tasks
|
||||
|
||||
## Part 1: Understanding the .OBJ File Format
|
||||
Once you have implemented the files below, run
|
||||
```
|
||||
Linux: ./obj ../data/rubiks-cube.png ../data/earth-square.png
|
||||
Windows: obj.exe ../../../data/rubiks-cube.png ../../../data/earth-square.png
|
||||
```
|
||||
to open a window showing your cube being rendered. If you press 'Escape', it will close and the second window displaying your sphere will pop up. They should look like this:
|
||||
|
||||
](markdown/rubiks-cube.gif)
|
||||
|
||||

|
||||
|
||||
> Tip: look at the **header file** of each function to implement.
|
||||
|
||||
### `src/write_obj.cpp`
|
||||
|
||||
The input is a mesh with
|
||||
1. 3D vertex positions (`V`)
|
||||
2. 2D parametrization positions (`UV`)
|
||||
3. 3D normal vectors (`NV`)
|
||||
4. the vertices making up the faces (`F`), denoted as indices of `V`
|
||||
5. the uvs of the faces (`UF`), denoted as indices of `UV`
|
||||
5. the normal vectors of the faces (`UF`), denoted as indices of `NV`
|
||||
|
||||
The goal is to write the mesh to an `.obj` file.
|
||||
|
||||
> **Note:** This assignment covers only a small subset of meshes and mesh-data that the `.obj` file format supports.
|
||||
|
||||
### `src/cube.cpp`
|
||||
|
||||
Construct the **quad** mesh of a cube including parameterization and per-face
|
||||
normals.
|
||||
|
||||
> **Hint:** Draw out on paper and _label_ with indices the 3D cube, the 2D
|
||||
> parameterized cube, and the normals.
|
||||
|
||||
### `src/sphere.cpp` (optional, not included in rating)
|
||||
|
||||
Construct a **quad** mesh of a sphere with `num_faces_u` × `num_faces_v` faces. Take a look at UV spheres or [equirectangular projection/mapping](https://www.youtube.com/watch?v=15dVTZg0rhE).
|
||||
|
||||
The equirectangular projection basically defines how a 3D vertex `(x,y,z)` on the sphere is mapped to a 2D texture coordinate `(u,v)`, and vice versa. To go from `(u,v)` to `(x,y,z)` (although some flipping of axes might be necessary):
|
||||
|
||||
```
|
||||
|
||||
φ = 2π - 2πu # φ is horizontal and should go from 2π to 0 as u goes from 0 to 1
|
||||
θ = π - πv # θ is vertical and should go from π to 0 as v goes from 0 to 1
|
||||
|
||||
x = sin(θ)cos(φ)
|
||||
y = cos(θ)
|
||||
z = sin(θ)sin(φ)
|
||||
```
|
||||
|
||||
> **Note**: The `v` axis of the texture coordinate is always upwards
|
||||
|
||||
|
||||
## Part 2: Calculating normal vectors
|
||||
You may assume that the input .obj files will all contain faces with 3 vertices (triangles), like `fandisk.obj`. Once you have implemented the functions below, run
|
||||
```
|
||||
Linux: ./normals ../data/fandisk.obj
|
||||
Windows: normals.exe ../../../data/fandisk.obj
|
||||
```
|
||||
to open a window showing the fandisk being rendered using the normals calculated by you. Type '1', '2' or '3' (above qwerty/azerty on the keyboard) to switch between per-face, per-vertex and per-corner normals. The difference between per-face and per-corner is only visible when zoomed in.
|
||||
|
||||

|
||||
|
||||
> Tip: look at the **header file** of each function to implement.
|
||||
|
||||
### `src/triangle_area_normal.cpp`
|
||||
Compute the normal vector of a 3D triangle given its corner locations. The
|
||||
output vector should have length equal to the area of the triangle.
|
||||
|
||||
**Important**: this the only time where you are allowed to return normal vectors that do not have unit length (i.e. that have not been normalized).
|
||||
|
||||
### `src/per_face_normals.cpp`
|
||||
Compute per-face normals for a triangle mesh. In other words: for each face, compute the normal vector **of unit length**.
|
||||
|
||||
### `src/per_vertex_normals.cpp`
|
||||
Compute per-vertex normals for a triangle mesh. In other words: for each vertex, compute the normal vector **of unit length**, by taking a area-weighted average over the normals of all the faces with that vertex as a corner.
|
||||
|
||||
### `src/vertex_triangle_adjacency.cpp`
|
||||
Compute a vertex-triangle adjacency list. For each vertex store a list of all incident faces. Tip: `emplace_back()`.
|
||||
|
||||
### `src/per_corner_normals.cpp`
|
||||
Compute per-corner normals for a triangle mesh. The goal is to compute a **unit** normal vector for each corner C of each face F. This is done by taking the area-weighted average of normals of faces connected to C. However, an incident face's normals is only included in the area-weighted average if the angle between that face normal and that of F is smaller than a threshold (`corner_threshold` (= 20 degrees)).
|
||||
|
||||
## Part 3: Implementing a mesh subdivision method
|
||||
|
||||
### `src/catmull_clark.cpp`
|
||||
|
||||
Conduct `num_iters` iterations of [Catmull-Clark
|
||||
subdivision](https://en.wikipedia.org/wiki/Catmull–Clark_subdivision_surface) on
|
||||
a **pure quad** mesh (`V`,`F`).
|
||||
|
||||
Once this is implemented, run `./quad_subdivision` (or `quad_subdivision.exe`) on your `cube.obj` or `bob.obj` (shown earlier). Press 'spacebar' to subdivide once. It should look nicely smooth and uniform from all sides:
|
||||
|
||||

|
||||
|
||||
> Tip: First get cube.obj working before moving onto bob.obj.
|
||||
|
||||
> Tip: I think the step-by-step explanation on [Wikipedia (under "Recursive evaluation")](https://en.wikipedia.org/wiki/Catmull%E2%80%93Clark_subdivision_surface) is quite clear.
|
||||
|
||||
> Tip: **perform the Catmull-Clark algorithm on paper first**, i.e. draw the cube from cube.obj on a piece of paper and manually calculate each `face point`, `edge point` and `new vertex point`. Check if these values are the same as your implementation.
|
11
cmake/libigl.cmake
Normal file
|
@ -0,0 +1,11 @@
|
|||
if(TARGET igl::core)
|
||||
return()
|
||||
endif()
|
||||
|
||||
include(FetchContent)
|
||||
FetchContent_Declare(
|
||||
libigl
|
||||
GIT_REPOSITORY https://github.com/libigl/libigl.git
|
||||
GIT_TAG v2.5.0
|
||||
)
|
||||
FetchContent_MakeAvailable(libigl)
|
1420
data/bob.obj
Normal file
1814
data/cup.obj
Normal file
BIN
data/earth-square.png
Normal file
After Width: | Height: | Size: 839 KiB |
19421
data/fandisk.obj
Normal file
BIN
data/rubiks-cube.png
Normal file
After Width: | Height: | Size: 11 KiB |
50
data/torus.obj
Normal file
|
@ -0,0 +1,50 @@
|
|||
# This file uses centimeters as units for non-parametric coordinates.
|
||||
|
||||
v -2.000000 0.000000 0.000000
|
||||
v -3.000000 0.000000 -1.000000
|
||||
v -4.000000 0.000000 -0.000001
|
||||
v -3.000000 0.000000 1.000000
|
||||
v -1.000000 -1.732050 0.000000
|
||||
v -1.500000 -2.598080 -1.000000
|
||||
v -2.000000 -3.464100 -0.000001
|
||||
v -1.500000 -2.598080 1.000000
|
||||
v 1.000000 -1.732050 0.000000
|
||||
v 1.500000 -2.598080 -1.000000
|
||||
v 2.000000 -3.464100 -0.000001
|
||||
v 1.500000 -2.598080 1.000000
|
||||
v 2.000000 0.000000 0.000000
|
||||
v 3.000000 0.000000 -1.000000
|
||||
v 4.000000 0.000000 -0.000001
|
||||
v 3.000000 0.000000 1.000000
|
||||
v 1.000000 1.732050 0.000000
|
||||
v 1.500000 2.598080 -1.000000
|
||||
v 2.000000 3.464100 -0.000001
|
||||
v 1.500000 2.598080 1.000000
|
||||
v -1.000000 1.732050 0.000000
|
||||
v -1.500000 2.598080 -1.000000
|
||||
v -2.000000 3.464100 -0.000001
|
||||
v -1.500000 2.598080 1.000000
|
||||
f 6 2 1 5
|
||||
f 7 3 2 6
|
||||
f 8 4 3 7
|
||||
f 5 1 4 8
|
||||
f 10 6 5 9
|
||||
f 11 7 6 10
|
||||
f 12 8 7 11
|
||||
f 9 5 8 12
|
||||
f 14 10 9 13
|
||||
f 15 11 10 14
|
||||
f 16 12 11 15
|
||||
f 13 9 12 16
|
||||
f 18 14 13 17
|
||||
f 19 15 14 18
|
||||
f 20 16 15 19
|
||||
f 17 13 16 20
|
||||
f 22 18 17 21
|
||||
f 23 19 18 22
|
||||
f 24 20 19 23
|
||||
f 21 17 20 24
|
||||
f 2 22 21 1
|
||||
f 3 23 22 2
|
||||
f 4 24 23 3
|
||||
f 1 21 24 4
|
141
include/QuadViewer.h
Normal file
|
@ -0,0 +1,141 @@
|
|||
#ifndef QUADVIEWER_H
|
||||
#define QUADVIEWER_H
|
||||
#include <igl/opengl/glfw/Viewer.h>
|
||||
#include <Eigen/Core>
|
||||
#include <cassert>
|
||||
#include <string>
|
||||
class QuadViewer
|
||||
{
|
||||
public:
|
||||
igl::opengl::glfw::Viewer viewer;
|
||||
std::function<bool(igl::opengl::glfw::Viewer& viewer, unsigned int key, int modifiers)> callback_key_pressed;
|
||||
bool show_lines;
|
||||
public:
|
||||
QuadViewer():show_lines(true),
|
||||
// Important to initialize function
|
||||
callback_key_pressed([](igl::opengl::glfw::Viewer& viewer, unsigned int key, int modifiers)->bool{return false;})
|
||||
{
|
||||
std::cout<<R"(QuadViewer usage:
|
||||
F,f [disabled]
|
||||
L,l Show/hide quad eges
|
||||
U,u Show/hide texture
|
||||
|
||||
)";
|
||||
viewer.data().show_lines = false;
|
||||
viewer.callback_key_pressed = [this](
|
||||
igl::opengl::glfw::Viewer & /*viewer*/,
|
||||
unsigned int key,
|
||||
int modifier)->bool
|
||||
{
|
||||
if(!callback_key_pressed(viewer,key,modifier))
|
||||
{
|
||||
switch(key)
|
||||
{
|
||||
default:
|
||||
return false;
|
||||
case 'F':
|
||||
case 'f':
|
||||
// Disable Toggling "face based" since we want control of quad-mesh
|
||||
// appearance
|
||||
break;
|
||||
case 'L':
|
||||
case 'l':
|
||||
// Usurp the Toggling "show lines" and map to showing overlay instead
|
||||
show_lines = !show_lines;
|
||||
viewer.data().show_overlay = show_lines;
|
||||
break;
|
||||
case 'U':
|
||||
case 'u':
|
||||
viewer.data().show_texture = !viewer.data().show_texture;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
};
|
||||
}
|
||||
// Set the mesh of .data() to be an exploded version of the given quad mesh
|
||||
//
|
||||
// Inputs:
|
||||
// V #V by 3 mesh vertex positions
|
||||
// F #F by 4 quad indices into V
|
||||
void set_mesh(
|
||||
const Eigen::MatrixXd & V,
|
||||
const Eigen::MatrixXd & UV,
|
||||
const Eigen::MatrixXd & NV,
|
||||
const Eigen::MatrixXi & F)
|
||||
{
|
||||
assert((UV.rows() == 0 || V.rows() == UV.rows()) && "V and UV should have same #rows");
|
||||
assert((NV.rows() == 0 || V.rows() == NV.rows()) && "V and NV should have same #rows");
|
||||
// libigl Viewer does not handle quad meshes well by default
|
||||
// Explode the quad mesh into quad soup. Then each quad can have smooth
|
||||
// normals: faceted-quad appearance
|
||||
Eigen::MatrixXd FV(F.rows()*4,V.cols());
|
||||
Eigen::MatrixXd FUV,FNV;
|
||||
if(UV.rows() != 0) FUV.resize(F.rows()*4,UV.cols());
|
||||
if(NV.rows() != 0) FNV.resize(F.rows()*4,NV.cols());
|
||||
Eigen::MatrixXi FF(F.rows(),4);
|
||||
for(int f = 0;f<F.rows();f++)
|
||||
{
|
||||
for(int c = 0;c<4;c++)
|
||||
{
|
||||
FF(f,c) = c+f*4;
|
||||
FV.row(FF(f,c)) = V.row(F(f,c));
|
||||
if(UV.rows() != 0) FUV.row(FF(f,c)) = UV.row(F(f,c));
|
||||
if(NV.rows() != 0) FNV.row(FF(f,c)) = NV.row(F(f,c));
|
||||
}
|
||||
}
|
||||
Eigen::MatrixXi T(FF.rows()*2,3);
|
||||
T<<
|
||||
FF.col(0), FF.col(1), FF.col(2),
|
||||
FF.col(0), FF.col(2), FF.col(3);
|
||||
viewer.data().clear();
|
||||
viewer.data().set_mesh(FV,T);
|
||||
if(NV.rows() != 0) viewer.data().set_normals(FNV);
|
||||
if(UV.rows() != 0) viewer.data().set_uv(FUV);
|
||||
viewer.data().set_face_based(false);
|
||||
Eigen::MatrixXi E(FF.rows()*4,2);
|
||||
E<<
|
||||
FF.col(0), FF.col(1),
|
||||
FF.col(1), FF.col(2),
|
||||
FF.col(2), FF.col(3),
|
||||
FF.col(3), FF.col(0);
|
||||
viewer.data().set_edges(FV,E,Eigen::RowVector3d(0,0,0));
|
||||
}
|
||||
// Wrapper without UV and NV
|
||||
void set_mesh(
|
||||
const Eigen::MatrixXd & V,
|
||||
const Eigen::MatrixXi & F)
|
||||
{
|
||||
return set_mesh(V,Eigen::MatrixXd(),Eigen::MatrixXd(),F);
|
||||
}
|
||||
// Explode all data to be per-corner so libigl viewer can handle it.
|
||||
void set_mesh(
|
||||
const Eigen::MatrixXd & V,
|
||||
const Eigen::MatrixXi & F,
|
||||
const Eigen::MatrixXd & UV,
|
||||
const Eigen::MatrixXi & UF,
|
||||
const Eigen::MatrixXd & NV,
|
||||
const Eigen::MatrixXi & NF)
|
||||
{
|
||||
Eigen::MatrixXd vV(F.rows()*F.cols(),V.cols());
|
||||
Eigen::MatrixXd vUV(F.rows()*F.cols(),UV.cols());
|
||||
Eigen::MatrixXd vNV(F.rows()*F.cols(),NV.cols());
|
||||
Eigen::MatrixXi vF(F.rows(),F.cols());
|
||||
for(int f = 0;f<F.rows();f++)
|
||||
{
|
||||
for(int c = 0;c<F.cols();c++)
|
||||
{
|
||||
const int vi = f*F.cols()+c;
|
||||
vV.row(vi) = V.row(F(f,c));
|
||||
vUV.row(vi) = UV.row(UF(f,c));
|
||||
vNV.row(vi) = NV.row(NF(f,c));
|
||||
vF(f,c) = vi;
|
||||
}
|
||||
}
|
||||
set_mesh(vV,vUV,vNV,vF);
|
||||
}
|
||||
// Pass through to igl::opengl::glfw::Viewer::launch
|
||||
int launch(bool fullscreen = false)
|
||||
{ return viewer.launch(fullscreen); }
|
||||
};
|
||||
#endif
|
22
include/catmull_clark.h
Normal file
|
@ -0,0 +1,22 @@
|
|||
#ifndef CATMULL_CLARK_H
|
||||
#define CATMULL_CLARK_H
|
||||
#include <Eigen/Core>
|
||||
|
||||
// Conduct num_iters iterations of Catmull-Clark subdivision on a **pure quad**
|
||||
// mesh (V,F).
|
||||
//
|
||||
// Inputs:
|
||||
// V #V by 3 list of vertex positions
|
||||
// F #F by 4 list of quad mesh indices into V
|
||||
// num_iters number of iterations
|
||||
// Outputs:
|
||||
// SV #SV by 3 list of vertex positions
|
||||
// SF #SF by 4 list of quad mesh indices into SV
|
||||
//
|
||||
void catmull_clark(
|
||||
const Eigen::MatrixXd & V,
|
||||
const Eigen::MatrixXi & F,
|
||||
const int num_iters,
|
||||
Eigen::MatrixXd & SV,
|
||||
Eigen::MatrixXi & SF);
|
||||
#endif
|
22
include/cube.h
Normal file
|
@ -0,0 +1,22 @@
|
|||
#ifndef CUBE_H
|
||||
#define CUBE_H
|
||||
#include <Eigen/Core>
|
||||
|
||||
// Construct the quad mesh of a cube.
|
||||
//
|
||||
// Outputs:
|
||||
// V 8 by 3 list of 3D corner vertex positions
|
||||
// F 6 by 4 list of quad face indices into rows of V
|
||||
// UV 14 by 2 list of corner parameterization positions
|
||||
// UF 6 by 4 list of quad face indices into rows of UV
|
||||
// NV 6 by 3 list of 3D unit normal vectors
|
||||
// NF 6 by 4 list of quad face indices into rows of NV
|
||||
void cube(
|
||||
Eigen::MatrixXd & V,
|
||||
Eigen::MatrixXi & F,
|
||||
Eigen::MatrixXd & UV,
|
||||
Eigen::MatrixXi & UF,
|
||||
Eigen::MatrixXd & NV,
|
||||
Eigen::MatrixXi & NF);
|
||||
|
||||
#endif
|
21
include/per_corner_normals.h
Normal file
|
@ -0,0 +1,21 @@
|
|||
#ifndef PER_CORNER_NORMALS_H
|
||||
#define PER_CORNER_NORMALS_H
|
||||
#include <Eigen/Core>
|
||||
// Compute per corner normals for a triangle mesh by computing the area-weighted
|
||||
// average of normals at incident faces whose normals deviate less than the
|
||||
// provided threshold.
|
||||
//
|
||||
// Inputs:
|
||||
// V #V by 3 list of vertex positions
|
||||
// F #F by 3 list of mesh triangle indices into V
|
||||
// corner_threshold threshold in degrees on sharp angles
|
||||
// Outputs:
|
||||
// N #F*3 by 3 list of mesh vertex 3D normals, where the normal
|
||||
// for corner F(i,j) is at N.row(i*3+j)
|
||||
void per_corner_normals(
|
||||
const Eigen::MatrixXd & V,
|
||||
const Eigen::MatrixXi & F,
|
||||
const double corner_threshold,
|
||||
Eigen::MatrixXd & N);
|
||||
#endif
|
||||
|
16
include/per_face_normals.h
Normal file
|
@ -0,0 +1,16 @@
|
|||
#ifndef PER_FACE_NORMALS_H
|
||||
#define PER_FACE_NORMALS_H
|
||||
#include <Eigen/Core>
|
||||
// Compute per-face normals for a triangle mesh
|
||||
//
|
||||
// Inputs:
|
||||
// V #V by 3 list of vertex positions
|
||||
// F #F by 3 list of mesh triangle indices into V
|
||||
// Outputs:
|
||||
// N #F by 3 list of per-face unit normal vectors
|
||||
void per_face_normals(
|
||||
const Eigen::MatrixXd & V,
|
||||
const Eigen::MatrixXi & F,
|
||||
Eigen::MatrixXd & N);
|
||||
#endif
|
||||
|
16
include/per_vertex_normals.h
Normal file
|
@ -0,0 +1,16 @@
|
|||
#ifndef PER_VERTEX_NORMALS_H
|
||||
#define PER_VERTEX_NORMALS_H
|
||||
#include <Eigen/Core>
|
||||
// Compute per vertex normals for a triangle mesh by computing the area-weighted
|
||||
// average of normals at incident faces.
|
||||
//
|
||||
// Inputs:
|
||||
// V #V by 3 list of vertex positions
|
||||
// F #F by 3 list of mesh triangle indices into V
|
||||
// Outputs:
|
||||
// N #V by 3 list of per-face unit normal vectors
|
||||
void per_vertex_normals(
|
||||
const Eigen::MatrixXd & V,
|
||||
const Eigen::MatrixXi & F,
|
||||
Eigen::MatrixXd & N);
|
||||
#endif
|
39
include/set_texture_from_png.h
Normal file
|
@ -0,0 +1,39 @@
|
|||
#ifndef SET_TEXTURE_FROM_PNG_H
|
||||
#define SET_TEXTURE_FROM_PNG_H
|
||||
#include <igl/opengl/ViewerData.h>
|
||||
//#include <igl/png/texture_from_png.h>
|
||||
#include <igl/stb/read_image.h>
|
||||
#include <Eigen/Core>
|
||||
#include <string>
|
||||
// Read and set texture from a file (basically wrap up
|
||||
// igl::png::texture_from_png because it's behaving very strangely
|
||||
//
|
||||
// Inputs:
|
||||
// path path to .png file
|
||||
// data ViewerData (e.g., returned from viewer.data())
|
||||
// Returns true if file read succeeds
|
||||
// Side effects:
|
||||
// sets data uniform colors to white, show_texture to true, and texture colors
|
||||
// to contents of file (ignoring alpha)
|
||||
bool set_texture_from_png(const std::string & path,
|
||||
igl::opengl::ViewerData & data)
|
||||
{
|
||||
Eigen::Matrix<unsigned char,Eigen::Dynamic,Eigen::Dynamic> R,G,B,A;
|
||||
// what in the world is going on with igl::png::texture_from_png
|
||||
//if(!igl::png::texture_from_png(path,R,G,B,A))
|
||||
if(!igl::stb::read_image(path, R, G, B, A))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
//R = R.colwise().reverse().eval();
|
||||
//G = G.colwise().reverse().eval();
|
||||
//B = B.colwise().reverse().eval();
|
||||
// No alpha igl::png::texture_from_png seems confused...
|
||||
A.setConstant(255);
|
||||
data.set_texture(R,G,B,A);
|
||||
const Eigen::Vector3d w(1,1,1);
|
||||
data.uniform_colors( w*0.1,w,w);
|
||||
data.show_texture = true;
|
||||
return true;
|
||||
}
|
||||
#endif
|
29
include/sphere.h
Normal file
|
@ -0,0 +1,29 @@
|
|||
#ifndef SPHERE_H
|
||||
#define SPHERE_H
|
||||
#include <Eigen/Core>
|
||||
|
||||
// Construct a quad mesh of a sphere wth num_faces_u × num_faces_v faces
|
||||
// using a latitude-longitude Mercator parameterization.
|
||||
//
|
||||
// Inputs:
|
||||
// num_faces_u number of faces in the longitudinal direction
|
||||
// num_faces_v number of faces in the latitudinal direction
|
||||
// Outputs:
|
||||
// V #V by 3 list of 3D corner vertex positions
|
||||
// F #F by 4 list of quad face indices into rows of V
|
||||
// UV #UV by 2 list of corner parameterization positions
|
||||
// UF #F by 4 list of quad face indices into rows of UV
|
||||
// NV #NV by 3 list of 3D unit normal vectors
|
||||
// NF #F by 4 list of quad face indices into rows of NV
|
||||
void sphere(
|
||||
const int num_faces_u,
|
||||
const int num_faces_v,
|
||||
Eigen::MatrixXd & V,
|
||||
Eigen::MatrixXi & F,
|
||||
Eigen::MatrixXd & UV,
|
||||
Eigen::MatrixXi & UF,
|
||||
Eigen::MatrixXd & NV,
|
||||
Eigen::MatrixXi & NF);
|
||||
|
||||
#endif
|
||||
|
18
include/triangle_area_normal.h
Normal file
|
@ -0,0 +1,18 @@
|
|||
#ifndef TRIANGLE_AREA_NORMAL_H
|
||||
#define TRIANGLE_AREA_NORMAL_H
|
||||
#include <Eigen/Core>
|
||||
|
||||
// Compute the normal vector of a 3D triangle given its corner locations. The
|
||||
// output vector should have length equal to the area of the triangle.
|
||||
//
|
||||
// Inputs:
|
||||
// a 3D position of the first corner as a **row vector**
|
||||
// b 3D position of the second corner as a **row vector**
|
||||
// c 3D position of the third corner as a **row vector**
|
||||
// Returns the area normal of the triangle as a 3D row vector
|
||||
Eigen::RowVector3d triangle_area_normal(
|
||||
const Eigen::RowVector3d & a,
|
||||
const Eigen::RowVector3d & b,
|
||||
const Eigen::RowVector3d & c);
|
||||
#endif
|
||||
|
19
include/vertex_triangle_adjacency.h
Normal file
|
@ -0,0 +1,19 @@
|
|||
#ifndef VERTEX_TRIANGLE_ADJACENCY_H
|
||||
#define VERTEX_TRIANGLE_ADJACENCY_H
|
||||
#include <Eigen/Core>
|
||||
#include <vector>
|
||||
// Compute a vertex-triangle adjacency list. For each vertex store a list of all
|
||||
// incident faces.
|
||||
//
|
||||
// Inputs:
|
||||
// F #F by 3 list of mesh triangle indices
|
||||
// num_vertices number of vertices (i.e., V.rows(); usually ==F.maxCoeff()+1)
|
||||
// Outputs:
|
||||
// VF num_verticess-long list of lists so that f=VF[i][j] means that face f
|
||||
// is the jth face among those incident on vertex i. Adjacency faces are
|
||||
// listed in no particular order (but no duplicates).
|
||||
void vertex_triangle_adjacency(
|
||||
const Eigen::MatrixXi & F,
|
||||
const int num_vertices,
|
||||
std::vector<std::vector<int> > & VF);
|
||||
#endif
|
24
include/write_obj.h
Normal file
|
@ -0,0 +1,24 @@
|
|||
#ifndef WRITE_OBJ_H
|
||||
#define WRITE_OBJ_H
|
||||
#include <Eigen/Core>
|
||||
#include <string>
|
||||
// Write a triangle or quad mesh to a .obj file
|
||||
//
|
||||
// Inputs:
|
||||
// filename path to .obj file
|
||||
// V #V by 3 list of vertex positions
|
||||
// F #F by poly=(3 or 4) list of mesh face indices into V
|
||||
// UV #UV by 2 list of UV positions
|
||||
// UF #F by poly list of mesh face indices into UV
|
||||
// NV #NV by 3 list of normal vectors
|
||||
// NF #F by poly list of mesh face indices into NV
|
||||
// Returns true if write was successful
|
||||
bool write_obj(
|
||||
const std::string & filename,
|
||||
const Eigen::MatrixXd & V,
|
||||
const Eigen::MatrixXi & F,
|
||||
const Eigen::MatrixXd & UV,
|
||||
const Eigen::MatrixXi & UF,
|
||||
const Eigen::MatrixXd & NV,
|
||||
const Eigen::MatrixXi & NF);
|
||||
#endif
|
9
markdown/0e51a2dede42189d77627c4d742822c3.svg
Normal file
|
@ -0,0 +1,9 @@
|
|||
<ns0:svg xmlns:ns0="http://www.w3.org/2000/svg" xmlns:ns1="http://www.w3.org/1999/xlink" height="8.578936000000013pt" readme2tex:offset="-6.217248937900877e-15" version="1.1" viewBox="-52.07469 -66.326817 8.747333999999995 8.578936000000013" width="8.747333999999995pt" xmlns:readme2tex="http://github.com/leegao/readme2tex/">
|
||||
<ns0:defs>
|
||||
<ns0:path d="M0.876712 -0.587796C0.846824 -0.438356 0.787049 -0.209215 0.787049 -0.159402C0.787049 0.019925 0.926526 0.109589 1.075965 0.109589C1.195517 0.109589 1.374844 0.029888 1.444583 -0.169365C1.454545 -0.18929 1.574097 -0.657534 1.633873 -0.9066L1.853051 -1.803238C1.912827 -2.022416 1.972603 -2.241594 2.022416 -2.470735C2.062267 -2.6401 2.141968 -2.929016 2.15193 -2.968867C2.30137 -3.277709 2.82939 -4.184309 3.775841 -4.184309C4.224159 -4.184309 4.313823 -3.815691 4.313823 -3.486924C4.313823 -3.237858 4.244085 -2.958904 4.164384 -2.660025L3.88543 -1.504359L3.686177 -0.747198C3.646326 -0.547945 3.556663 -0.209215 3.556663 -0.159402C3.556663 0.019925 3.696139 0.109589 3.845579 0.109589C4.154421 0.109589 4.214197 -0.139477 4.293898 -0.458281C4.433375 -1.016189 4.801993 -2.470735 4.891656 -2.859278C4.921544 -2.988792 5.449564 -4.184309 6.535492 -4.184309C6.963885 -4.184309 7.073474 -3.845579 7.073474 -3.486924C7.073474 -2.919054 6.655044 -1.783313 6.455791 -1.255293C6.366127 -1.016189 6.326276 -0.9066 6.326276 -0.707347C6.326276 -0.239103 6.674969 0.109589 7.143213 0.109589C8.079701 0.109589 8.448319 -1.344956 8.448319 -1.424658C8.448319 -1.524284 8.358655 -1.524284 8.328767 -1.524284C8.229141 -1.524284 8.229141 -1.494396 8.179328 -1.344956C8.029888 -0.816936 7.711083 -0.109589 7.163138 -0.109589C6.993773 -0.109589 6.924035 -0.209215 6.924035 -0.438356C6.924035 -0.687422 7.013699 -0.926526 7.103362 -1.145704C7.292653 -1.663761 7.711083 -2.769614 7.711083 -3.337484C7.711083 -3.985056 7.312578 -4.403487 6.56538 -4.403487S5.310087 -3.965131 4.941469 -3.437111C4.931507 -3.566625 4.901619 -3.905355 4.622665 -4.144458C4.373599 -4.353674 4.054795 -4.403487 3.805729 -4.403487C2.909091 -4.403487 2.420922 -3.765878 2.251557 -3.536737C2.201743 -4.104608 1.783313 -4.403487 1.334994 -4.403487C0.876712 -4.403487 0.687422 -4.014944 0.597758 -3.835616C0.418431 -3.486924 0.288917 -2.899128 0.288917 -2.86924C0.288917 -2.769614 0.388543 -2.769614 0.408468 -2.769614C0.508095 -2.769614 0.518057 -2.779577 0.577833 -2.998755C0.747198 -3.706102 0.946451 -4.184309 1.305106 -4.184309C1.464508 -4.184309 1.613948 -4.104608 1.613948 -3.726027C1.613948 -3.516812 1.58406 -3.407223 1.454545 -2.889166L0.876712 -0.587796Z" id="g0-109" />
|
||||
<ns0:path d="M3.317559 -0.757161C3.35741 -0.358655 3.626401 0.059776 4.094645 0.059776C4.303861 0.059776 4.911582 -0.079701 4.911582 -0.886675V-1.444583H4.662516V-0.886675C4.662516 -0.308842 4.41345 -0.249066 4.303861 -0.249066C3.975093 -0.249066 3.935243 -0.697385 3.935243 -0.747198V-2.739726C3.935243 -3.158157 3.935243 -3.5467 3.576588 -3.915318C3.188045 -4.303861 2.689913 -4.463263 2.211706 -4.463263C1.39477 -4.463263 0.707347 -3.995019 0.707347 -3.337484C0.707347 -3.038605 0.9066 -2.86924 1.165629 -2.86924C1.444583 -2.86924 1.62391 -3.068493 1.62391 -3.327522C1.62391 -3.447073 1.574097 -3.775841 1.115816 -3.785803C1.384807 -4.134496 1.872976 -4.244085 2.191781 -4.244085C2.67995 -4.244085 3.247821 -3.855542 3.247821 -2.968867V-2.600249C2.739726 -2.570361 2.042341 -2.540473 1.414695 -2.241594C0.667497 -1.902864 0.418431 -1.384807 0.418431 -0.946451C0.418431 -0.139477 1.384807 0.109589 2.012453 0.109589C2.669988 0.109589 3.128269 -0.288917 3.317559 -0.757161ZM3.247821 -2.391034V-1.39477C3.247821 -0.448319 2.530511 -0.109589 2.082192 -0.109589C1.594022 -0.109589 1.185554 -0.458281 1.185554 -0.956413C1.185554 -1.504359 1.603985 -2.331258 3.247821 -2.391034Z" id="g1-97" />
|
||||
</ns0:defs>
|
||||
<ns0:g fill-opacity="0.9" id="page1">
|
||||
<ns0:use x="-52.07469" y="-62.037349" ns1:href="#g0-109" />
|
||||
</ns0:g>
|
||||
</ns0:svg>
|
9
markdown/190083ef7a1625fbc75f243cffb9c96d.svg
Normal file
|
@ -0,0 +1,9 @@
|
|||
<ns0:svg xmlns:ns0="http://www.w3.org/2000/svg" xmlns:ns1="http://www.w3.org/1999/xlink" height="13.837003999999993pt" readme2tex:offset="1.9371820000000035" version="1.1" viewBox="-52.07469 -68.955851 5.949948999999995 13.837003999999993" width="5.949948999999995pt" xmlns:readme2tex="http://github.com/leegao/readme2tex/">
|
||||
<ns0:defs>
|
||||
<ns0:path d="M3.656289 -3.985056H4.513076C4.712329 -3.985056 4.811955 -3.985056 4.811955 -4.184309C4.811955 -4.293898 4.712329 -4.293898 4.542964 -4.293898H3.716065L3.92528 -5.429639C3.965131 -5.638854 4.104608 -6.346202 4.164384 -6.465753C4.254047 -6.655044 4.423412 -6.804483 4.632628 -6.804483C4.672478 -6.804483 4.931507 -6.804483 5.120797 -6.625156C4.682441 -6.585305 4.582814 -6.236613 4.582814 -6.087173C4.582814 -5.858032 4.762142 -5.738481 4.951432 -5.738481C5.210461 -5.738481 5.499377 -5.957659 5.499377 -6.336239C5.499377 -6.794521 5.041096 -7.023661 4.632628 -7.023661C4.293898 -7.023661 3.666252 -6.844334 3.367372 -5.858032C3.307597 -5.648817 3.277709 -5.549191 3.038605 -4.293898H2.351183C2.161893 -4.293898 2.052304 -4.293898 2.052304 -4.104608C2.052304 -3.985056 2.141968 -3.985056 2.331258 -3.985056H2.988792L2.241594 -0.049813C2.062267 0.916563 1.892902 1.823163 1.374844 1.823163C1.334994 1.823163 1.085928 1.823163 0.896638 1.643836C1.354919 1.613948 1.444583 1.255293 1.444583 1.105853C1.444583 0.876712 1.265255 0.757161 1.075965 0.757161C0.816936 0.757161 0.52802 0.976339 0.52802 1.354919C0.52802 1.803238 0.966376 2.042341 1.374844 2.042341C1.92279 2.042341 2.321295 1.454545 2.500623 1.075965C2.819427 0.448319 3.048568 -0.757161 3.058531 -0.826899L3.656289 -3.985056Z" id="g0-102" />
|
||||
<ns0:path d="M3.317559 -0.757161C3.35741 -0.358655 3.626401 0.059776 4.094645 0.059776C4.303861 0.059776 4.911582 -0.079701 4.911582 -0.886675V-1.444583H4.662516V-0.886675C4.662516 -0.308842 4.41345 -0.249066 4.303861 -0.249066C3.975093 -0.249066 3.935243 -0.697385 3.935243 -0.747198V-2.739726C3.935243 -3.158157 3.935243 -3.5467 3.576588 -3.915318C3.188045 -4.303861 2.689913 -4.463263 2.211706 -4.463263C1.39477 -4.463263 0.707347 -3.995019 0.707347 -3.337484C0.707347 -3.038605 0.9066 -2.86924 1.165629 -2.86924C1.444583 -2.86924 1.62391 -3.068493 1.62391 -3.327522C1.62391 -3.447073 1.574097 -3.775841 1.115816 -3.785803C1.384807 -4.134496 1.872976 -4.244085 2.191781 -4.244085C2.67995 -4.244085 3.247821 -3.855542 3.247821 -2.968867V-2.600249C2.739726 -2.570361 2.042341 -2.540473 1.414695 -2.241594C0.667497 -1.902864 0.418431 -1.384807 0.418431 -0.946451C0.418431 -0.139477 1.384807 0.109589 2.012453 0.109589C2.669988 0.109589 3.128269 -0.288917 3.317559 -0.757161ZM3.247821 -2.391034V-1.39477C3.247821 -0.448319 2.530511 -0.109589 2.082192 -0.109589C1.594022 -0.109589 1.185554 -0.458281 1.185554 -0.956413C1.185554 -1.504359 1.603985 -2.331258 3.247821 -2.391034Z" id="g1-97" />
|
||||
</ns0:defs>
|
||||
<ns0:g fill-opacity="0.9" id="page1">
|
||||
<ns0:use x="-52.07469" y="-62.037349" ns1:href="#g0-102" />
|
||||
</ns0:g>
|
||||
</ns0:svg>
|
9
markdown/1926c401973f24b4db4f35dca2eb381d.svg
Normal file
|
@ -0,0 +1,9 @@
|
|||
<ns0:svg xmlns:ns0="http://www.w3.org/2000/svg" xmlns:ns1="http://www.w3.org/1999/xlink" height="8.578936000000013pt" readme2tex:offset="-6.217248937900877e-15" version="1.1" viewBox="-52.07469 -66.326817 4.043873999999995 8.578936000000013" width="4.043873999999995pt" xmlns:readme2tex="http://github.com/leegao/readme2tex/">
|
||||
<ns0:defs>
|
||||
<ns0:path d="M2.968867 -2.251557C3.128269 -2.251557 3.307597 -2.251557 3.307597 -2.420922C3.307597 -2.560399 3.188045 -2.560399 3.01868 -2.560399H1.404732C1.643836 -3.407223 2.201743 -3.985056 3.108344 -3.985056H3.417186C3.58655 -3.985056 3.745953 -3.985056 3.745953 -4.154421C3.745953 -4.293898 3.616438 -4.293898 3.447073 -4.293898H3.098381C1.803238 -4.293898 0.468244 -3.297634 0.468244 -1.77335C0.468244 -0.67746 1.215442 0.109589 2.271482 0.109589C2.919054 0.109589 3.566625 -0.288917 3.566625 -0.398506C3.566625 -0.428394 3.556663 -0.537983 3.466999 -0.537983C3.447073 -0.537983 3.427148 -0.537983 3.337484 -0.478207C3.028643 -0.278954 2.660025 -0.109589 2.291407 -0.109589C1.713574 -0.109589 1.215442 -0.52802 1.215442 -1.404732C1.215442 -1.753425 1.295143 -2.132005 1.325031 -2.251557H2.968867Z" id="g0-15" />
|
||||
<ns0:path d="M3.317559 -0.757161C3.35741 -0.358655 3.626401 0.059776 4.094645 0.059776C4.303861 0.059776 4.911582 -0.079701 4.911582 -0.886675V-1.444583H4.662516V-0.886675C4.662516 -0.308842 4.41345 -0.249066 4.303861 -0.249066C3.975093 -0.249066 3.935243 -0.697385 3.935243 -0.747198V-2.739726C3.935243 -3.158157 3.935243 -3.5467 3.576588 -3.915318C3.188045 -4.303861 2.689913 -4.463263 2.211706 -4.463263C1.39477 -4.463263 0.707347 -3.995019 0.707347 -3.337484C0.707347 -3.038605 0.9066 -2.86924 1.165629 -2.86924C1.444583 -2.86924 1.62391 -3.068493 1.62391 -3.327522C1.62391 -3.447073 1.574097 -3.775841 1.115816 -3.785803C1.384807 -4.134496 1.872976 -4.244085 2.191781 -4.244085C2.67995 -4.244085 3.247821 -3.855542 3.247821 -2.968867V-2.600249C2.739726 -2.570361 2.042341 -2.540473 1.414695 -2.241594C0.667497 -1.902864 0.418431 -1.384807 0.418431 -0.946451C0.418431 -0.139477 1.384807 0.109589 2.012453 0.109589C2.669988 0.109589 3.128269 -0.288917 3.317559 -0.757161ZM3.247821 -2.391034V-1.39477C3.247821 -0.448319 2.530511 -0.109589 2.082192 -0.109589C1.594022 -0.109589 1.185554 -0.458281 1.185554 -0.956413C1.185554 -1.504359 1.603985 -2.331258 3.247821 -2.391034Z" id="g1-97" />
|
||||
</ns0:defs>
|
||||
<ns0:g fill-opacity="0.9" id="page1">
|
||||
<ns0:use x="-52.07469" y="-62.037349" ns1:href="#g0-15" />
|
||||
</ns0:g>
|
||||
</ns0:svg>
|
11
markdown/4e86697c693f7bd2ebcf1bf515fbba2f.svg
Normal file
|
@ -0,0 +1,11 @@
|
|||
<ns0:svg xmlns:ns0="http://www.w3.org/2000/svg" xmlns:ns1="http://www.w3.org/1999/xlink" height="8.85568400000001pt" readme2tex:offset="2.8504079999999945" version="1.1" viewBox="-52.07469 -66.465191 9.746438999999995 8.85568400000001" width="9.746438999999995pt" xmlns:readme2tex="http://github.com/leegao/readme2tex/">
|
||||
<ns0:defs>
|
||||
<ns0:path d="M3.061519 -4.358655C3.061519 -4.47721 2.970859 -4.623661 2.782565 -4.623661C2.580324 -4.623661 2.39203 -4.428394 2.39203 -4.2401C2.39203 -4.128518 2.475716 -3.975093 2.670984 -3.975093C2.859278 -3.975093 3.061519 -4.156413 3.061519 -4.358655ZM1.583064 0.341719C1.464508 0.822914 1.094894 1.227397 0.683437 1.227397C0.592777 1.227397 0.509091 1.21345 0.432379 1.185554C0.613699 1.101868 0.669489 0.934496 0.669489 0.829888C0.669489 0.662516 0.536986 0.571856 0.397509 0.571856C0.18132 0.571856 0 0.760149 0 0.983313C0 1.248319 0.27198 1.422665 0.690411 1.422665S1.924782 1.171606 2.140971 0.320797L2.768618 -2.175841C2.789539 -2.252553 2.803487 -2.315318 2.803487 -2.419925C2.803487 -2.803487 2.475716 -3.075467 2.057285 -3.075467C1.283188 -3.075467 0.836862 -2.106102 0.836862 -2.008468C0.836862 -1.917808 0.934496 -1.917808 0.955417 -1.917808C1.039103 -1.917808 1.046077 -1.93873 1.094894 -2.043337C1.26924 -2.447821 1.63188 -2.880199 2.036364 -2.880199C2.21071 -2.880199 2.273474 -2.761644 2.273474 -2.538481C2.273474 -2.461768 2.259527 -2.364134 2.252553 -2.329265L1.583064 0.341719Z" id="g1-106" />
|
||||
<ns0:path d="M5.041096 -3.745953C5.100872 -3.88543 5.140722 -3.955168 5.778331 -3.955168V-4.423412C5.529265 -4.403487 5.240349 -4.393524 4.991283 -4.393524S4.293898 -4.41345 4.084682 -4.423412V-3.955168C4.273973 -3.955168 4.562889 -3.92528 4.562889 -3.845579C4.562889 -3.835616 4.552927 -3.815691 4.513076 -3.726027L3.35741 -1.235367L2.092154 -3.955168H2.630137V-4.423412C2.30137 -4.403487 1.404732 -4.393524 1.39477 -4.393524C1.115816 -4.393524 0.667497 -4.41345 0.259029 -4.423412V-3.955168H0.896638L2.6401 -0.209215C2.759651 0.039851 2.889166 0.039851 3.01868 0.039851C3.188045 0.039851 3.287671 0.009963 3.387298 -0.199253L5.041096 -3.745953Z" id="g0-118" />
|
||||
<ns0:path d="M3.317559 -0.757161C3.35741 -0.358655 3.626401 0.059776 4.094645 0.059776C4.303861 0.059776 4.911582 -0.079701 4.911582 -0.886675V-1.444583H4.662516V-0.886675C4.662516 -0.308842 4.41345 -0.249066 4.303861 -0.249066C3.975093 -0.249066 3.935243 -0.697385 3.935243 -0.747198V-2.739726C3.935243 -3.158157 3.935243 -3.5467 3.576588 -3.915318C3.188045 -4.303861 2.689913 -4.463263 2.211706 -4.463263C1.39477 -4.463263 0.707347 -3.995019 0.707347 -3.337484C0.707347 -3.038605 0.9066 -2.86924 1.165629 -2.86924C1.444583 -2.86924 1.62391 -3.068493 1.62391 -3.327522C1.62391 -3.447073 1.574097 -3.775841 1.115816 -3.785803C1.384807 -4.134496 1.872976 -4.244085 2.191781 -4.244085C2.67995 -4.244085 3.247821 -3.855542 3.247821 -2.968867V-2.600249C2.739726 -2.570361 2.042341 -2.540473 1.414695 -2.241594C0.667497 -1.902864 0.418431 -1.384807 0.418431 -0.946451C0.418431 -0.139477 1.384807 0.109589 2.012453 0.109589C2.669988 0.109589 3.128269 -0.288917 3.317559 -0.757161ZM3.247821 -2.391034V-1.39477C3.247821 -0.448319 2.530511 -0.109589 2.082192 -0.109589C1.594022 -0.109589 1.185554 -0.458281 1.185554 -0.956413C1.185554 -1.504359 1.603985 -2.331258 3.247821 -2.391034Z" id="g2-97" />
|
||||
</ns0:defs>
|
||||
<ns0:g fill-opacity="0.9" id="page1">
|
||||
<ns0:use x="-52.07469" y="-62.037349" ns1:href="#g0-118" />
|
||||
<ns0:use x="-46.027953" y="-60.542968" ns1:href="#g1-106" />
|
||||
</ns0:g>
|
||||
</ns0:svg>
|
11
markdown/5474c8baa2bc6feabb0eac4237772aab.svg
Normal file
|
@ -0,0 +1,11 @@
|
|||
<ns0:svg xmlns:ns0="http://www.w3.org/2000/svg" xmlns:ns1="http://www.w3.org/1999/xlink" height="8.85568400000001pt" readme2tex:offset="1.4943809999999944" version="1.1" viewBox="-52.07469 -66.465191 8.865463999999994 8.85568400000001" width="8.865463999999994pt" xmlns:readme2tex="http://github.com/leegao/readme2tex/">
|
||||
<ns0:defs>
|
||||
<ns0:path d="M2.259527 -4.358655C2.259527 -4.470237 2.175841 -4.623661 1.980573 -4.623661C1.792279 -4.623661 1.590037 -4.442341 1.590037 -4.2401C1.590037 -4.121544 1.680697 -3.975093 1.868991 -3.975093C2.071233 -3.975093 2.259527 -4.170361 2.259527 -4.358655ZM0.836862 -0.81594C0.808966 -0.72528 0.774097 -0.641594 0.774097 -0.523039C0.774097 -0.195268 1.053051 0.069738 1.436613 0.069738C2.133998 0.069738 2.440847 -0.892653 2.440847 -0.99726C2.440847 -1.08792 2.350187 -1.08792 2.329265 -1.08792C2.231631 -1.08792 2.224658 -1.046077 2.196762 -0.969365C2.036364 -0.411457 1.729514 -0.125529 1.457534 -0.125529C1.318057 -0.125529 1.283188 -0.216189 1.283188 -0.369614C1.283188 -0.530012 1.332005 -0.662516 1.39477 -0.81594C1.464508 -1.004234 1.54122 -1.192528 1.617933 -1.373848C1.680697 -1.54122 1.931756 -2.175841 1.959651 -2.259527C1.980573 -2.329265 2.001494 -2.412951 2.001494 -2.48269C2.001494 -2.810461 1.72254 -3.075467 1.338979 -3.075467C0.648568 -3.075467 0.327771 -2.127024 0.327771 -2.008468C0.327771 -1.917808 0.425405 -1.917808 0.446326 -1.917808C0.54396 -1.917808 0.550934 -1.952677 0.571856 -2.02939C0.753176 -2.629141 1.060025 -2.880199 1.318057 -2.880199C1.429639 -2.880199 1.492403 -2.824408 1.492403 -2.636115C1.492403 -2.475716 1.45056 -2.371108 1.276214 -1.93873L0.836862 -0.81594Z" id="g1-105" />
|
||||
<ns0:path d="M5.041096 -3.745953C5.100872 -3.88543 5.140722 -3.955168 5.778331 -3.955168V-4.423412C5.529265 -4.403487 5.240349 -4.393524 4.991283 -4.393524S4.293898 -4.41345 4.084682 -4.423412V-3.955168C4.273973 -3.955168 4.562889 -3.92528 4.562889 -3.845579C4.562889 -3.835616 4.552927 -3.815691 4.513076 -3.726027L3.35741 -1.235367L2.092154 -3.955168H2.630137V-4.423412C2.30137 -4.403487 1.404732 -4.393524 1.39477 -4.393524C1.115816 -4.393524 0.667497 -4.41345 0.259029 -4.423412V-3.955168H0.896638L2.6401 -0.209215C2.759651 0.039851 2.889166 0.039851 3.01868 0.039851C3.188045 0.039851 3.287671 0.009963 3.387298 -0.199253L5.041096 -3.745953Z" id="g0-118" />
|
||||
<ns0:path d="M3.317559 -0.757161C3.35741 -0.358655 3.626401 0.059776 4.094645 0.059776C4.303861 0.059776 4.911582 -0.079701 4.911582 -0.886675V-1.444583H4.662516V-0.886675C4.662516 -0.308842 4.41345 -0.249066 4.303861 -0.249066C3.975093 -0.249066 3.935243 -0.697385 3.935243 -0.747198V-2.739726C3.935243 -3.158157 3.935243 -3.5467 3.576588 -3.915318C3.188045 -4.303861 2.689913 -4.463263 2.211706 -4.463263C1.39477 -4.463263 0.707347 -3.995019 0.707347 -3.337484C0.707347 -3.038605 0.9066 -2.86924 1.165629 -2.86924C1.444583 -2.86924 1.62391 -3.068493 1.62391 -3.327522C1.62391 -3.447073 1.574097 -3.775841 1.115816 -3.785803C1.384807 -4.134496 1.872976 -4.244085 2.191781 -4.244085C2.67995 -4.244085 3.247821 -3.855542 3.247821 -2.968867V-2.600249C2.739726 -2.570361 2.042341 -2.540473 1.414695 -2.241594C0.667497 -1.902864 0.418431 -1.384807 0.418431 -0.946451C0.418431 -0.139477 1.384807 0.109589 2.012453 0.109589C2.669988 0.109589 3.128269 -0.288917 3.317559 -0.757161ZM3.247821 -2.391034V-1.39477C3.247821 -0.448319 2.530511 -0.109589 2.082192 -0.109589C1.594022 -0.109589 1.185554 -0.458281 1.185554 -0.956413C1.185554 -1.504359 1.603985 -2.331258 3.247821 -2.391034Z" id="g2-97" />
|
||||
</ns0:defs>
|
||||
<ns0:g fill-opacity="0.9" id="page1">
|
||||
<ns0:use x="-52.07469" y="-62.037349" ns1:href="#g0-118" />
|
||||
<ns0:use x="-46.027953" y="-60.542968" ns1:href="#g1-105" />
|
||||
</ns0:g>
|
||||
</ns0:svg>
|
9
markdown/55a049b8f161ae7cfeb0197d75aff967.svg
Normal file
|
@ -0,0 +1,9 @@
|
|||
<ns0:svg xmlns:ns0="http://www.w3.org/2000/svg" xmlns:ns1="http://www.w3.org/1999/xlink" height="8.578936000000013pt" readme2tex:offset="-6.217248937900877e-15" version="1.1" viewBox="-52.07469 -66.326817 5.979924999999994 8.578936000000013" width="5.979924999999994pt" xmlns:readme2tex="http://github.com/leegao/readme2tex/">
|
||||
<ns0:defs>
|
||||
<ns0:path d="M0.876712 -0.587796C0.846824 -0.438356 0.787049 -0.209215 0.787049 -0.159402C0.787049 0.019925 0.926526 0.109589 1.075965 0.109589C1.195517 0.109589 1.374844 0.029888 1.444583 -0.169365C1.454545 -0.18929 1.574097 -0.657534 1.633873 -0.9066L1.853051 -1.803238C1.912827 -2.022416 1.972603 -2.241594 2.022416 -2.470735C2.062267 -2.6401 2.141968 -2.929016 2.15193 -2.968867C2.30137 -3.277709 2.82939 -4.184309 3.775841 -4.184309C4.224159 -4.184309 4.313823 -3.815691 4.313823 -3.486924C4.313823 -2.86924 3.825654 -1.594022 3.666252 -1.165629C3.576588 -0.936488 3.566625 -0.816936 3.566625 -0.707347C3.566625 -0.239103 3.915318 0.109589 4.383562 0.109589C5.32005 0.109589 5.688667 -1.344956 5.688667 -1.424658C5.688667 -1.524284 5.599004 -1.524284 5.569116 -1.524284C5.469489 -1.524284 5.469489 -1.494396 5.419676 -1.344956C5.220423 -0.667497 4.891656 -0.109589 4.403487 -0.109589C4.234122 -0.109589 4.164384 -0.209215 4.164384 -0.438356C4.164384 -0.687422 4.254047 -0.926526 4.343711 -1.145704C4.533001 -1.673724 4.951432 -2.769614 4.951432 -3.337484C4.951432 -4.004981 4.523039 -4.403487 3.805729 -4.403487C2.909091 -4.403487 2.420922 -3.765878 2.251557 -3.536737C2.201743 -4.094645 1.793275 -4.403487 1.334994 -4.403487S0.687422 -4.014944 0.587796 -3.835616C0.428394 -3.496887 0.288917 -2.909091 0.288917 -2.86924C0.288917 -2.769614 0.388543 -2.769614 0.408468 -2.769614C0.508095 -2.769614 0.518057 -2.779577 0.577833 -2.998755C0.747198 -3.706102 0.946451 -4.184309 1.305106 -4.184309C1.504359 -4.184309 1.613948 -4.054795 1.613948 -3.726027C1.613948 -3.516812 1.58406 -3.407223 1.454545 -2.889166L0.876712 -0.587796Z" id="g0-110" />
|
||||
<ns0:path d="M3.317559 -0.757161C3.35741 -0.358655 3.626401 0.059776 4.094645 0.059776C4.303861 0.059776 4.911582 -0.079701 4.911582 -0.886675V-1.444583H4.662516V-0.886675C4.662516 -0.308842 4.41345 -0.249066 4.303861 -0.249066C3.975093 -0.249066 3.935243 -0.697385 3.935243 -0.747198V-2.739726C3.935243 -3.158157 3.935243 -3.5467 3.576588 -3.915318C3.188045 -4.303861 2.689913 -4.463263 2.211706 -4.463263C1.39477 -4.463263 0.707347 -3.995019 0.707347 -3.337484C0.707347 -3.038605 0.9066 -2.86924 1.165629 -2.86924C1.444583 -2.86924 1.62391 -3.068493 1.62391 -3.327522C1.62391 -3.447073 1.574097 -3.775841 1.115816 -3.785803C1.384807 -4.134496 1.872976 -4.244085 2.191781 -4.244085C2.67995 -4.244085 3.247821 -3.855542 3.247821 -2.968867V-2.600249C2.739726 -2.570361 2.042341 -2.540473 1.414695 -2.241594C0.667497 -1.902864 0.418431 -1.384807 0.418431 -0.946451C0.418431 -0.139477 1.384807 0.109589 2.012453 0.109589C2.669988 0.109589 3.128269 -0.288917 3.317559 -0.757161ZM3.247821 -2.391034V-1.39477C3.247821 -0.448319 2.530511 -0.109589 2.082192 -0.109589C1.594022 -0.109589 1.185554 -0.458281 1.185554 -0.956413C1.185554 -1.504359 1.603985 -2.331258 3.247821 -2.391034Z" id="g1-97" />
|
||||
</ns0:defs>
|
||||
<ns0:g fill-opacity="0.9" id="page1">
|
||||
<ns0:use x="-52.07469" y="-62.037349" ns1:href="#g0-110" />
|
||||
</ns0:g>
|
||||
</ns0:svg>
|
16
markdown/567132d8a883ab35cbb45db628ebb96e.svg
Normal file
|
@ -0,0 +1,16 @@
|
|||
<ns0:svg xmlns:ns0="http://www.w3.org/2000/svg" xmlns:ns1="http://www.w3.org/1999/xlink" height="13.837003999999993pt" readme2tex:offset="1.9371820000000035" version="1.1" viewBox="-52.07469 -68.955851 21.907595999999995 13.837003999999993" width="21.907595999999995pt" xmlns:readme2tex="http://github.com/leegao/readme2tex/">
|
||||
<ns0:defs>
|
||||
<ns0:path d="M2.022416 -0.009963C2.022416 -0.667497 1.77335 -1.05604 1.384807 -1.05604C1.05604 -1.05604 0.856787 -0.806974 0.856787 -0.52802C0.856787 -0.259029 1.05604 0 1.384807 0C1.504359 0 1.633873 -0.039851 1.733499 -0.129514C1.763387 -0.14944 1.77335 -0.159402 1.783313 -0.159402S1.803238 -0.14944 1.803238 -0.009963C1.803238 0.727273 1.454545 1.325031 1.125778 1.653798C1.016189 1.763387 1.016189 1.783313 1.016189 1.8132C1.016189 1.882939 1.066002 1.92279 1.115816 1.92279C1.225405 1.92279 2.022416 1.155666 2.022416 -0.009963Z" id="g0-59" />
|
||||
<ns0:path d="M2.82939 -6.22665C2.82939 -6.425903 2.689913 -6.585305 2.460772 -6.585305C2.191781 -6.585305 1.92279 -6.326276 1.92279 -6.057285C1.92279 -5.867995 2.062267 -5.69863 2.30137 -5.69863C2.530511 -5.69863 2.82939 -5.927771 2.82939 -6.22665ZM2.072229 -2.480697C2.191781 -2.769614 2.191781 -2.789539 2.291407 -3.058531C2.371108 -3.257783 2.420922 -3.39726 2.420922 -3.58655C2.420922 -4.034869 2.102117 -4.403487 1.603985 -4.403487C0.667497 -4.403487 0.288917 -2.958904 0.288917 -2.86924C0.288917 -2.769614 0.388543 -2.769614 0.408468 -2.769614C0.508095 -2.769614 0.518057 -2.789539 0.56787 -2.948941C0.836862 -3.88543 1.235367 -4.184309 1.574097 -4.184309C1.653798 -4.184309 1.823163 -4.184309 1.823163 -3.865504C1.823163 -3.656289 1.753425 -3.447073 1.713574 -3.347447C1.633873 -3.088418 1.185554 -1.932752 1.026152 -1.504359C0.926526 -1.24533 0.797011 -0.916563 0.797011 -0.707347C0.797011 -0.239103 1.135741 0.109589 1.613948 0.109589C2.550436 0.109589 2.919054 -1.334994 2.919054 -1.424658C2.919054 -1.524284 2.82939 -1.524284 2.799502 -1.524284C2.699875 -1.524284 2.699875 -1.494396 2.650062 -1.344956C2.470735 -0.71731 2.141968 -0.109589 1.633873 -0.109589C1.464508 -0.109589 1.39477 -0.209215 1.39477 -0.438356C1.39477 -0.687422 1.454545 -0.826899 1.683686 -1.43462L2.072229 -2.480697Z" id="g0-105" />
|
||||
<ns0:path d="M3.955168 -6.22665C3.955168 -6.41594 3.815691 -6.585305 3.576588 -6.585305C3.347447 -6.585305 3.048568 -6.356164 3.048568 -6.057285C3.048568 -5.858032 3.188045 -5.69863 3.417186 -5.69863C3.686177 -5.69863 3.955168 -5.957659 3.955168 -6.22665ZM1.952677 0.498132C1.763387 1.255293 1.285181 1.823163 0.727273 1.823163C0.667497 1.823163 0.518057 1.823163 0.33873 1.733499C0.637609 1.663761 0.787049 1.404732 0.787049 1.205479C0.787049 1.046077 0.67746 0.856787 0.408468 0.856787C0.159402 0.856787 -0.129514 1.066002 -0.129514 1.424658C-0.129514 1.823163 0.268991 2.042341 0.747198 2.042341C1.444583 2.042341 2.371108 1.514321 2.620174 0.52802L3.536737 -3.118306C3.58655 -3.317559 3.58655 -3.457036 3.58655 -3.486924C3.58655 -4.054795 3.16812 -4.403487 2.669988 -4.403487C1.653798 -4.403487 1.085928 -2.958904 1.085928 -2.86924C1.085928 -2.769614 1.185554 -2.769614 1.205479 -2.769614C1.295143 -2.769614 1.305106 -2.779577 1.384807 -2.968867C1.633873 -3.576588 2.092154 -4.184309 2.6401 -4.184309C2.779577 -4.184309 2.958904 -4.144458 2.958904 -3.726027C2.958904 -3.496887 2.929016 -3.387298 2.889166 -3.217933L1.952677 0.498132Z" id="g0-106" />
|
||||
<ns0:path d="M2.859278 -6.804483C2.859278 -6.814446 2.859278 -6.914072 2.729763 -6.914072C2.500623 -6.914072 1.77335 -6.834371 1.514321 -6.814446C1.43462 -6.804483 1.325031 -6.794521 1.325031 -6.615193C1.325031 -6.495641 1.414695 -6.495641 1.564134 -6.495641C2.042341 -6.495641 2.062267 -6.425903 2.062267 -6.326276L2.032379 -6.127024L0.587796 -0.388543C0.547945 -0.249066 0.547945 -0.229141 0.547945 -0.169365C0.547945 0.059776 0.747198 0.109589 0.836862 0.109589C0.966376 0.109589 1.115816 0.019925 1.175592 -0.099626C1.225405 -0.18929 1.673724 -2.032379 1.733499 -2.281445C2.072229 -2.251557 2.889166 -2.092154 2.889166 -1.43462C2.889166 -1.364882 2.889166 -1.325031 2.859278 -1.225405C2.839352 -1.105853 2.819427 -0.986301 2.819427 -0.876712C2.819427 -0.288917 3.217933 0.109589 3.73599 0.109589C4.034869 0.109589 4.303861 -0.049813 4.523039 -0.418431C4.772105 -0.856787 4.881694 -1.404732 4.881694 -1.424658C4.881694 -1.524284 4.79203 -1.524284 4.762142 -1.524284C4.662516 -1.524284 4.652553 -1.484433 4.622665 -1.344956C4.423412 -0.617684 4.194271 -0.109589 3.755915 -0.109589C3.566625 -0.109589 3.437111 -0.219178 3.437111 -0.577833C3.437111 -0.747198 3.476961 -0.976339 3.516812 -1.135741C3.556663 -1.305106 3.556663 -1.344956 3.556663 -1.444583C3.556663 -2.092154 2.929016 -2.381071 2.082192 -2.49066C2.391034 -2.669988 2.709838 -2.988792 2.938979 -3.227895C3.417186 -3.755915 3.875467 -4.184309 4.363636 -4.184309C4.423412 -4.184309 4.433375 -4.184309 4.4533 -4.174346C4.572852 -4.154421 4.582814 -4.154421 4.662516 -4.094645C4.682441 -4.084682 4.682441 -4.07472 4.702366 -4.054795C4.224159 -4.024907 4.134496 -3.636364 4.134496 -3.516812C4.134496 -3.35741 4.244085 -3.16812 4.513076 -3.16812C4.772105 -3.16812 5.061021 -3.387298 5.061021 -3.775841C5.061021 -4.07472 4.83188 -4.403487 4.383562 -4.403487C4.104608 -4.403487 3.646326 -4.323786 2.929016 -3.526775C2.590286 -3.148194 2.201743 -2.749689 1.823163 -2.600249L2.859278 -6.804483Z" id="g0-107" />
|
||||
<ns0:path d="M3.317559 -0.757161C3.35741 -0.358655 3.626401 0.059776 4.094645 0.059776C4.303861 0.059776 4.911582 -0.079701 4.911582 -0.886675V-1.444583H4.662516V-0.886675C4.662516 -0.308842 4.41345 -0.249066 4.303861 -0.249066C3.975093 -0.249066 3.935243 -0.697385 3.935243 -0.747198V-2.739726C3.935243 -3.158157 3.935243 -3.5467 3.576588 -3.915318C3.188045 -4.303861 2.689913 -4.463263 2.211706 -4.463263C1.39477 -4.463263 0.707347 -3.995019 0.707347 -3.337484C0.707347 -3.038605 0.9066 -2.86924 1.165629 -2.86924C1.444583 -2.86924 1.62391 -3.068493 1.62391 -3.327522C1.62391 -3.447073 1.574097 -3.775841 1.115816 -3.785803C1.384807 -4.134496 1.872976 -4.244085 2.191781 -4.244085C2.67995 -4.244085 3.247821 -3.855542 3.247821 -2.968867V-2.600249C2.739726 -2.570361 2.042341 -2.540473 1.414695 -2.241594C0.667497 -1.902864 0.418431 -1.384807 0.418431 -0.946451C0.418431 -0.139477 1.384807 0.109589 2.012453 0.109589C2.669988 0.109589 3.128269 -0.288917 3.317559 -0.757161ZM3.247821 -2.391034V-1.39477C3.247821 -0.448319 2.530511 -0.109589 2.082192 -0.109589C1.594022 -0.109589 1.185554 -0.458281 1.185554 -0.956413C1.185554 -1.504359 1.603985 -2.331258 3.247821 -2.391034Z" id="g1-97" />
|
||||
</ns0:defs>
|
||||
<ns0:g fill-opacity="0.9" id="page1">
|
||||
<ns0:use x="-52.07469" y="-62.037349" ns1:href="#g0-105" />
|
||||
<ns0:use x="-48.642431" y="-62.037349" ns1:href="#g0-59" />
|
||||
<ns0:use x="-44.214623" y="-62.037349" ns1:href="#g0-106" />
|
||||
<ns0:use x="-40.095125" y="-62.037349" ns1:href="#g0-59" />
|
||||
<ns0:use x="-35.667317" y="-62.037349" ns1:href="#g0-107" />
|
||||
</ns0:g>
|
||||
</ns0:svg>
|
49
markdown/599fe3b222b5898bd240d6ac12d5c5b5.svg
Normal file
|
@ -0,0 +1,49 @@
|
|||
<ns0:svg xmlns:ns0="http://www.w3.org/2000/svg" xmlns:ns1="http://www.w3.org/1999/xlink" height="25.150068pt" readme2tex:offset="0" version="1.1" viewBox="91.294532 -61.041096 97.819445 25.150068" width="97.819445pt" xmlns:readme2tex="http://github.com/leegao/readme2tex/">
|
||||
<ns0:defs>
|
||||
<ns0:path d="M1.444583 5.818182C1.444583 5.977584 1.444583 6.1868 1.653798 6.1868C1.872976 6.1868 1.872976 5.987547 1.872976 5.818182V0.159402C1.872976 0 1.872976 -0.209215 1.663761 -0.209215C1.444583 -0.209215 1.444583 -0.009963 1.444583 0.159402V5.818182ZM3.656289 5.818182C3.656289 5.977584 3.656289 6.1868 3.865504 6.1868C4.084682 6.1868 4.084682 5.987547 4.084682 5.818182V0.159402C4.084682 0 4.084682 -0.209215 3.875467 -0.209215C3.656289 -0.209215 3.656289 -0.009963 3.656289 0.159402V5.818182Z" id="g6-13" />
|
||||
<ns0:path d="M2.475716 -5.230386C1.150685 -4.29589 0.801993 -2.817435 0.801993 -1.750436C0.801993 -0.767123 1.094894 0.760149 2.475716 1.736488C2.531507 1.736488 2.615193 1.736488 2.615193 1.652802C2.615193 1.610959 2.594271 1.597011 2.545455 1.548194C1.617933 0.711333 1.276214 -0.474222 1.276214 -1.743462C1.276214 -3.626401 1.994521 -4.546949 2.566376 -5.063014C2.594271 -5.090909 2.615193 -5.111831 2.615193 -5.1467C2.615193 -5.230386 2.531507 -5.230386 2.475716 -5.230386Z" id="g5-40" />
|
||||
<ns0:path d="M0.627646 -5.230386C0.578829 -5.230386 0.495143 -5.230386 0.495143 -5.1467C0.495143 -5.111831 0.516065 -5.090909 0.557908 -5.042092C1.157659 -4.491158 1.827148 -3.549689 1.827148 -1.750436C1.827148 -0.292902 1.373848 0.808966 0.620672 1.492403C0.502117 1.610959 0.495143 1.617933 0.495143 1.652802S0.516065 1.736488 0.585803 1.736488C0.669489 1.736488 1.332005 1.276214 1.792279 0.404483C2.099128 -0.174346 2.30137 -0.927522 2.30137 -1.743462C2.30137 -2.726775 2.008468 -4.254047 0.627646 -5.230386Z" id="g5-41" />
|
||||
<ns0:path d="M2.022416 -0.009963C2.022416 -0.667497 1.77335 -1.05604 1.384807 -1.05604C1.05604 -1.05604 0.856787 -0.806974 0.856787 -0.52802C0.856787 -0.259029 1.05604 0 1.384807 0C1.504359 0 1.633873 -0.039851 1.733499 -0.129514C1.763387 -0.14944 1.77335 -0.159402 1.783313 -0.159402S1.803238 -0.14944 1.803238 -0.009963C1.803238 0.727273 1.454545 1.325031 1.125778 1.653798C1.016189 1.763387 1.016189 1.783313 1.016189 1.8132C1.016189 1.882939 1.066002 1.92279 1.115816 1.92279C1.225405 1.92279 2.022416 1.155666 2.022416 -0.009963Z" id="g2-59" />
|
||||
<ns0:path d="M3.716065 -3.765878C3.536737 -4.134496 3.247821 -4.403487 2.799502 -4.403487C1.633873 -4.403487 0.398506 -2.938979 0.398506 -1.484433C0.398506 -0.547945 0.946451 0.109589 1.723537 0.109589C1.92279 0.109589 2.420922 0.069738 3.01868 -0.637609C3.098381 -0.219178 3.447073 0.109589 3.92528 0.109589C4.273973 0.109589 4.503113 -0.119552 4.662516 -0.438356C4.83188 -0.797011 4.961395 -1.404732 4.961395 -1.424658C4.961395 -1.524284 4.871731 -1.524284 4.841843 -1.524284C4.742217 -1.524284 4.732254 -1.484433 4.702366 -1.344956C4.533001 -0.697385 4.353674 -0.109589 3.945205 -0.109589C3.676214 -0.109589 3.646326 -0.368618 3.646326 -0.56787C3.646326 -0.787049 3.666252 -0.86675 3.775841 -1.305106C3.88543 -1.723537 3.905355 -1.823163 3.995019 -2.201743L4.353674 -3.596513C4.423412 -3.875467 4.423412 -3.895392 4.423412 -3.935243C4.423412 -4.104608 4.303861 -4.204234 4.134496 -4.204234C3.895392 -4.204234 3.745953 -3.985056 3.716065 -3.765878ZM3.068493 -1.185554C3.01868 -1.006227 3.01868 -0.986301 2.86924 -0.816936C2.430884 -0.268991 2.022416 -0.109589 1.743462 -0.109589C1.24533 -0.109589 1.105853 -0.657534 1.105853 -1.046077C1.105853 -1.544209 1.424658 -2.769614 1.653798 -3.227895C1.96264 -3.815691 2.410959 -4.184309 2.809465 -4.184309C3.457036 -4.184309 3.596513 -3.367372 3.596513 -3.307597S3.576588 -3.188045 3.566625 -3.138232L3.068493 -1.185554Z" id="g2-97" />
|
||||
<ns0:path d="M3.706102 -3.247821C3.795766 -3.347447 3.795766 -3.387298 3.795766 -3.407223C3.795766 -3.457036 3.755915 -3.506849 3.726027 -3.5467L1.683686 -6.495641H3.985056C5.668742 -6.495641 6.166874 -6.136986 6.37609 -4.562889H6.625156L6.346202 -6.804483H0.816936C0.577833 -6.804483 0.557908 -6.804483 0.557908 -6.575342L3.038605 -2.968867L0.667497 -0.268991C0.56787 -0.159402 0.56787 -0.139477 0.56787 -0.109589C0.56787 0 0.667497 0 0.816936 0H6.346202L6.625156 -2.351183H6.37609C6.196762 -0.687422 5.519303 -0.418431 3.955168 -0.418431H1.205479L3.706102 -3.247821Z" id="g4-6" />
|
||||
<ns0:path d="M6.844334 -3.257783C6.993773 -3.257783 7.183064 -3.257783 7.183064 -3.457036S6.993773 -3.656289 6.854296 -3.656289H0.886675C0.747198 -3.656289 0.557908 -3.656289 0.557908 -3.457036S0.747198 -3.257783 0.896638 -3.257783H6.844334ZM6.854296 -1.325031C6.993773 -1.325031 7.183064 -1.325031 7.183064 -1.524284S6.993773 -1.723537 6.844334 -1.723537H0.896638C0.747198 -1.723537 0.557908 -1.723537 0.557908 -1.524284S0.747198 -1.325031 0.886675 -1.325031H6.854296Z" id="g4-61" />
|
||||
<ns0:path d="M4.33076 -1.57609C4.442341 -1.57609 4.609714 -1.57609 4.609714 -1.743462C4.609714 -1.917808 4.449315 -1.917808 4.33076 -1.917808H1.101868C1.206476 -2.929016 2.050311 -3.682192 3.138232 -3.682192H4.33076C4.442341 -3.682192 4.609714 -3.682192 4.609714 -3.849564C4.609714 -4.02391 4.449315 -4.02391 4.33076 -4.02391H3.110336C1.8132 -4.02391 0.753176 -3.005729 0.753176 -1.750436C0.753176 -0.467248 1.827148 0.530012 3.110336 0.530012H4.33076C4.442341 0.530012 4.609714 0.530012 4.609714 0.36264C4.609714 0.188294 4.449315 0.188294 4.33076 0.188294H3.138232C2.050311 0.188294 1.206476 -0.564882 1.101868 -1.57609H4.33076Z" id="g1-50" />
|
||||
<ns0:path d="M5.816189 -4.002989C5.885928 -4.267995 5.997509 -4.498132 6.555417 -4.51208C6.590286 -4.51208 6.694894 -4.519054 6.694894 -4.665504C6.694894 -4.707347 6.660025 -4.763138 6.590286 -4.763138C6.360149 -4.763138 6.102117 -4.735243 5.865006 -4.735243C5.697634 -4.735243 5.293151 -4.763138 5.125778 -4.763138C5.090909 -4.763138 4.986301 -4.763138 4.986301 -4.609714C4.986301 -4.519054 5.076961 -4.51208 5.139726 -4.51208C5.467497 -4.505106 5.586052 -4.400498 5.586052 -4.226152C5.586052 -4.170361 5.579078 -4.135492 5.558157 -4.05878L4.798007 -1.018182L3.02665 -4.644583C2.970859 -4.763138 2.956912 -4.763138 2.789539 -4.763138H1.834122C1.701619 -4.763138 1.610959 -4.763138 1.610959 -4.609714C1.610959 -4.51208 1.694645 -4.51208 1.841096 -4.51208S2.140971 -4.505106 2.287422 -4.47721L1.352927 -0.746202C1.290162 -0.481196 1.171606 -0.27198 0.627646 -0.251059C0.578829 -0.251059 0.481196 -0.244085 0.481196 -0.104608C0.481196 -0.027895 0.536986 0 0.585803 0C0.81594 0 1.073973 -0.027895 1.311083 -0.027895C1.478456 -0.027895 1.882939 0 2.050311 0C2.12005 0 2.189788 -0.034869 2.189788 -0.146451C2.189788 -0.244085 2.106102 -0.251059 2.02939 -0.251059C1.590037 -0.265006 1.590037 -0.446326 1.590037 -0.54396C1.590037 -0.571856 1.590037 -0.606725 1.617933 -0.718306L2.510585 -4.288917L4.546949 -0.118555C4.60274 -0.006974 4.630635 0 4.700374 0C4.811955 0 4.811955 -0.020922 4.846824 -0.146451L5.816189 -4.002989Z" id="g3-78" />
|
||||
<ns0:path d="M2.838356 -2.75467H3.521793C3.66127 -2.75467 3.75193 -2.75467 3.75193 -2.908095C3.75193 -3.005729 3.66127 -3.005729 3.535741 -3.005729H2.887173C3.047572 -3.891407 3.103362 -4.212204 3.159153 -4.414446C3.194022 -4.56787 3.347447 -4.714321 3.514819 -4.714321C3.521793 -4.714321 3.710087 -4.714321 3.84259 -4.630635C3.556663 -4.539975 3.535741 -4.288917 3.535741 -4.247073C3.535741 -4.093649 3.654296 -3.989041 3.814695 -3.989041C4.002989 -3.989041 4.212204 -4.14944 4.212204 -4.414446C4.212204 -4.735243 3.870486 -4.909589 3.514819 -4.909589C3.20797 -4.909589 2.866252 -4.735243 2.677958 -4.38655C2.538481 -4.128518 2.48269 -3.814695 2.336239 -3.005729H1.785305C1.645828 -3.005729 1.555168 -3.005729 1.555168 -2.852304C1.555168 -2.75467 1.645828 -2.75467 1.771357 -2.75467H2.287422C2.280448 -2.712827 1.841096 -0.202242 1.673724 0.54396C1.638854 0.697385 1.520299 1.227397 1.185554 1.227397C1.17858 1.227397 1.011208 1.227397 0.878705 1.143711C1.164633 1.053051 1.185554 0.801993 1.185554 0.760149C1.185554 0.606725 1.066999 0.502117 0.9066 0.502117C0.718306 0.502117 0.509091 0.662516 0.509091 0.927522C0.509091 1.241345 0.836862 1.422665 1.185554 1.422665C1.63188 1.422665 1.93873 0.962391 2.022416 0.808966C2.273474 0.341719 2.433873 -0.516065 2.447821 -0.599751L2.838356 -2.75467Z" id="g3-102" />
|
||||
<ns0:path d="M3.724035 -2.531507C3.724035 -3.075467 3.396264 -3.082441 3.375342 -3.082441C3.194022 -3.082441 2.998755 -2.894147 2.998755 -2.712827C2.998755 -2.594271 3.068493 -2.538481 3.11731 -2.496638C3.235866 -2.399004 3.375342 -2.217684 3.375342 -1.93873C3.375342 -1.624907 2.915068 -0.125529 2.085181 -0.125529C1.520299 -0.125529 1.520299 -0.627646 1.520299 -0.746202C1.520299 -1.066999 1.645828 -1.457534 1.903861 -2.106102C1.959651 -2.252553 2.001494 -2.357161 2.001494 -2.475716C2.001494 -2.838356 1.694645 -3.075467 1.338979 -3.075467C0.641594 -3.075467 0.327771 -2.12005 0.327771 -2.008468C0.327771 -1.917808 0.425405 -1.917808 0.446326 -1.917808C0.54396 -1.917808 0.550934 -1.952677 0.571856 -2.02939C0.739228 -2.601245 1.039103 -2.880199 1.318057 -2.880199C1.436613 -2.880199 1.492403 -2.803487 1.492403 -2.636115C1.492403 -2.475716 1.436613 -2.329265 1.366874 -2.168867C1.066999 -1.39477 0.990286 -1.094894 0.990286 -0.843836C0.990286 -0.153425 1.534247 0.069738 2.064259 0.069738C3.235866 0.069738 3.724035 -1.959651 3.724035 -2.531507Z" id="g3-118" />
|
||||
<ns0:path d="M1.135741 -3.5467V-0.468244H0.448319V0C0.727273 -0.009963 1.325031 -0.029888 1.703611 -0.029888C2.092154 -0.029888 2.67995 -0.009963 2.958904 0V-0.468244H2.271482V-2.550436C2.271482 -3.636364 3.128269 -4.124533 3.755915 -4.124533C4.094645 -4.124533 4.303861 -3.915318 4.303861 -3.158157V-0.468244H3.616438V0C3.895392 -0.009963 4.493151 -0.029888 4.871731 -0.029888C5.260274 -0.029888 5.84807 -0.009963 6.127024 0V-0.468244H5.439601V-3.048568C5.439601 -4.094645 4.901619 -4.483188 3.905355 -4.483188C2.948941 -4.483188 2.420922 -3.915318 2.161893 -3.407223V-4.483188L0.448319 -4.403487V-3.935243C1.066002 -3.935243 1.135741 -3.935243 1.135741 -3.5467Z" id="g0-110" />
|
||||
</ns0:defs>
|
||||
<ns0:g fill-opacity="0.9" id="page1">
|
||||
<ns0:use x="91.294532" y="-46.805649" ns1:href="#g0-110" />
|
||||
<ns0:use x="97.659518" y="-45.311269" ns1:href="#g3-118" />
|
||||
<ns0:use x="105.160291" y="-46.805649" ns1:href="#g4-61" />
|
||||
<ns0:use x="122.406701" y="-54.233301" ns1:href="#g4-6" />
|
||||
<ns0:use x="129.601961" y="-52.434474" ns1:href="#g3-102" />
|
||||
<ns0:use x="134.268546" y="-52.434474" ns1:href="#g1-50" />
|
||||
<ns0:use x="139.637328" y="-52.434474" ns1:href="#g3-78" />
|
||||
<ns0:use x="146.695594" y="-52.434474" ns1:href="#g5-40" />
|
||||
<ns0:use x="149.808937" y="-52.434474" ns1:href="#g3-118" />
|
||||
<ns0:use x="154.044246" y="-52.434474" ns1:href="#g5-41" />
|
||||
<ns0:use x="157.655696" y="-54.233301" ns1:href="#g2-97" />
|
||||
<ns0:use x="162.921849" y="-52.73892" ns1:href="#g3-102" />
|
||||
<ns0:use x="168.086564" y="-54.233301" ns1:href="#g0-110" />
|
||||
<ns0:use x="174.45155" y="-52.73892" ns1:href="#g3-102" />
|
||||
<ns0:rect height="0.398484" width="68.27917" x="116.871884" y="-49.495559" />
|
||||
<ns0:use x="116.871884" y="-47.901622" ns1:href="#g6-13" />
|
||||
<ns0:use x="116.871884" y="-41.923977" ns1:href="#g6-13" />
|
||||
<ns0:use x="122.406701" y="-39.433317" ns1:href="#g4-6" />
|
||||
<ns0:use x="129.601961" y="-37.63449" ns1:href="#g3-102" />
|
||||
<ns0:use x="134.268546" y="-37.63449" ns1:href="#g1-50" />
|
||||
<ns0:use x="139.637328" y="-37.63449" ns1:href="#g3-78" />
|
||||
<ns0:use x="146.695594" y="-37.63449" ns1:href="#g5-40" />
|
||||
<ns0:use x="149.808937" y="-37.63449" ns1:href="#g3-118" />
|
||||
<ns0:use x="154.044246" y="-37.63449" ns1:href="#g5-41" />
|
||||
<ns0:use x="157.655696" y="-39.433317" ns1:href="#g2-97" />
|
||||
<ns0:use x="162.921849" y="-37.938936" ns1:href="#g3-102" />
|
||||
<ns0:use x="168.086564" y="-39.433317" ns1:href="#g0-110" />
|
||||
<ns0:use x="174.45155" y="-37.938936" ns1:href="#g3-102" />
|
||||
<ns0:use x="179.616264" y="-47.901622" ns1:href="#g6-13" />
|
||||
<ns0:use x="179.616264" y="-41.923977" ns1:href="#g6-13" />
|
||||
<ns0:use x="186.346569" y="-46.805649" ns1:href="#g2-59" />
|
||||
</ns0:g>
|
||||
</ns0:svg>
|
9
markdown/6c4adbc36120d62b98deef2a20d5d303.svg
Normal file
|
@ -0,0 +1,9 @@
|
|||
<ns0:svg xmlns:ns0="http://www.w3.org/2000/svg" xmlns:ns1="http://www.w3.org/1999/xlink" height="8.578936000000013pt" readme2tex:offset="-6.217248937900877e-15" version="1.1" viewBox="-52.07469 -66.326817 5.186581999999994 8.578936000000013" width="5.186581999999994pt" xmlns:readme2tex="http://github.com/leegao/readme2tex/">
|
||||
<ns0:defs>
|
||||
<ns0:path d="M4.662516 -3.706102C4.662516 -4.244085 4.403487 -4.403487 4.224159 -4.403487C3.975093 -4.403487 3.73599 -4.144458 3.73599 -3.92528C3.73599 -3.795766 3.785803 -3.73599 3.895392 -3.626401C4.104608 -3.427148 4.234122 -3.16812 4.234122 -2.809465C4.234122 -2.391034 3.626401 -0.109589 2.460772 -0.109589C1.952677 -0.109589 1.723537 -0.458281 1.723537 -0.976339C1.723537 -1.534247 1.992528 -2.261519 2.30137 -3.088418C2.371108 -3.257783 2.420922 -3.39726 2.420922 -3.58655C2.420922 -4.034869 2.102117 -4.403487 1.603985 -4.403487C0.667497 -4.403487 0.288917 -2.958904 0.288917 -2.86924C0.288917 -2.769614 0.388543 -2.769614 0.408468 -2.769614C0.508095 -2.769614 0.518057 -2.789539 0.56787 -2.948941C0.856787 -3.955168 1.285181 -4.184309 1.574097 -4.184309C1.653798 -4.184309 1.823163 -4.184309 1.823163 -3.865504C1.823163 -3.616438 1.723537 -3.347447 1.653798 -3.16812C1.215442 -2.012453 1.085928 -1.554172 1.085928 -1.125778C1.085928 -0.049813 1.96264 0.109589 2.420922 0.109589C4.094645 0.109589 4.662516 -3.188045 4.662516 -3.706102Z" id="g0-118" />
|
||||
<ns0:path d="M3.317559 -0.757161C3.35741 -0.358655 3.626401 0.059776 4.094645 0.059776C4.303861 0.059776 4.911582 -0.079701 4.911582 -0.886675V-1.444583H4.662516V-0.886675C4.662516 -0.308842 4.41345 -0.249066 4.303861 -0.249066C3.975093 -0.249066 3.935243 -0.697385 3.935243 -0.747198V-2.739726C3.935243 -3.158157 3.935243 -3.5467 3.576588 -3.915318C3.188045 -4.303861 2.689913 -4.463263 2.211706 -4.463263C1.39477 -4.463263 0.707347 -3.995019 0.707347 -3.337484C0.707347 -3.038605 0.9066 -2.86924 1.165629 -2.86924C1.444583 -2.86924 1.62391 -3.068493 1.62391 -3.327522C1.62391 -3.447073 1.574097 -3.775841 1.115816 -3.785803C1.384807 -4.134496 1.872976 -4.244085 2.191781 -4.244085C2.67995 -4.244085 3.247821 -3.855542 3.247821 -2.968867V-2.600249C2.739726 -2.570361 2.042341 -2.540473 1.414695 -2.241594C0.667497 -1.902864 0.418431 -1.384807 0.418431 -0.946451C0.418431 -0.139477 1.384807 0.109589 2.012453 0.109589C2.669988 0.109589 3.128269 -0.288917 3.317559 -0.757161ZM3.247821 -2.391034V-1.39477C3.247821 -0.448319 2.530511 -0.109589 2.082192 -0.109589C1.594022 -0.109589 1.185554 -0.458281 1.185554 -0.956413C1.185554 -1.504359 1.603985 -2.331258 3.247821 -2.391034Z" id="g1-97" />
|
||||
</ns0:defs>
|
||||
<ns0:g fill-opacity="0.9" id="page1">
|
||||
<ns0:use x="-52.07469" y="-62.037349" ns1:href="#g0-118" />
|
||||
</ns0:g>
|
||||
</ns0:svg>
|
9
markdown/77a3b857d53fb44e33b53e4c8b68351a.svg
Normal file
|
@ -0,0 +1,9 @@
|
|||
<ns0:svg xmlns:ns0="http://www.w3.org/2000/svg" xmlns:ns1="http://www.w3.org/1999/xlink" height="13.141217999999995pt" readme2tex:offset="2.6645352591003757e-15" version="1.1" viewBox="-52.07469 -68.607958 3.432257999999994 13.141217999999995" width="3.432257999999994pt" xmlns:readme2tex="http://github.com/leegao/readme2tex/">
|
||||
<ns0:defs>
|
||||
<ns0:path d="M2.82939 -6.22665C2.82939 -6.425903 2.689913 -6.585305 2.460772 -6.585305C2.191781 -6.585305 1.92279 -6.326276 1.92279 -6.057285C1.92279 -5.867995 2.062267 -5.69863 2.30137 -5.69863C2.530511 -5.69863 2.82939 -5.927771 2.82939 -6.22665ZM2.072229 -2.480697C2.191781 -2.769614 2.191781 -2.789539 2.291407 -3.058531C2.371108 -3.257783 2.420922 -3.39726 2.420922 -3.58655C2.420922 -4.034869 2.102117 -4.403487 1.603985 -4.403487C0.667497 -4.403487 0.288917 -2.958904 0.288917 -2.86924C0.288917 -2.769614 0.388543 -2.769614 0.408468 -2.769614C0.508095 -2.769614 0.518057 -2.789539 0.56787 -2.948941C0.836862 -3.88543 1.235367 -4.184309 1.574097 -4.184309C1.653798 -4.184309 1.823163 -4.184309 1.823163 -3.865504C1.823163 -3.656289 1.753425 -3.447073 1.713574 -3.347447C1.633873 -3.088418 1.185554 -1.932752 1.026152 -1.504359C0.926526 -1.24533 0.797011 -0.916563 0.797011 -0.707347C0.797011 -0.239103 1.135741 0.109589 1.613948 0.109589C2.550436 0.109589 2.919054 -1.334994 2.919054 -1.424658C2.919054 -1.524284 2.82939 -1.524284 2.799502 -1.524284C2.699875 -1.524284 2.699875 -1.494396 2.650062 -1.344956C2.470735 -0.71731 2.141968 -0.109589 1.633873 -0.109589C1.464508 -0.109589 1.39477 -0.209215 1.39477 -0.438356C1.39477 -0.687422 1.454545 -0.826899 1.683686 -1.43462L2.072229 -2.480697Z" id="g0-105" />
|
||||
<ns0:path d="M3.317559 -0.757161C3.35741 -0.358655 3.626401 0.059776 4.094645 0.059776C4.303861 0.059776 4.911582 -0.079701 4.911582 -0.886675V-1.444583H4.662516V-0.886675C4.662516 -0.308842 4.41345 -0.249066 4.303861 -0.249066C3.975093 -0.249066 3.935243 -0.697385 3.935243 -0.747198V-2.739726C3.935243 -3.158157 3.935243 -3.5467 3.576588 -3.915318C3.188045 -4.303861 2.689913 -4.463263 2.211706 -4.463263C1.39477 -4.463263 0.707347 -3.995019 0.707347 -3.337484C0.707347 -3.038605 0.9066 -2.86924 1.165629 -2.86924C1.444583 -2.86924 1.62391 -3.068493 1.62391 -3.327522C1.62391 -3.447073 1.574097 -3.775841 1.115816 -3.785803C1.384807 -4.134496 1.872976 -4.244085 2.191781 -4.244085C2.67995 -4.244085 3.247821 -3.855542 3.247821 -2.968867V-2.600249C2.739726 -2.570361 2.042341 -2.540473 1.414695 -2.241594C0.667497 -1.902864 0.418431 -1.384807 0.418431 -0.946451C0.418431 -0.139477 1.384807 0.109589 2.012453 0.109589C2.669988 0.109589 3.128269 -0.288917 3.317559 -0.757161ZM3.247821 -2.391034V-1.39477C3.247821 -0.448319 2.530511 -0.109589 2.082192 -0.109589C1.594022 -0.109589 1.185554 -0.458281 1.185554 -0.956413C1.185554 -1.504359 1.603985 -2.331258 3.247821 -2.391034Z" id="g1-97" />
|
||||
</ns0:defs>
|
||||
<ns0:g fill-opacity="0.9" id="page1">
|
||||
<ns0:use x="-52.07469" y="-62.037349" ns1:href="#g0-105" />
|
||||
</ns0:g>
|
||||
</ns0:svg>
|
19
markdown/907f9d3f474ec1dea25687fb39c395a7.svg
Normal file
|
@ -0,0 +1,19 @@
|
|||
<ns0:svg xmlns:ns0="http://www.w3.org/2000/svg" xmlns:ns1="http://www.w3.org/1999/xlink" height="16.21924399999999pt" readme2tex:offset="0.389517000000005" version="1.1" viewBox="-52.07469 -70.146971 44.71301199999999 16.21924399999999" width="44.71301199999999pt" xmlns:readme2tex="http://github.com/leegao/readme2tex/">
|
||||
<ns0:defs>
|
||||
<ns0:path d="M1.903861 -2.329265C2.447821 -2.329265 2.838356 -1.952677 2.838356 -1.206476C2.838356 -0.341719 2.336239 -0.083686 1.931756 -0.083686C1.652802 -0.083686 1.039103 -0.160399 0.746202 -0.571856C1.073973 -0.585803 1.150685 -0.81594 1.150685 -0.962391C1.150685 -1.185554 0.983313 -1.345953 0.767123 -1.345953C0.571856 -1.345953 0.376588 -1.227397 0.376588 -0.941469C0.376588 -0.285928 1.101868 0.139477 1.945704 0.139477C2.915068 0.139477 3.584558 -0.509091 3.584558 -1.206476C3.584558 -1.750436 3.138232 -2.294396 2.371108 -2.454795C3.103362 -2.719801 3.368369 -3.242839 3.368369 -3.668244C3.368369 -4.219178 2.733748 -4.630635 1.959651 -4.630635S0.592777 -4.254047 0.592777 -3.696139C0.592777 -3.459029 0.746202 -3.326526 0.955417 -3.326526C1.171606 -3.326526 1.311083 -3.486924 1.311083 -3.682192C1.311083 -3.884433 1.171606 -4.030884 0.955417 -4.044832C1.199502 -4.351681 1.680697 -4.428394 1.93873 -4.428394C2.252553 -4.428394 2.691905 -4.274969 2.691905 -3.668244C2.691905 -3.375342 2.594271 -3.054545 2.412951 -2.838356C2.182814 -2.57335 1.987547 -2.559402 1.638854 -2.538481C1.464508 -2.524533 1.45056 -2.524533 1.415691 -2.517559C1.401743 -2.517559 1.345953 -2.503611 1.345953 -2.426899C1.345953 -2.329265 1.408717 -2.329265 1.527273 -2.329265H1.903861Z" id="g5-51" />
|
||||
<ns0:path d="M4.881694 -3.270735C4.958406 -3.347447 4.979328 -3.38929 4.979328 -3.438107C4.979328 -3.549689 4.888667 -3.612453 4.811955 -3.612453C4.742217 -3.612453 4.721295 -3.591532 4.637609 -3.507846L3.110336 -1.987547L1.57609 -3.514819C1.506351 -3.584558 1.478456 -3.612453 1.415691 -3.612453C1.318057 -3.612453 1.241345 -3.535741 1.241345 -3.438107C1.241345 -3.375342 1.262267 -3.354421 1.345953 -3.270735L2.866252 -1.750436L1.345953 -0.230137C1.248319 -0.132503 1.241345 -0.097634 1.241345 -0.055791C1.241345 0.041843 1.318057 0.118555 1.415691 0.118555C1.478456 0.118555 1.499377 0.097634 1.57609 0.020922L3.110336 -1.506351L4.700374 0.083686C4.735243 0.104608 4.770112 0.118555 4.811955 0.118555C4.888667 0.118555 4.979328 0.055791 4.979328 -0.055791C4.979328 -0.111582 4.96538 -0.125529 4.944458 -0.146451C4.930511 -0.174346 3.577584 -1.527273 3.354421 -1.743462L4.881694 -3.270735Z" id="g2-2" />
|
||||
<ns0:path d="M0.850809 -0.439352C0.822914 -0.348692 0.781071 -0.174346 0.781071 -0.153425C0.781071 0 0.9066 0.069738 1.018182 0.069738C1.143711 0.069738 1.255293 -0.020922 1.290162 -0.083686S1.380822 -0.369614 1.415691 -0.516065C1.45056 -0.648568 1.527273 -0.969365 1.569116 -1.143711C1.610959 -1.297136 1.652802 -1.45056 1.687671 -1.610959C1.764384 -1.896887 1.778331 -1.952677 1.980573 -2.238605C2.175841 -2.517559 2.503611 -2.880199 3.02665 -2.880199C3.431133 -2.880199 3.438107 -2.524533 3.438107 -2.39203C3.438107 -1.973599 3.138232 -1.199502 3.02665 -0.9066C2.949938 -0.711333 2.922042 -0.648568 2.922042 -0.530012C2.922042 -0.160399 3.228892 0.069738 3.584558 0.069738C4.281943 0.069738 4.588792 -0.892653 4.588792 -0.99726C4.588792 -1.08792 4.498132 -1.08792 4.47721 -1.08792C4.379577 -1.08792 4.372603 -1.046077 4.344707 -0.969365C4.184309 -0.411457 3.884433 -0.125529 3.605479 -0.125529C3.459029 -0.125529 3.431133 -0.223163 3.431133 -0.369614C3.431133 -0.530012 3.466002 -0.620672 3.591532 -0.934496C3.675218 -1.150685 3.961146 -1.889913 3.961146 -2.280448C3.961146 -2.956912 3.424159 -3.075467 3.054545 -3.075467C2.475716 -3.075467 2.085181 -2.719801 1.875965 -2.440847C1.827148 -2.922042 1.415691 -3.075467 1.129763 -3.075467C0.829888 -3.075467 0.669489 -2.859278 0.578829 -2.698879C0.425405 -2.440847 0.327771 -2.043337 0.327771 -2.008468C0.327771 -1.917808 0.425405 -1.917808 0.446326 -1.917808C0.54396 -1.917808 0.550934 -1.93873 0.599751 -2.127024C0.704359 -2.538481 0.836862 -2.880199 1.108842 -2.880199C1.290162 -2.880199 1.338979 -2.726775 1.338979 -2.538481C1.338979 -2.405978 1.276214 -2.147945 1.227397 -1.959651S1.108842 -1.48543 1.073973 -1.332005L0.850809 -0.439352Z" id="g3-110" />
|
||||
<ns0:path d="M5.459527 -2.291407C5.628892 -2.291407 5.808219 -2.291407 5.808219 -2.49066S5.628892 -2.689913 5.459527 -2.689913H1.235367C1.354919 -4.024907 2.500623 -4.98132 3.905355 -4.98132H5.459527C5.628892 -4.98132 5.808219 -4.98132 5.808219 -5.180573S5.628892 -5.379826 5.459527 -5.379826H3.88543C2.181818 -5.379826 0.826899 -4.084682 0.826899 -2.49066S2.181818 0.398506 3.88543 0.398506H5.459527C5.628892 0.398506 5.808219 0.398506 5.808219 0.199253S5.628892 0 5.459527 0H3.905355C2.500623 0 1.354919 -0.956413 1.235367 -2.291407H5.459527Z" id="g1-50" />
|
||||
<ns0:path d="M2.819427 -3.596513V-6.366127H3.995019C5.599004 -6.366127 5.618929 -5.589041 5.618929 -4.98132C5.618929 -4.423412 5.618929 -3.596513 3.975093 -3.596513H2.819427ZM5.479452 -3.387298C6.635118 -3.686177 7.143213 -4.333748 7.143213 -4.991283C7.143213 -5.997509 6.047323 -6.834371 4.174346 -6.834371H0.388543V-6.366127H1.464508V-0.468244H0.388543V0C0.747198 -0.029888 1.723537 -0.029888 2.141968 -0.029888S3.536737 -0.029888 3.895392 0V-0.468244H2.819427V-3.237858H3.985056C4.124533 -3.237858 4.562889 -3.237858 4.871731 -2.899128C5.190535 -2.550436 5.190535 -2.361146 5.190535 -1.633873C5.190535 -0.976339 5.190535 -0.488169 5.88792 -0.14944C6.326276 0.069738 6.94396 0.109589 7.352428 0.109589C8.418431 0.109589 8.547945 -0.787049 8.547945 -0.946451C8.547945 -1.165629 8.408468 -1.165629 8.308842 -1.165629C8.099626 -1.165629 8.089664 -1.066002 8.079701 -0.936488C8.029888 -0.468244 7.740971 -0.249066 7.442092 -0.249066C6.844334 -0.249066 6.75467 -0.956413 6.704857 -1.374844C6.684932 -1.484433 6.60523 -2.171856 6.595268 -2.221669C6.455791 -2.919054 5.907846 -3.227895 5.479452 -3.387298Z" id="g0-82" />
|
||||
<ns0:path d="M7.372354 -6.146949C7.43213 -6.276463 7.47198 -6.366127 8.199253 -6.366127H8.388543V-6.834371C8.009963 -6.824408 7.531756 -6.804483 7.262765 -6.804483C6.864259 -6.804483 6.346202 -6.804483 5.957659 -6.834371V-6.366127C6.047323 -6.366127 6.834371 -6.366127 6.834371 -6.246575C6.834371 -6.206725 6.804483 -6.156912 6.794521 -6.127024L4.782067 -1.594022L2.660025 -6.366127H3.596513V-6.834371C3.217933 -6.804483 2.261519 -6.804483 1.833126 -6.804483C1.444583 -6.804483 0.607721 -6.804483 0.259029 -6.834371V-6.366127H1.175592L3.92528 -0.179328C4.004981 0 4.044832 0.079701 4.323786 0.079701C4.483188 0.079701 4.612702 0.079701 4.722291 -0.159402L7.372354 -6.146949Z" id="g0-86" />
|
||||
<ns0:path d="M3.317559 -0.757161C3.35741 -0.358655 3.626401 0.059776 4.094645 0.059776C4.303861 0.059776 4.911582 -0.079701 4.911582 -0.886675V-1.444583H4.662516V-0.886675C4.662516 -0.308842 4.41345 -0.249066 4.303861 -0.249066C3.975093 -0.249066 3.935243 -0.697385 3.935243 -0.747198V-2.739726C3.935243 -3.158157 3.935243 -3.5467 3.576588 -3.915318C3.188045 -4.303861 2.689913 -4.463263 2.211706 -4.463263C1.39477 -4.463263 0.707347 -3.995019 0.707347 -3.337484C0.707347 -3.038605 0.9066 -2.86924 1.165629 -2.86924C1.444583 -2.86924 1.62391 -3.068493 1.62391 -3.327522C1.62391 -3.447073 1.574097 -3.775841 1.115816 -3.785803C1.384807 -4.134496 1.872976 -4.244085 2.191781 -4.244085C2.67995 -4.244085 3.247821 -3.855542 3.247821 -2.968867V-2.600249C2.739726 -2.570361 2.042341 -2.540473 1.414695 -2.241594C0.667497 -1.902864 0.418431 -1.384807 0.418431 -0.946451C0.418431 -0.139477 1.384807 0.109589 2.012453 0.109589C2.669988 0.109589 3.128269 -0.288917 3.317559 -0.757161ZM3.247821 -2.391034V-1.39477C3.247821 -0.448319 2.530511 -0.109589 2.082192 -0.109589C1.594022 -0.109589 1.185554 -0.458281 1.185554 -0.956413C1.185554 -1.504359 1.603985 -2.331258 3.247821 -2.391034Z" id="g4-97" />
|
||||
</ns0:defs>
|
||||
<ns0:g fill-opacity="0.9" id="page1">
|
||||
<ns0:use x="-52.07469" y="-62.037349" ns1:href="#g0-86" />
|
||||
<ns0:use x="-40.486307" y="-62.037349" ns1:href="#g1-50" />
|
||||
<ns0:use x="-31.077192" y="-62.037349" ns1:href="#g0-82" />
|
||||
<ns0:use x="-22.48446" y="-65.652713" ns1:href="#g3-110" />
|
||||
<ns0:use x="-17.559598" y="-65.652713" ns1:href="#g2-2" />
|
||||
<ns0:use x="-11.332918" y="-65.652713" ns1:href="#g5-51" />
|
||||
</ns0:g>
|
||||
</ns0:svg>
|
17
markdown/aa0f607fb8a0f302675de85aeabededc.svg
Normal file
|
@ -0,0 +1,17 @@
|
|||
<ns0:svg xmlns:ns0="http://www.w3.org/2000/svg" xmlns:ns1="http://www.w3.org/1999/xlink" height="16.21924399999999pt" readme2tex:offset="2.850408000000005" version="1.1" viewBox="-52.07469 -70.146971 36.27011999999999 16.21924399999999" width="36.27011999999999pt" xmlns:readme2tex="http://github.com/leegao/readme2tex/">
|
||||
<ns0:defs>
|
||||
<ns0:path d="M1.903861 -2.329265C2.447821 -2.329265 2.838356 -1.952677 2.838356 -1.206476C2.838356 -0.341719 2.336239 -0.083686 1.931756 -0.083686C1.652802 -0.083686 1.039103 -0.160399 0.746202 -0.571856C1.073973 -0.585803 1.150685 -0.81594 1.150685 -0.962391C1.150685 -1.185554 0.983313 -1.345953 0.767123 -1.345953C0.571856 -1.345953 0.376588 -1.227397 0.376588 -0.941469C0.376588 -0.285928 1.101868 0.139477 1.945704 0.139477C2.915068 0.139477 3.584558 -0.509091 3.584558 -1.206476C3.584558 -1.750436 3.138232 -2.294396 2.371108 -2.454795C3.103362 -2.719801 3.368369 -3.242839 3.368369 -3.668244C3.368369 -4.219178 2.733748 -4.630635 1.959651 -4.630635S0.592777 -4.254047 0.592777 -3.696139C0.592777 -3.459029 0.746202 -3.326526 0.955417 -3.326526C1.171606 -3.326526 1.311083 -3.486924 1.311083 -3.682192C1.311083 -3.884433 1.171606 -4.030884 0.955417 -4.044832C1.199502 -4.351681 1.680697 -4.428394 1.93873 -4.428394C2.252553 -4.428394 2.691905 -4.274969 2.691905 -3.668244C2.691905 -3.375342 2.594271 -3.054545 2.412951 -2.838356C2.182814 -2.57335 1.987547 -2.559402 1.638854 -2.538481C1.464508 -2.524533 1.45056 -2.524533 1.415691 -2.517559C1.401743 -2.517559 1.345953 -2.503611 1.345953 -2.426899C1.345953 -2.329265 1.408717 -2.329265 1.527273 -2.329265H1.903861Z" id="g4-51" />
|
||||
<ns0:path d="M2.838356 -2.75467H3.521793C3.66127 -2.75467 3.75193 -2.75467 3.75193 -2.908095C3.75193 -3.005729 3.66127 -3.005729 3.535741 -3.005729H2.887173C3.047572 -3.891407 3.103362 -4.212204 3.159153 -4.414446C3.194022 -4.56787 3.347447 -4.714321 3.514819 -4.714321C3.521793 -4.714321 3.710087 -4.714321 3.84259 -4.630635C3.556663 -4.539975 3.535741 -4.288917 3.535741 -4.247073C3.535741 -4.093649 3.654296 -3.989041 3.814695 -3.989041C4.002989 -3.989041 4.212204 -4.14944 4.212204 -4.414446C4.212204 -4.735243 3.870486 -4.909589 3.514819 -4.909589C3.20797 -4.909589 2.866252 -4.735243 2.677958 -4.38655C2.538481 -4.128518 2.48269 -3.814695 2.336239 -3.005729H1.785305C1.645828 -3.005729 1.555168 -3.005729 1.555168 -2.852304C1.555168 -2.75467 1.645828 -2.75467 1.771357 -2.75467H2.287422C2.280448 -2.712827 1.841096 -0.202242 1.673724 0.54396C1.638854 0.697385 1.520299 1.227397 1.185554 1.227397C1.17858 1.227397 1.011208 1.227397 0.878705 1.143711C1.164633 1.053051 1.185554 0.801993 1.185554 0.760149C1.185554 0.606725 1.066999 0.502117 0.9066 0.502117C0.718306 0.502117 0.509091 0.662516 0.509091 0.927522C0.509091 1.241345 0.836862 1.422665 1.185554 1.422665C1.63188 1.422665 1.93873 0.962391 2.022416 0.808966C2.273474 0.341719 2.433873 -0.516065 2.447821 -0.599751L2.838356 -2.75467Z" id="g2-102" />
|
||||
<ns0:path d="M2.819427 -3.596513V-6.366127H3.995019C5.599004 -6.366127 5.618929 -5.589041 5.618929 -4.98132C5.618929 -4.423412 5.618929 -3.596513 3.975093 -3.596513H2.819427ZM5.479452 -3.387298C6.635118 -3.686177 7.143213 -4.333748 7.143213 -4.991283C7.143213 -5.997509 6.047323 -6.834371 4.174346 -6.834371H0.388543V-6.366127H1.464508V-0.468244H0.388543V0C0.747198 -0.029888 1.723537 -0.029888 2.141968 -0.029888S3.536737 -0.029888 3.895392 0V-0.468244H2.819427V-3.237858H3.985056C4.124533 -3.237858 4.562889 -3.237858 4.871731 -2.899128C5.190535 -2.550436 5.190535 -2.361146 5.190535 -1.633873C5.190535 -0.976339 5.190535 -0.488169 5.88792 -0.14944C6.326276 0.069738 6.94396 0.109589 7.352428 0.109589C8.418431 0.109589 8.547945 -0.787049 8.547945 -0.946451C8.547945 -1.165629 8.408468 -1.165629 8.308842 -1.165629C8.099626 -1.165629 8.089664 -1.066002 8.079701 -0.936488C8.029888 -0.468244 7.740971 -0.249066 7.442092 -0.249066C6.844334 -0.249066 6.75467 -0.956413 6.704857 -1.374844C6.684932 -1.484433 6.60523 -2.171856 6.595268 -2.221669C6.455791 -2.919054 5.907846 -3.227895 5.479452 -3.387298Z" id="g0-82" />
|
||||
<ns0:path d="M1.135741 -3.5467V-0.468244H0.448319V0C0.727273 -0.009963 1.325031 -0.029888 1.703611 -0.029888C2.092154 -0.029888 2.67995 -0.009963 2.958904 0V-0.468244H2.271482V-2.550436C2.271482 -3.636364 3.128269 -4.124533 3.755915 -4.124533C4.094645 -4.124533 4.303861 -3.915318 4.303861 -3.158157V-0.468244H3.616438V0C3.895392 -0.009963 4.493151 -0.029888 4.871731 -0.029888C5.260274 -0.029888 5.84807 -0.009963 6.127024 0V-0.468244H5.439601V-3.048568C5.439601 -4.094645 4.901619 -4.483188 3.905355 -4.483188C2.948941 -4.483188 2.420922 -3.915318 2.161893 -3.407223V-4.483188L0.448319 -4.403487V-3.935243C1.066002 -3.935243 1.135741 -3.935243 1.135741 -3.5467Z" id="g0-110" />
|
||||
<ns0:path d="M5.459527 -2.291407C5.628892 -2.291407 5.808219 -2.291407 5.808219 -2.49066S5.628892 -2.689913 5.459527 -2.689913H1.235367C1.354919 -4.024907 2.500623 -4.98132 3.905355 -4.98132H5.459527C5.628892 -4.98132 5.808219 -4.98132 5.808219 -5.180573S5.628892 -5.379826 5.459527 -5.379826H3.88543C2.181818 -5.379826 0.826899 -4.084682 0.826899 -2.49066S2.181818 0.398506 3.88543 0.398506H5.459527C5.628892 0.398506 5.808219 0.398506 5.808219 0.199253S5.628892 0 5.459527 0H3.905355C2.500623 0 1.354919 -0.956413 1.235367 -2.291407H5.459527Z" id="g1-50" />
|
||||
<ns0:path d="M3.317559 -0.757161C3.35741 -0.358655 3.626401 0.059776 4.094645 0.059776C4.303861 0.059776 4.911582 -0.079701 4.911582 -0.886675V-1.444583H4.662516V-0.886675C4.662516 -0.308842 4.41345 -0.249066 4.303861 -0.249066C3.975093 -0.249066 3.935243 -0.697385 3.935243 -0.747198V-2.739726C3.935243 -3.158157 3.935243 -3.5467 3.576588 -3.915318C3.188045 -4.303861 2.689913 -4.463263 2.211706 -4.463263C1.39477 -4.463263 0.707347 -3.995019 0.707347 -3.337484C0.707347 -3.038605 0.9066 -2.86924 1.165629 -2.86924C1.444583 -2.86924 1.62391 -3.068493 1.62391 -3.327522C1.62391 -3.447073 1.574097 -3.775841 1.115816 -3.785803C1.384807 -4.134496 1.872976 -4.244085 2.191781 -4.244085C2.67995 -4.244085 3.247821 -3.855542 3.247821 -2.968867V-2.600249C2.739726 -2.570361 2.042341 -2.540473 1.414695 -2.241594C0.667497 -1.902864 0.418431 -1.384807 0.418431 -0.946451C0.418431 -0.139477 1.384807 0.109589 2.012453 0.109589C2.669988 0.109589 3.128269 -0.288917 3.317559 -0.757161ZM3.247821 -2.391034V-1.39477C3.247821 -0.448319 2.530511 -0.109589 2.082192 -0.109589C1.594022 -0.109589 1.185554 -0.458281 1.185554 -0.956413C1.185554 -1.504359 1.603985 -2.331258 3.247821 -2.391034Z" id="g3-97" />
|
||||
</ns0:defs>
|
||||
<ns0:g fill-opacity="0.9" id="page1">
|
||||
<ns0:use x="-52.07469" y="-62.037349" ns1:href="#g0-110" />
|
||||
<ns0:use x="-45.709704" y="-60.542968" ns1:href="#g2-102" />
|
||||
<ns0:use x="-37.777657" y="-62.037349" ns1:href="#g1-50" />
|
||||
<ns0:use x="-28.368542" y="-62.037349" ns1:href="#g0-82" />
|
||||
<ns0:use x="-19.775811" y="-65.652713" ns1:href="#g4-51" />
|
||||
</ns0:g>
|
||||
</ns0:svg>
|
BIN
markdown/bob-subdivision.gif
Normal file
After Width: | Height: | Size: 1.5 MiB |
31
markdown/c7299835acc0beb6d4c78f128f1d90cd.svg
Normal file
|
@ -0,0 +1,31 @@
|
|||
<ns0:svg xmlns:ns0="http://www.w3.org/2000/svg" xmlns:ns1="http://www.w3.org/1999/xlink" height="16.21924399999999pt" readme2tex:offset="2.4906600000000054" version="1.1" viewBox="-52.07469 -70.146971 74.734718 16.21924399999999" width="74.734718pt" xmlns:readme2tex="http://github.com/leegao/readme2tex/">
|
||||
<ns0:defs>
|
||||
<ns0:path d="M1.903861 -2.329265C2.447821 -2.329265 2.838356 -1.952677 2.838356 -1.206476C2.838356 -0.341719 2.336239 -0.083686 1.931756 -0.083686C1.652802 -0.083686 1.039103 -0.160399 0.746202 -0.571856C1.073973 -0.585803 1.150685 -0.81594 1.150685 -0.962391C1.150685 -1.185554 0.983313 -1.345953 0.767123 -1.345953C0.571856 -1.345953 0.376588 -1.227397 0.376588 -0.941469C0.376588 -0.285928 1.101868 0.139477 1.945704 0.139477C2.915068 0.139477 3.584558 -0.509091 3.584558 -1.206476C3.584558 -1.750436 3.138232 -2.294396 2.371108 -2.454795C3.103362 -2.719801 3.368369 -3.242839 3.368369 -3.668244C3.368369 -4.219178 2.733748 -4.630635 1.959651 -4.630635S0.592777 -4.254047 0.592777 -3.696139C0.592777 -3.459029 0.746202 -3.326526 0.955417 -3.326526C1.171606 -3.326526 1.311083 -3.486924 1.311083 -3.682192C1.311083 -3.884433 1.171606 -4.030884 0.955417 -4.044832C1.199502 -4.351681 1.680697 -4.428394 1.93873 -4.428394C2.252553 -4.428394 2.691905 -4.274969 2.691905 -3.668244C2.691905 -3.375342 2.594271 -3.054545 2.412951 -2.838356C2.182814 -2.57335 1.987547 -2.559402 1.638854 -2.538481C1.464508 -2.524533 1.45056 -2.524533 1.415691 -2.517559C1.401743 -2.517559 1.345953 -2.503611 1.345953 -2.426899C1.345953 -2.329265 1.408717 -2.329265 1.527273 -2.329265H1.903861Z" id="g6-51" />
|
||||
<ns0:path d="M4.881694 -3.270735C4.958406 -3.347447 4.979328 -3.38929 4.979328 -3.438107C4.979328 -3.549689 4.888667 -3.612453 4.811955 -3.612453C4.742217 -3.612453 4.721295 -3.591532 4.637609 -3.507846L3.110336 -1.987547L1.57609 -3.514819C1.506351 -3.584558 1.478456 -3.612453 1.415691 -3.612453C1.318057 -3.612453 1.241345 -3.535741 1.241345 -3.438107C1.241345 -3.375342 1.262267 -3.354421 1.345953 -3.270735L2.866252 -1.750436L1.345953 -0.230137C1.248319 -0.132503 1.241345 -0.097634 1.241345 -0.055791C1.241345 0.041843 1.318057 0.118555 1.415691 0.118555C1.478456 0.118555 1.499377 0.097634 1.57609 0.020922L3.110336 -1.506351L4.700374 0.083686C4.735243 0.104608 4.770112 0.118555 4.811955 0.118555C4.888667 0.118555 4.979328 0.055791 4.979328 -0.055791C4.979328 -0.111582 4.96538 -0.125529 4.944458 -0.146451C4.930511 -0.174346 3.577584 -1.527273 3.354421 -1.743462L4.881694 -3.270735Z" id="g2-2" />
|
||||
<ns0:path d="M3.02665 -0.564882C2.991781 -0.425405 2.929016 -0.188294 2.929016 -0.153425C2.929016 0 3.054545 0.069738 3.166127 0.069738C3.291656 0.069738 3.403238 -0.020922 3.438107 -0.083686S3.528767 -0.369614 3.563636 -0.516065C3.598506 -0.648568 3.675218 -0.969365 3.717061 -1.143711C3.758904 -1.297136 3.800747 -1.45056 3.835616 -1.610959C3.912329 -1.910834 3.912329 -1.924782 4.051806 -2.140971C4.274969 -2.48269 4.623661 -2.880199 5.167621 -2.880199C5.558157 -2.880199 5.579078 -2.559402 5.579078 -2.39203C5.579078 -1.973599 5.279203 -1.199502 5.167621 -0.9066C5.090909 -0.711333 5.063014 -0.648568 5.063014 -0.530012C5.063014 -0.160399 5.369863 0.069738 5.725529 0.069738C6.422914 0.069738 6.729763 -0.892653 6.729763 -0.99726C6.729763 -1.08792 6.639103 -1.08792 6.618182 -1.08792C6.520548 -1.08792 6.513574 -1.046077 6.485679 -0.969365C6.32528 -0.411457 6.025405 -0.125529 5.746451 -0.125529C5.6 -0.125529 5.572105 -0.223163 5.572105 -0.369614C5.572105 -0.530012 5.606974 -0.620672 5.732503 -0.934496C5.816189 -1.150685 6.102117 -1.889913 6.102117 -2.280448C6.102117 -2.39203 6.102117 -2.684932 5.844085 -2.887173C5.725529 -2.977833 5.523288 -3.075467 5.195517 -3.075467C4.56787 -3.075467 4.184309 -2.66401 3.961146 -2.371108C3.905355 -2.963885 3.410212 -3.075467 3.054545 -3.075467C2.475716 -3.075467 2.085181 -2.719801 1.875965 -2.440847C1.827148 -2.922042 1.415691 -3.075467 1.129763 -3.075467C0.829888 -3.075467 0.669489 -2.859278 0.578829 -2.698879C0.425405 -2.440847 0.327771 -2.043337 0.327771 -2.008468C0.327771 -1.917808 0.425405 -1.917808 0.446326 -1.917808C0.54396 -1.917808 0.550934 -1.93873 0.599751 -2.127024C0.704359 -2.538481 0.836862 -2.880199 1.108842 -2.880199C1.290162 -2.880199 1.338979 -2.726775 1.338979 -2.538481C1.338979 -2.405978 1.276214 -2.147945 1.227397 -1.959651S1.108842 -1.48543 1.073973 -1.332005L0.850809 -0.439352C0.822914 -0.348692 0.781071 -0.174346 0.781071 -0.153425C0.781071 0 0.9066 0.069738 1.018182 0.069738C1.143711 0.069738 1.255293 -0.020922 1.290162 -0.083686S1.380822 -0.369614 1.415691 -0.516065C1.45056 -0.648568 1.527273 -0.969365 1.569116 -1.143711C1.610959 -1.297136 1.652802 -1.45056 1.687671 -1.610959C1.764384 -1.896887 1.778331 -1.952677 1.980573 -2.238605C2.175841 -2.517559 2.503611 -2.880199 3.02665 -2.880199C3.431133 -2.880199 3.438107 -2.524533 3.438107 -2.39203C3.438107 -2.217684 3.417186 -2.127024 3.319552 -1.736488L3.02665 -0.564882Z" id="g4-109" />
|
||||
<ns0:path d="M2.022416 -0.009963C2.022416 -0.667497 1.77335 -1.05604 1.384807 -1.05604C1.05604 -1.05604 0.856787 -0.806974 0.856787 -0.52802C0.856787 -0.259029 1.05604 0 1.384807 0C1.504359 0 1.633873 -0.039851 1.733499 -0.129514C1.763387 -0.14944 1.77335 -0.159402 1.783313 -0.159402S1.803238 -0.14944 1.803238 -0.009963C1.803238 0.727273 1.454545 1.325031 1.125778 1.653798C1.016189 1.763387 1.016189 1.783313 1.016189 1.8132C1.016189 1.882939 1.066002 1.92279 1.115816 1.92279C1.225405 1.92279 2.022416 1.155666 2.022416 -0.009963Z" id="g3-59" />
|
||||
<ns0:path d="M0.876712 -0.587796C0.846824 -0.438356 0.787049 -0.209215 0.787049 -0.159402C0.787049 0.019925 0.926526 0.109589 1.075965 0.109589C1.195517 0.109589 1.374844 0.029888 1.444583 -0.169365C1.454545 -0.18929 1.574097 -0.657534 1.633873 -0.9066L1.853051 -1.803238C1.912827 -2.022416 1.972603 -2.241594 2.022416 -2.470735C2.062267 -2.6401 2.141968 -2.929016 2.15193 -2.968867C2.30137 -3.277709 2.82939 -4.184309 3.775841 -4.184309C4.224159 -4.184309 4.313823 -3.815691 4.313823 -3.486924C4.313823 -2.86924 3.825654 -1.594022 3.666252 -1.165629C3.576588 -0.936488 3.566625 -0.816936 3.566625 -0.707347C3.566625 -0.239103 3.915318 0.109589 4.383562 0.109589C5.32005 0.109589 5.688667 -1.344956 5.688667 -1.424658C5.688667 -1.524284 5.599004 -1.524284 5.569116 -1.524284C5.469489 -1.524284 5.469489 -1.494396 5.419676 -1.344956C5.220423 -0.667497 4.891656 -0.109589 4.403487 -0.109589C4.234122 -0.109589 4.164384 -0.209215 4.164384 -0.438356C4.164384 -0.687422 4.254047 -0.926526 4.343711 -1.145704C4.533001 -1.673724 4.951432 -2.769614 4.951432 -3.337484C4.951432 -4.004981 4.523039 -4.403487 3.805729 -4.403487C2.909091 -4.403487 2.420922 -3.765878 2.251557 -3.536737C2.201743 -4.094645 1.793275 -4.403487 1.334994 -4.403487S0.687422 -4.014944 0.587796 -3.835616C0.428394 -3.496887 0.288917 -2.909091 0.288917 -2.86924C0.288917 -2.769614 0.388543 -2.769614 0.408468 -2.769614C0.508095 -2.769614 0.518057 -2.779577 0.577833 -2.998755C0.747198 -3.706102 0.946451 -4.184309 1.305106 -4.184309C1.504359 -4.184309 1.613948 -4.054795 1.613948 -3.726027C1.613948 -3.516812 1.58406 -3.407223 1.454545 -2.889166L0.876712 -0.587796Z" id="g3-110" />
|
||||
<ns0:path d="M6.56538 -2.291407C6.734745 -2.291407 6.914072 -2.291407 6.914072 -2.49066S6.734745 -2.689913 6.56538 -2.689913H1.175592C1.006227 -2.689913 0.826899 -2.689913 0.826899 -2.49066S1.006227 -2.291407 1.175592 -2.291407H6.56538Z" id="g1-0" />
|
||||
<ns0:path d="M5.459527 -2.291407C5.628892 -2.291407 5.808219 -2.291407 5.808219 -2.49066S5.628892 -2.689913 5.459527 -2.689913H1.235367C1.354919 -4.024907 2.500623 -4.98132 3.905355 -4.98132H5.459527C5.628892 -4.98132 5.808219 -4.98132 5.808219 -5.180573S5.628892 -5.379826 5.459527 -5.379826H3.88543C2.181818 -5.379826 0.826899 -4.084682 0.826899 -2.49066S2.181818 0.398506 3.88543 0.398506H5.459527C5.628892 0.398506 5.808219 0.398506 5.808219 0.199253S5.628892 0 5.459527 0H3.905355C2.500623 0 1.354919 -0.956413 1.235367 -2.291407H5.459527Z" id="g1-50" />
|
||||
<ns0:path d="M6.41594 -6.774595H0.388543V-6.306351H1.464508V-0.468244H0.388543V0C0.767123 -0.029888 1.77335 -0.029888 2.211706 -0.029888C2.699875 -0.029888 3.785803 -0.029888 4.224159 0V-0.468244H2.879203V-3.158157H3.377335C4.333748 -3.158157 4.423412 -2.729763 4.423412 -1.992528H4.891656V-4.79203H4.423412C4.423412 -4.054795 4.343711 -3.626401 3.377335 -3.626401H2.879203V-6.306351H4.273973C5.877958 -6.306351 6.107098 -5.539228 6.256538 -4.373599H6.724782L6.41594 -6.774595Z" id="g0-70" />
|
||||
<ns0:path d="M4.582814 -3.188045C4.582814 -3.985056 4.533001 -4.782067 4.184309 -5.519303C3.726027 -6.475716 2.909091 -6.635118 2.49066 -6.635118C1.892902 -6.635118 1.165629 -6.37609 0.757161 -5.449564C0.438356 -4.762142 0.388543 -3.985056 0.388543 -3.188045C0.388543 -2.440847 0.428394 -1.544209 0.836862 -0.787049C1.265255 0.019925 1.992528 0.219178 2.480697 0.219178C3.01868 0.219178 3.775841 0.009963 4.214197 -0.936488C4.533001 -1.62391 4.582814 -2.400996 4.582814 -3.188045ZM2.480697 0C2.092154 0 1.504359 -0.249066 1.325031 -1.205479C1.215442 -1.803238 1.215442 -2.719801 1.215442 -3.307597C1.215442 -3.945205 1.215442 -4.60274 1.295143 -5.140722C1.484433 -6.326276 2.231631 -6.41594 2.480697 -6.41594C2.809465 -6.41594 3.466999 -6.236613 3.656289 -5.250311C3.755915 -4.692403 3.755915 -3.935243 3.755915 -3.307597C3.755915 -2.560399 3.755915 -1.882939 3.646326 -1.24533C3.496887 -0.298879 2.929016 0 2.480697 0Z" id="g5-48" />
|
||||
<ns0:path d="M2.929016 -6.37609C2.929016 -6.615193 2.929016 -6.635118 2.699875 -6.635118C2.082192 -5.997509 1.205479 -5.997509 0.886675 -5.997509V-5.688667C1.085928 -5.688667 1.673724 -5.688667 2.191781 -5.947696V-0.787049C2.191781 -0.428394 2.161893 -0.308842 1.265255 -0.308842H0.946451V0C1.295143 -0.029888 2.161893 -0.029888 2.560399 -0.029888S3.825654 -0.029888 4.174346 0V-0.308842H3.855542C2.958904 -0.308842 2.929016 -0.418431 2.929016 -0.787049V-6.37609Z" id="g5-49" />
|
||||
<ns0:path d="M2.540473 2.49066V2.092154H1.574097V-7.073474H2.540473V-7.47198H1.175592V2.49066H2.540473Z" id="g5-91" />
|
||||
<ns0:path d="M1.58406 -7.47198H0.219178V-7.073474H1.185554V2.092154H0.219178V2.49066H1.58406V-7.47198Z" id="g5-93" />
|
||||
<ns0:path d="M3.317559 -0.757161C3.35741 -0.358655 3.626401 0.059776 4.094645 0.059776C4.303861 0.059776 4.911582 -0.079701 4.911582 -0.886675V-1.444583H4.662516V-0.886675C4.662516 -0.308842 4.41345 -0.249066 4.303861 -0.249066C3.975093 -0.249066 3.935243 -0.697385 3.935243 -0.747198V-2.739726C3.935243 -3.158157 3.935243 -3.5467 3.576588 -3.915318C3.188045 -4.303861 2.689913 -4.463263 2.211706 -4.463263C1.39477 -4.463263 0.707347 -3.995019 0.707347 -3.337484C0.707347 -3.038605 0.9066 -2.86924 1.165629 -2.86924C1.444583 -2.86924 1.62391 -3.068493 1.62391 -3.327522C1.62391 -3.447073 1.574097 -3.775841 1.115816 -3.785803C1.384807 -4.134496 1.872976 -4.244085 2.191781 -4.244085C2.67995 -4.244085 3.247821 -3.855542 3.247821 -2.968867V-2.600249C2.739726 -2.570361 2.042341 -2.540473 1.414695 -2.241594C0.667497 -1.902864 0.418431 -1.384807 0.418431 -0.946451C0.418431 -0.139477 1.384807 0.109589 2.012453 0.109589C2.669988 0.109589 3.128269 -0.288917 3.317559 -0.757161ZM3.247821 -2.391034V-1.39477C3.247821 -0.448319 2.530511 -0.109589 2.082192 -0.109589C1.594022 -0.109589 1.185554 -0.458281 1.185554 -0.956413C1.185554 -1.504359 1.603985 -2.331258 3.247821 -2.391034Z" id="g5-97" />
|
||||
</ns0:defs>
|
||||
<ns0:g fill-opacity="0.9" id="page1">
|
||||
<ns0:use x="-52.07469" y="-62.037349" ns1:href="#g0-70" />
|
||||
<ns0:use x="-42.098321" y="-62.037349" ns1:href="#g1-50" />
|
||||
<ns0:use x="-32.689206" y="-62.037349" ns1:href="#g5-91" />
|
||||
<ns0:use x="-29.921797" y="-62.037349" ns1:href="#g5-48" />
|
||||
<ns0:use x="-24.940458" y="-62.037349" ns1:href="#g3-59" />
|
||||
<ns0:use x="-20.51265" y="-62.037349" ns1:href="#g3-110" />
|
||||
<ns0:use x="-12.318859" y="-62.037349" ns1:href="#g1-0" />
|
||||
<ns0:use x="-2.356246" y="-62.037349" ns1:href="#g5-49" />
|
||||
<ns0:use x="2.625093" y="-62.037349" ns1:href="#g5-93" />
|
||||
<ns0:use x="5.392502" y="-65.652713" ns1:href="#g4-109" />
|
||||
<ns0:use x="12.462108" y="-65.652713" ns1:href="#g2-2" />
|
||||
<ns0:use x="18.688787" y="-65.652713" ns1:href="#g6-51" />
|
||||
</ns0:g>
|
||||
</ns0:svg>
|
81
markdown/cc96dd182e07003c6232739259df10ec.svg
Normal file
|
@ -0,0 +1,81 @@
|
|||
<ns0:svg xmlns:ns0="http://www.w3.org/2000/svg" xmlns:ns1="http://www.w3.org/1999/xlink" height="25.714616pt" readme2tex:offset="0" version="1.1" viewBox="65.750263 -61.041096 148.907984 25.714616" width="148.907984pt" xmlns:readme2tex="http://github.com/leegao/readme2tex/">
|
||||
<ns0:defs>
|
||||
<ns0:path d="M2.022416 -0.009963C2.022416 -0.667497 1.77335 -1.05604 1.384807 -1.05604C1.05604 -1.05604 0.856787 -0.806974 0.856787 -0.52802C0.856787 -0.259029 1.05604 0 1.384807 0C1.504359 0 1.633873 -0.039851 1.733499 -0.129514C1.763387 -0.14944 1.77335 -0.159402 1.783313 -0.159402S1.803238 -0.14944 1.803238 -0.009963C1.803238 0.727273 1.454545 1.325031 1.125778 1.653798C1.016189 1.763387 1.016189 1.783313 1.016189 1.8132C1.016189 1.882939 1.066002 1.92279 1.115816 1.92279C1.225405 1.92279 2.022416 1.155666 2.022416 -0.009963Z" id="g3-59" />
|
||||
<ns0:path d="M3.716065 -3.765878C3.536737 -4.134496 3.247821 -4.403487 2.799502 -4.403487C1.633873 -4.403487 0.398506 -2.938979 0.398506 -1.484433C0.398506 -0.547945 0.946451 0.109589 1.723537 0.109589C1.92279 0.109589 2.420922 0.069738 3.01868 -0.637609C3.098381 -0.219178 3.447073 0.109589 3.92528 0.109589C4.273973 0.109589 4.503113 -0.119552 4.662516 -0.438356C4.83188 -0.797011 4.961395 -1.404732 4.961395 -1.424658C4.961395 -1.524284 4.871731 -1.524284 4.841843 -1.524284C4.742217 -1.524284 4.732254 -1.484433 4.702366 -1.344956C4.533001 -0.697385 4.353674 -0.109589 3.945205 -0.109589C3.676214 -0.109589 3.646326 -0.368618 3.646326 -0.56787C3.646326 -0.787049 3.666252 -0.86675 3.775841 -1.305106C3.88543 -1.723537 3.905355 -1.823163 3.995019 -2.201743L4.353674 -3.596513C4.423412 -3.875467 4.423412 -3.895392 4.423412 -3.935243C4.423412 -4.104608 4.303861 -4.204234 4.134496 -4.204234C3.895392 -4.204234 3.745953 -3.985056 3.716065 -3.765878ZM3.068493 -1.185554C3.01868 -1.006227 3.01868 -0.986301 2.86924 -0.816936C2.430884 -0.268991 2.022416 -0.109589 1.743462 -0.109589C1.24533 -0.109589 1.105853 -0.657534 1.105853 -1.046077C1.105853 -1.544209 1.424658 -2.769614 1.653798 -3.227895C1.96264 -3.815691 2.410959 -4.184309 2.809465 -4.184309C3.457036 -4.184309 3.596513 -3.367372 3.596513 -3.307597S3.576588 -3.188045 3.566625 -3.138232L3.068493 -1.185554Z" id="g3-97" />
|
||||
<ns0:path d="M2.371108 -1.92279H2.929016C3.033624 -1.92279 3.038605 -1.927771 3.063512 -1.947696S3.103362 -2.032379 3.103362 -2.062267C3.103362 -2.146949 3.028643 -2.146949 2.94396 -2.146949H2.410959C2.470735 -2.515567 2.570361 -3.148194 2.635118 -3.222914C2.709838 -3.302615 2.789539 -3.342466 2.874222 -3.342466C2.90411 -3.342466 3.013699 -3.342466 3.118306 -3.287671C2.919054 -3.202989 2.919054 -3.023661 2.919054 -3.003736C2.919054 -2.879203 3.013699 -2.799502 3.138232 -2.799502C3.267746 -2.799502 3.447073 -2.909091 3.447073 -3.128269C3.447073 -3.417186 3.118306 -3.511831 2.879203 -3.511831C2.246575 -3.511831 2.122042 -2.909091 2.07721 -2.694894S2.062267 -2.615193 1.977584 -2.146949H1.524284C1.429639 -2.146949 1.349938 -2.146949 1.349938 -2.007472C1.349938 -1.92279 1.424658 -1.92279 1.50934 -1.92279H1.942715C1.84807 -1.43462 1.638854 -0.049813 1.499377 0.478207C1.469489 0.597758 1.349938 0.851806 1.155666 0.851806C1.125778 0.851806 1.016189 0.846824 0.926526 0.801993C1.061021 0.742217 1.125778 0.617684 1.125778 0.513076C1.125778 0.388543 1.031133 0.308842 0.9066 0.308842C0.777086 0.308842 0.597758 0.418431 0.597758 0.637609C0.597758 0.941469 0.956413 1.021171 1.150685 1.021171C1.439601 1.021171 1.65878 0.79203 1.77335 0.637609C1.972603 0.358655 2.087173 -0.303861 2.092154 -0.318804L2.371108 -1.92279Z" id="g5-102" />
|
||||
<ns0:path d="M3.138232 -1.8132C3.163138 -1.902864 3.163138 -1.912827 3.163138 -1.927771C3.163138 -2.012453 3.098381 -2.102117 2.978829 -2.102117C2.879203 -2.102117 2.769614 -2.032379 2.729763 -1.907846C2.56538 -2.127024 2.351183 -2.201743 2.132005 -2.201743C1.449564 -2.201743 0.747198 -1.554172 0.747198 -0.851806C0.747198 -0.328767 1.145704 0 1.618929 0C1.937733 0 2.206725 -0.174346 2.321295 -0.268991C2.311333 -0.219178 2.221669 0.119552 2.201743 0.204234C2.156912 0.383562 2.122042 0.533001 1.892902 0.692403C1.65878 0.851806 1.439601 0.851806 1.295143 0.851806C1.255293 0.851806 0.891656 0.846824 0.891656 0.816936L0.911582 0.801993C1.001245 0.722291 1.026152 0.612702 1.026152 0.562889C1.026152 0.478207 0.966376 0.358655 0.801993 0.358655C0.64259 0.358655 0.493151 0.498132 0.493151 0.687422C0.493151 1.021171 1.001245 1.021171 1.300125 1.021171C1.982565 1.021171 2.49066 0.79203 2.610212 0.308842L3.138232 -1.8132ZM2.430884 -0.707347C2.410959 -0.627646 2.405978 -0.607721 2.311333 -0.508095C2.127024 -0.323786 1.897883 -0.169365 1.638854 -0.169365C1.444583 -0.169365 1.195517 -0.273973 1.195517 -0.667497C1.195517 -0.861768 1.285181 -1.334994 1.474471 -1.62391C1.608966 -1.843088 1.867995 -2.032379 2.132005 -2.032379C2.545455 -2.032379 2.650062 -1.643836 2.650062 -1.599004C2.650062 -1.589041 2.645081 -1.554172 2.635118 -1.524284L2.430884 -0.707347Z" id="g5-103" />
|
||||
<ns0:path d="M4.267995 -2.099128C4.267995 -2.956912 3.717061 -3.138232 3.075467 -3.138232C2.231631 -3.138232 1.841096 -2.636115 1.708593 -2.412951V-3.138232L0.446326 -3.082441V-2.691905C0.857783 -2.691905 0.913574 -2.691905 0.913574 -2.419925V-0.390535H0.446326V0C0.4533 0 1.018182 -0.027895 1.352927 -0.027895C1.694645 -0.027895 2.259527 0 2.266501 0V-0.390535H1.799253V-1.736488C1.799253 -2.545455 2.524533 -2.817435 2.942964 -2.817435C3.249813 -2.817435 3.382316 -2.657036 3.382316 -2.154919V-0.390535H2.915068V0C2.922042 0 3.486924 -0.027895 3.821669 -0.027895C4.163387 -0.027895 4.728269 0 4.735243 0V-0.390535H4.267995V-2.099128Z" id="g0-110" />
|
||||
<ns0:path d="M2.475716 -5.230386C1.150685 -4.29589 0.801993 -2.817435 0.801993 -1.750436C0.801993 -0.767123 1.094894 0.760149 2.475716 1.736488C2.531507 1.736488 2.615193 1.736488 2.615193 1.652802C2.615193 1.610959 2.594271 1.597011 2.545455 1.548194C1.617933 0.711333 1.276214 -0.474222 1.276214 -1.743462C1.276214 -3.626401 1.994521 -4.546949 2.566376 -5.063014C2.594271 -5.090909 2.615193 -5.111831 2.615193 -5.1467C2.615193 -5.230386 2.531507 -5.230386 2.475716 -5.230386Z" id="g7-40" />
|
||||
<ns0:path d="M0.627646 -5.230386C0.578829 -5.230386 0.495143 -5.230386 0.495143 -5.1467C0.495143 -5.111831 0.516065 -5.090909 0.557908 -5.042092C1.157659 -4.491158 1.827148 -3.549689 1.827148 -1.750436C1.827148 -0.292902 1.373848 0.808966 0.620672 1.492403C0.502117 1.610959 0.495143 1.617933 0.495143 1.652802S0.516065 1.736488 0.585803 1.736488C0.669489 1.736488 1.332005 1.276214 1.792279 0.404483C2.099128 -0.174346 2.30137 -0.927522 2.30137 -1.743462C2.30137 -2.726775 2.008468 -4.254047 0.627646 -5.230386Z" id="g7-41" />
|
||||
<ns0:path d="M1.583064 -1.743462C1.583064 -1.994521 1.373848 -2.147945 1.185554 -2.147945C0.955417 -2.147945 0.781071 -1.959651 0.781071 -1.750436C0.781071 -1.499377 0.990286 -1.345953 1.17858 -1.345953C1.408717 -1.345953 1.583064 -1.534247 1.583064 -1.743462Z" id="g2-1" />
|
||||
<ns0:path d="M4.33076 -1.57609C4.442341 -1.57609 4.609714 -1.57609 4.609714 -1.743462C4.609714 -1.917808 4.449315 -1.917808 4.33076 -1.917808H1.101868C1.206476 -2.929016 2.050311 -3.682192 3.138232 -3.682192H4.33076C4.442341 -3.682192 4.609714 -3.682192 4.609714 -3.849564C4.609714 -4.02391 4.449315 -4.02391 4.33076 -4.02391H3.110336C1.8132 -4.02391 0.753176 -3.005729 0.753176 -1.750436C0.753176 -0.467248 1.827148 0.530012 3.110336 0.530012H4.33076C4.442341 0.530012 4.609714 0.530012 4.609714 0.36264C4.609714 0.188294 4.449315 0.188294 4.33076 0.188294H3.138232C2.050311 0.188294 1.206476 -0.564882 1.101868 -1.57609H4.33076Z" id="g2-50" />
|
||||
<ns0:path d="M1.352927 -4.958406C1.352927 -5.063014 1.352927 -5.230386 1.185554 -5.230386C1.011208 -5.230386 1.011208 -5.069988 1.011208 -4.958406V1.471482C1.011208 1.57609 1.011208 1.743462 1.17858 1.743462C1.352927 1.743462 1.352927 1.583064 1.352927 1.471482V-4.958406Z" id="g2-106" />
|
||||
<ns0:path d="M1.444583 5.818182C1.444583 5.977584 1.444583 6.1868 1.653798 6.1868C1.872976 6.1868 1.872976 5.987547 1.872976 5.818182V0.159402C1.872976 0 1.872976 -0.209215 1.663761 -0.209215C1.444583 -0.209215 1.444583 -0.009963 1.444583 0.159402V5.818182ZM3.656289 5.818182C3.656289 5.977584 3.656289 6.1868 3.865504 6.1868C4.084682 6.1868 4.084682 5.987547 4.084682 5.818182V0.159402C4.084682 0 4.084682 -0.209215 3.875467 -0.209215C3.656289 -0.209215 3.656289 -0.009963 3.656289 0.159402V5.818182Z" id="g8-13" />
|
||||
<ns0:path d="M3.706102 -3.247821C3.795766 -3.347447 3.795766 -3.387298 3.795766 -3.407223C3.795766 -3.457036 3.755915 -3.506849 3.726027 -3.5467L1.683686 -6.495641H3.985056C5.668742 -6.495641 6.166874 -6.136986 6.37609 -4.562889H6.625156L6.346202 -6.804483H0.816936C0.577833 -6.804483 0.557908 -6.804483 0.557908 -6.575342L3.038605 -2.968867L0.667497 -0.268991C0.56787 -0.159402 0.56787 -0.139477 0.56787 -0.109589C0.56787 0 0.667497 0 0.816936 0H6.346202L6.625156 -2.351183H6.37609C6.196762 -0.687422 5.519303 -0.418431 3.955168 -0.418431H1.205479L3.706102 -3.247821Z" id="g6-6" />
|
||||
<ns0:path d="M6.844334 -3.257783C6.993773 -3.257783 7.183064 -3.257783 7.183064 -3.457036S6.993773 -3.656289 6.854296 -3.656289H0.886675C0.747198 -3.656289 0.557908 -3.656289 0.557908 -3.457036S0.747198 -3.257783 0.896638 -3.257783H6.844334ZM6.854296 -1.325031C6.993773 -1.325031 7.183064 -1.325031 7.183064 -1.524284S6.993773 -1.723537 6.844334 -1.723537H0.896638C0.747198 -1.723537 0.557908 -1.723537 0.557908 -1.524284S0.747198 -1.325031 0.886675 -1.325031H6.854296Z" id="g6-61" />
|
||||
<ns0:path d="M2.433873 -1.562142C2.538481 -1.562142 2.670984 -1.562142 2.670984 -1.694645C2.670984 -1.8132 2.566376 -1.8132 2.433873 -1.8132H1.185554C1.39477 -2.447821 1.84807 -2.75467 2.461768 -2.75467H2.726775C2.838356 -2.75467 2.970859 -2.75467 2.970859 -2.887173C2.970859 -3.005729 2.873225 -3.005729 2.740722 -3.005729H2.440847C1.513325 -3.005729 0.474222 -2.357161 0.474222 -1.297136C0.474222 -0.481196 1.094894 0.069738 1.903861 0.069738C2.113076 0.069738 2.405978 0.034869 2.775592 -0.174346C2.915068 -0.251059 2.929016 -0.27198 2.929016 -0.313823C2.929016 -0.334745 2.929016 -0.4533 2.824408 -0.4533C2.796513 -0.4533 2.782565 -0.446326 2.740722 -0.418431C2.496638 -0.258032 2.203736 -0.125529 1.917808 -0.125529C1.638854 -0.125529 1.060025 -0.265006 1.060025 -1.060025C1.060025 -1.157659 1.060025 -1.297136 1.12279 -1.562142H2.433873Z" id="g4-15" />
|
||||
<ns0:path d="M1.471482 -0.111582C1.471482 0.27198 1.401743 0.718306 0.927522 1.164633C0.899626 1.192528 0.878705 1.21345 0.878705 1.248319C0.878705 1.297136 0.934496 1.345953 0.976339 1.345953C1.073973 1.345953 1.66675 0.788045 1.66675 -0.041843C1.66675 -0.474222 1.499377 -0.801993 1.17858 -0.801993C0.948443 -0.801993 0.781071 -0.620672 0.781071 -0.404483C0.781071 -0.18132 0.941469 0 1.185554 0C1.352927 0 1.464508 -0.111582 1.471482 -0.111582Z" id="g4-59" />
|
||||
<ns0:path d="M5.314072 -1.562142C5.397758 -1.603985 5.467497 -1.652802 5.467497 -1.743462C5.467497 -1.855044 5.390785 -1.889913 5.321046 -1.924782L1.066999 -3.975093C0.969365 -4.02391 0.941469 -4.02391 0.927522 -4.02391C0.829888 -4.02391 0.753176 -3.947198 0.753176 -3.849564C0.753176 -3.744956 0.836862 -3.703113 0.899626 -3.675218L4.902615 -1.750436L0.9066 0.174346C0.822914 0.216189 0.753176 0.265006 0.753176 0.355666C0.753176 0.4533 0.829888 0.530012 0.927522 0.530012C0.934496 0.530012 0.969365 0.530012 1.053051 0.488169L5.314072 -1.562142Z" id="g4-62" />
|
||||
<ns0:path d="M5.816189 -4.002989C5.885928 -4.267995 5.997509 -4.498132 6.555417 -4.51208C6.590286 -4.51208 6.694894 -4.519054 6.694894 -4.665504C6.694894 -4.707347 6.660025 -4.763138 6.590286 -4.763138C6.360149 -4.763138 6.102117 -4.735243 5.865006 -4.735243C5.697634 -4.735243 5.293151 -4.763138 5.125778 -4.763138C5.090909 -4.763138 4.986301 -4.763138 4.986301 -4.609714C4.986301 -4.519054 5.076961 -4.51208 5.139726 -4.51208C5.467497 -4.505106 5.586052 -4.400498 5.586052 -4.226152C5.586052 -4.170361 5.579078 -4.135492 5.558157 -4.05878L4.798007 -1.018182L3.02665 -4.644583C2.970859 -4.763138 2.956912 -4.763138 2.789539 -4.763138H1.834122C1.701619 -4.763138 1.610959 -4.763138 1.610959 -4.609714C1.610959 -4.51208 1.694645 -4.51208 1.841096 -4.51208S2.140971 -4.505106 2.287422 -4.47721L1.352927 -0.746202C1.290162 -0.481196 1.171606 -0.27198 0.627646 -0.251059C0.578829 -0.251059 0.481196 -0.244085 0.481196 -0.104608C0.481196 -0.027895 0.536986 0 0.585803 0C0.81594 0 1.073973 -0.027895 1.311083 -0.027895C1.478456 -0.027895 1.882939 0 2.050311 0C2.12005 0 2.189788 -0.034869 2.189788 -0.146451C2.189788 -0.244085 2.106102 -0.251059 2.02939 -0.251059C1.590037 -0.265006 1.590037 -0.446326 1.590037 -0.54396C1.590037 -0.571856 1.590037 -0.606725 1.617933 -0.718306L2.510585 -4.288917L4.546949 -0.118555C4.60274 -0.006974 4.630635 0 4.700374 0C4.811955 0 4.811955 -0.020922 4.846824 -0.146451L5.816189 -4.002989Z" id="g4-78" />
|
||||
<ns0:path d="M3.054545 -2.670984C2.803487 -2.629141 2.698879 -2.433873 2.698879 -2.280448C2.698879 -2.092154 2.84533 -2.022416 2.970859 -2.022416C3.124284 -2.022416 3.368369 -2.133998 3.368369 -2.468742C3.368369 -2.942964 2.824408 -3.075467 2.447821 -3.075467C1.401743 -3.075467 0.432379 -2.113076 0.432379 -1.143711C0.432379 -0.54396 0.850809 0.069738 1.72254 0.069738C2.901121 0.069738 3.452055 -0.620672 3.452055 -0.718306C3.452055 -0.760149 3.38929 -0.836862 3.333499 -0.836862C3.291656 -0.836862 3.277709 -0.822914 3.221918 -0.767123C2.677958 -0.125529 1.862017 -0.125529 1.736488 -0.125529C1.234371 -0.125529 1.011208 -0.467248 1.011208 -0.899626C1.011208 -1.101868 1.108842 -1.862017 1.471482 -2.343213C1.736488 -2.684932 2.099128 -2.880199 2.447821 -2.880199C2.545455 -2.880199 2.880199 -2.866252 3.054545 -2.670984Z" id="g4-99" />
|
||||
<ns0:path d="M2.838356 -2.75467H3.521793C3.66127 -2.75467 3.75193 -2.75467 3.75193 -2.908095C3.75193 -3.005729 3.66127 -3.005729 3.535741 -3.005729H2.887173C3.047572 -3.891407 3.103362 -4.212204 3.159153 -4.414446C3.194022 -4.56787 3.347447 -4.714321 3.514819 -4.714321C3.521793 -4.714321 3.710087 -4.714321 3.84259 -4.630635C3.556663 -4.539975 3.535741 -4.288917 3.535741 -4.247073C3.535741 -4.093649 3.654296 -3.989041 3.814695 -3.989041C4.002989 -3.989041 4.212204 -4.14944 4.212204 -4.414446C4.212204 -4.735243 3.870486 -4.909589 3.514819 -4.909589C3.20797 -4.909589 2.866252 -4.735243 2.677958 -4.38655C2.538481 -4.128518 2.48269 -3.814695 2.336239 -3.005729H1.785305C1.645828 -3.005729 1.555168 -3.005729 1.555168 -2.852304C1.555168 -2.75467 1.645828 -2.75467 1.771357 -2.75467H2.287422C2.280448 -2.712827 1.841096 -0.202242 1.673724 0.54396C1.638854 0.697385 1.520299 1.227397 1.185554 1.227397C1.17858 1.227397 1.011208 1.227397 0.878705 1.143711C1.164633 1.053051 1.185554 0.801993 1.185554 0.760149C1.185554 0.606725 1.066999 0.502117 0.9066 0.502117C0.718306 0.502117 0.509091 0.662516 0.509091 0.927522C0.509091 1.241345 0.836862 1.422665 1.185554 1.422665C1.63188 1.422665 1.93873 0.962391 2.022416 0.808966C2.273474 0.341719 2.433873 -0.516065 2.447821 -0.599751L2.838356 -2.75467Z" id="g4-102" />
|
||||
<ns0:path d="M3.710087 -2.57335C3.737983 -2.677958 3.737983 -2.712827 3.737983 -2.719801C3.737983 -2.873225 3.612453 -2.942964 3.500872 -2.942964C3.340473 -2.942964 3.20797 -2.810461 3.180075 -2.677958C3.061519 -2.866252 2.824408 -3.075467 2.461768 -3.075467C1.590037 -3.075467 0.676463 -2.140971 0.676463 -1.143711C0.676463 -0.425405 1.164633 0 1.736488 0C2.057285 0 2.364134 -0.160399 2.608219 -0.376588L2.454795 0.251059C2.378082 0.54396 2.329265 0.732254 2.064259 0.969365C1.75741 1.227397 1.457534 1.227397 1.283188 1.227397C0.962391 1.227397 0.871731 1.206476 0.746202 1.17858C0.920548 1.094894 0.969365 0.927522 0.969365 0.829888C0.969365 0.662516 0.836862 0.571856 0.697385 0.571856C0.502117 0.571856 0.299875 0.732254 0.299875 0.99726C0.299875 1.415691 0.899626 1.422665 1.290162 1.422665C2.385056 1.422665 2.852304 0.864757 2.949938 0.467248L3.710087 -2.57335ZM2.747696 -0.927522C2.719801 -0.822914 2.719801 -0.808966 2.601245 -0.669489C2.357161 -0.376588 2.022416 -0.195268 1.75741 -0.195268C1.401743 -0.195268 1.234371 -0.495143 1.234371 -0.857783C1.234371 -1.164633 1.422665 -1.945704 1.603985 -2.252553C1.896887 -2.740722 2.224658 -2.880199 2.461768 -2.880199C2.949938 -2.880199 3.082441 -2.357161 3.082441 -2.287422C3.082441 -2.273474 3.082441 -2.259527 3.061519 -2.182814L2.747696 -0.927522Z" id="g4-103" />
|
||||
<ns0:path d="M3.724035 -2.531507C3.724035 -3.075467 3.396264 -3.082441 3.375342 -3.082441C3.194022 -3.082441 2.998755 -2.894147 2.998755 -2.712827C2.998755 -2.594271 3.068493 -2.538481 3.11731 -2.496638C3.235866 -2.399004 3.375342 -2.217684 3.375342 -1.93873C3.375342 -1.624907 2.915068 -0.125529 2.085181 -0.125529C1.520299 -0.125529 1.520299 -0.627646 1.520299 -0.746202C1.520299 -1.066999 1.645828 -1.457534 1.903861 -2.106102C1.959651 -2.252553 2.001494 -2.357161 2.001494 -2.475716C2.001494 -2.838356 1.694645 -3.075467 1.338979 -3.075467C0.641594 -3.075467 0.327771 -2.12005 0.327771 -2.008468C0.327771 -1.917808 0.425405 -1.917808 0.446326 -1.917808C0.54396 -1.917808 0.550934 -1.952677 0.571856 -2.02939C0.739228 -2.601245 1.039103 -2.880199 1.318057 -2.880199C1.436613 -2.880199 1.492403 -2.803487 1.492403 -2.636115C1.492403 -2.475716 1.436613 -2.329265 1.366874 -2.168867C1.066999 -1.39477 0.990286 -1.094894 0.990286 -0.843836C0.990286 -0.153425 1.534247 0.069738 2.064259 0.069738C3.235866 0.069738 3.724035 -1.959651 3.724035 -2.531507Z" id="g4-118" />
|
||||
<ns0:path d="M1.135741 -3.5467V-0.468244H0.448319V0C0.727273 -0.009963 1.325031 -0.029888 1.703611 -0.029888C2.092154 -0.029888 2.67995 -0.009963 2.958904 0V-0.468244H2.271482V-2.550436C2.271482 -3.636364 3.128269 -4.124533 3.755915 -4.124533C4.094645 -4.124533 4.303861 -3.915318 4.303861 -3.158157V-0.468244H3.616438V0C3.895392 -0.009963 4.493151 -0.029888 4.871731 -0.029888C5.260274 -0.029888 5.84807 -0.009963 6.127024 0V-0.468244H5.439601V-3.048568C5.439601 -4.094645 4.901619 -4.483188 3.905355 -4.483188C2.948941 -4.483188 2.420922 -3.915318 2.161893 -3.407223V-4.483188L0.448319 -4.403487V-3.935243C1.066002 -3.935243 1.135741 -3.935243 1.135741 -3.5467Z" id="g1-110" />
|
||||
</ns0:defs>
|
||||
<ns0:g fill-opacity="0.9" id="page1">
|
||||
<ns0:use x="65.750263" y="-46.523383" ns1:href="#g1-110" />
|
||||
<ns0:use x="72.115249" y="-45.029002" ns1:href="#g4-102" />
|
||||
<ns0:use x="76.352885" y="-45.029002" ns1:href="#g4-59" />
|
||||
<ns0:use x="78.719026" y="-45.029002" ns1:href="#g4-99" />
|
||||
<ns0:use x="85.544868" y="-46.523383" ns1:href="#g6-61" />
|
||||
<ns0:use x="108.326096" y="-54.233301" ns1:href="#g6-6" />
|
||||
<ns0:use x="115.521356" y="-52.434474" ns1:href="#g4-103" />
|
||||
<ns0:use x="119.658306" y="-52.434474" ns1:href="#g2-50" />
|
||||
<ns0:use x="125.027089" y="-52.434474" ns1:href="#g4-78" />
|
||||
<ns0:use x="132.085355" y="-52.434474" ns1:href="#g7-40" />
|
||||
<ns0:use x="135.198698" y="-52.434474" ns1:href="#g4-118" />
|
||||
<ns0:use x="139.434007" y="-52.434474" ns1:href="#g7-41" />
|
||||
<ns0:use x="143.907985" y="-52.434474" ns1:href="#g2-106" />
|
||||
<ns0:use x="147.634762" y="-52.434474" ns1:href="#g0-110" />
|
||||
<ns0:use x="152.643751" y="-51.43821" ns1:href="#g5-103" />
|
||||
<ns0:use x="156.810437" y="-52.434474" ns1:href="#g2-1" />
|
||||
<ns0:use x="159.176579" y="-52.434474" ns1:href="#g0-110" />
|
||||
<ns0:use x="164.185567" y="-51.377327" ns1:href="#g5-102" />
|
||||
<ns0:use x="168.679168" y="-52.434474" ns1:href="#g4-62" />
|
||||
<ns0:use x="174.905848" y="-52.434474" ns1:href="#g4-15" />
|
||||
<ns0:use x="178.724439" y="-54.233301" ns1:href="#g3-97" />
|
||||
<ns0:use x="183.990593" y="-52.73892" ns1:href="#g4-103" />
|
||||
<ns0:use x="188.625662" y="-54.233301" ns1:href="#g1-110" />
|
||||
<ns0:use x="194.990648" y="-52.73892" ns1:href="#g4-103" />
|
||||
<ns0:rect height="0.398484" width="113.438862" x="97.256462" y="-49.213293" />
|
||||
<ns0:use x="97.256462" y="-47.619355" ns1:href="#g8-13" />
|
||||
<ns0:use x="97.256462" y="-41.64171" ns1:href="#g8-13" />
|
||||
<ns0:use x="102.791279" y="-47.619355" ns1:href="#g8-13" />
|
||||
<ns0:use x="102.791279" y="-41.64171" ns1:href="#g8-13" />
|
||||
<ns0:use x="108.326096" y="-39.15105" ns1:href="#g6-6" />
|
||||
<ns0:use x="115.521356" y="-37.352223" ns1:href="#g4-103" />
|
||||
<ns0:use x="119.658306" y="-37.352223" ns1:href="#g2-50" />
|
||||
<ns0:use x="125.027089" y="-37.352223" ns1:href="#g4-78" />
|
||||
<ns0:use x="132.085355" y="-37.352223" ns1:href="#g7-40" />
|
||||
<ns0:use x="135.198698" y="-37.352223" ns1:href="#g4-118" />
|
||||
<ns0:use x="139.434007" y="-37.352223" ns1:href="#g7-41" />
|
||||
<ns0:use x="143.907985" y="-37.352223" ns1:href="#g2-106" />
|
||||
<ns0:use x="147.634762" y="-37.352223" ns1:href="#g0-110" />
|
||||
<ns0:use x="152.643751" y="-36.355959" ns1:href="#g5-103" />
|
||||
<ns0:use x="156.810437" y="-37.352223" ns1:href="#g2-1" />
|
||||
<ns0:use x="159.176579" y="-37.352223" ns1:href="#g0-110" />
|
||||
<ns0:use x="164.185567" y="-36.295076" ns1:href="#g5-102" />
|
||||
<ns0:use x="168.679168" y="-37.352223" ns1:href="#g4-62" />
|
||||
<ns0:use x="174.905848" y="-37.352223" ns1:href="#g4-15" />
|
||||
<ns0:use x="178.724439" y="-39.15105" ns1:href="#g3-97" />
|
||||
<ns0:use x="183.990593" y="-37.65667" ns1:href="#g4-103" />
|
||||
<ns0:use x="188.625662" y="-39.15105" ns1:href="#g1-110" />
|
||||
<ns0:use x="194.990648" y="-37.65667" ns1:href="#g4-103" />
|
||||
<ns0:use x="199.625717" y="-47.619355" ns1:href="#g8-13" />
|
||||
<ns0:use x="199.625717" y="-41.64171" ns1:href="#g8-13" />
|
||||
<ns0:use x="205.160507" y="-47.619355" ns1:href="#g8-13" />
|
||||
<ns0:use x="205.160507" y="-41.64171" ns1:href="#g8-13" />
|
||||
<ns0:use x="211.890838" y="-46.523383" ns1:href="#g3-59" />
|
||||
</ns0:g>
|
||||
</ns0:svg>
|
1739
markdown/cube.ai
Normal file
BIN
markdown/cube.png
Normal file
After Width: | Height: | Size: 128 KiB |
BIN
markdown/earth.gif
Normal file
After Width: | Height: | Size: 1.4 MiB |
17
markdown/ec6276257da0cb44caa5ae4b07afb40e.svg
Normal file
|
@ -0,0 +1,17 @@
|
|||
<ns0:svg xmlns:ns0="http://www.w3.org/2000/svg" xmlns:ns1="http://www.w3.org/1999/xlink" height="16.21924399999999pt" readme2tex:offset="1.494381000000006" version="1.1" viewBox="-52.07469 -70.146971 34.10400299999999 16.21924399999999" width="34.10400299999999pt" xmlns:readme2tex="http://github.com/leegao/readme2tex/">
|
||||
<ns0:defs>
|
||||
<ns0:path d="M1.903861 -2.329265C2.447821 -2.329265 2.838356 -1.952677 2.838356 -1.206476C2.838356 -0.341719 2.336239 -0.083686 1.931756 -0.083686C1.652802 -0.083686 1.039103 -0.160399 0.746202 -0.571856C1.073973 -0.585803 1.150685 -0.81594 1.150685 -0.962391C1.150685 -1.185554 0.983313 -1.345953 0.767123 -1.345953C0.571856 -1.345953 0.376588 -1.227397 0.376588 -0.941469C0.376588 -0.285928 1.101868 0.139477 1.945704 0.139477C2.915068 0.139477 3.584558 -0.509091 3.584558 -1.206476C3.584558 -1.750436 3.138232 -2.294396 2.371108 -2.454795C3.103362 -2.719801 3.368369 -3.242839 3.368369 -3.668244C3.368369 -4.219178 2.733748 -4.630635 1.959651 -4.630635S0.592777 -4.254047 0.592777 -3.696139C0.592777 -3.459029 0.746202 -3.326526 0.955417 -3.326526C1.171606 -3.326526 1.311083 -3.486924 1.311083 -3.682192C1.311083 -3.884433 1.171606 -4.030884 0.955417 -4.044832C1.199502 -4.351681 1.680697 -4.428394 1.93873 -4.428394C2.252553 -4.428394 2.691905 -4.274969 2.691905 -3.668244C2.691905 -3.375342 2.594271 -3.054545 2.412951 -2.838356C2.182814 -2.57335 1.987547 -2.559402 1.638854 -2.538481C1.464508 -2.524533 1.45056 -2.524533 1.415691 -2.517559C1.401743 -2.517559 1.345953 -2.503611 1.345953 -2.426899C1.345953 -2.329265 1.408717 -2.329265 1.527273 -2.329265H1.903861Z" id="g4-51" />
|
||||
<ns0:path d="M2.259527 -4.358655C2.259527 -4.470237 2.175841 -4.623661 1.980573 -4.623661C1.792279 -4.623661 1.590037 -4.442341 1.590037 -4.2401C1.590037 -4.121544 1.680697 -3.975093 1.868991 -3.975093C2.071233 -3.975093 2.259527 -4.170361 2.259527 -4.358655ZM0.836862 -0.81594C0.808966 -0.72528 0.774097 -0.641594 0.774097 -0.523039C0.774097 -0.195268 1.053051 0.069738 1.436613 0.069738C2.133998 0.069738 2.440847 -0.892653 2.440847 -0.99726C2.440847 -1.08792 2.350187 -1.08792 2.329265 -1.08792C2.231631 -1.08792 2.224658 -1.046077 2.196762 -0.969365C2.036364 -0.411457 1.729514 -0.125529 1.457534 -0.125529C1.318057 -0.125529 1.283188 -0.216189 1.283188 -0.369614C1.283188 -0.530012 1.332005 -0.662516 1.39477 -0.81594C1.464508 -1.004234 1.54122 -1.192528 1.617933 -1.373848C1.680697 -1.54122 1.931756 -2.175841 1.959651 -2.259527C1.980573 -2.329265 2.001494 -2.412951 2.001494 -2.48269C2.001494 -2.810461 1.72254 -3.075467 1.338979 -3.075467C0.648568 -3.075467 0.327771 -2.127024 0.327771 -2.008468C0.327771 -1.917808 0.425405 -1.917808 0.446326 -1.917808C0.54396 -1.917808 0.550934 -1.952677 0.571856 -2.02939C0.753176 -2.629141 1.060025 -2.880199 1.318057 -2.880199C1.429639 -2.880199 1.492403 -2.824408 1.492403 -2.636115C1.492403 -2.475716 1.45056 -2.371108 1.276214 -1.93873L0.836862 -0.81594Z" id="g2-105" />
|
||||
<ns0:path d="M2.819427 -3.596513V-6.366127H3.995019C5.599004 -6.366127 5.618929 -5.589041 5.618929 -4.98132C5.618929 -4.423412 5.618929 -3.596513 3.975093 -3.596513H2.819427ZM5.479452 -3.387298C6.635118 -3.686177 7.143213 -4.333748 7.143213 -4.991283C7.143213 -5.997509 6.047323 -6.834371 4.174346 -6.834371H0.388543V-6.366127H1.464508V-0.468244H0.388543V0C0.747198 -0.029888 1.723537 -0.029888 2.141968 -0.029888S3.536737 -0.029888 3.895392 0V-0.468244H2.819427V-3.237858H3.985056C4.124533 -3.237858 4.562889 -3.237858 4.871731 -2.899128C5.190535 -2.550436 5.190535 -2.361146 5.190535 -1.633873C5.190535 -0.976339 5.190535 -0.488169 5.88792 -0.14944C6.326276 0.069738 6.94396 0.109589 7.352428 0.109589C8.418431 0.109589 8.547945 -0.787049 8.547945 -0.946451C8.547945 -1.165629 8.408468 -1.165629 8.308842 -1.165629C8.099626 -1.165629 8.089664 -1.066002 8.079701 -0.936488C8.029888 -0.468244 7.740971 -0.249066 7.442092 -0.249066C6.844334 -0.249066 6.75467 -0.956413 6.704857 -1.374844C6.684932 -1.484433 6.60523 -2.171856 6.595268 -2.221669C6.455791 -2.919054 5.907846 -3.227895 5.479452 -3.387298Z" id="g0-82" />
|
||||
<ns0:path d="M5.041096 -3.745953C5.100872 -3.88543 5.140722 -3.955168 5.778331 -3.955168V-4.423412C5.529265 -4.403487 5.240349 -4.393524 4.991283 -4.393524S4.293898 -4.41345 4.084682 -4.423412V-3.955168C4.273973 -3.955168 4.562889 -3.92528 4.562889 -3.845579C4.562889 -3.835616 4.552927 -3.815691 4.513076 -3.726027L3.35741 -1.235367L2.092154 -3.955168H2.630137V-4.423412C2.30137 -4.403487 1.404732 -4.393524 1.39477 -4.393524C1.115816 -4.393524 0.667497 -4.41345 0.259029 -4.423412V-3.955168H0.896638L2.6401 -0.209215C2.759651 0.039851 2.889166 0.039851 3.01868 0.039851C3.188045 0.039851 3.287671 0.009963 3.387298 -0.199253L5.041096 -3.745953Z" id="g0-118" />
|
||||
<ns0:path d="M5.459527 -2.291407C5.628892 -2.291407 5.808219 -2.291407 5.808219 -2.49066S5.628892 -2.689913 5.459527 -2.689913H1.235367C1.354919 -4.024907 2.500623 -4.98132 3.905355 -4.98132H5.459527C5.628892 -4.98132 5.808219 -4.98132 5.808219 -5.180573S5.628892 -5.379826 5.459527 -5.379826H3.88543C2.181818 -5.379826 0.826899 -4.084682 0.826899 -2.49066S2.181818 0.398506 3.88543 0.398506H5.459527C5.628892 0.398506 5.808219 0.398506 5.808219 0.199253S5.628892 0 5.459527 0H3.905355C2.500623 0 1.354919 -0.956413 1.235367 -2.291407H5.459527Z" id="g1-50" />
|
||||
<ns0:path d="M3.317559 -0.757161C3.35741 -0.358655 3.626401 0.059776 4.094645 0.059776C4.303861 0.059776 4.911582 -0.079701 4.911582 -0.886675V-1.444583H4.662516V-0.886675C4.662516 -0.308842 4.41345 -0.249066 4.303861 -0.249066C3.975093 -0.249066 3.935243 -0.697385 3.935243 -0.747198V-2.739726C3.935243 -3.158157 3.935243 -3.5467 3.576588 -3.915318C3.188045 -4.303861 2.689913 -4.463263 2.211706 -4.463263C1.39477 -4.463263 0.707347 -3.995019 0.707347 -3.337484C0.707347 -3.038605 0.9066 -2.86924 1.165629 -2.86924C1.444583 -2.86924 1.62391 -3.068493 1.62391 -3.327522C1.62391 -3.447073 1.574097 -3.775841 1.115816 -3.785803C1.384807 -4.134496 1.872976 -4.244085 2.191781 -4.244085C2.67995 -4.244085 3.247821 -3.855542 3.247821 -2.968867V-2.600249C2.739726 -2.570361 2.042341 -2.540473 1.414695 -2.241594C0.667497 -1.902864 0.418431 -1.384807 0.418431 -0.946451C0.418431 -0.139477 1.384807 0.109589 2.012453 0.109589C2.669988 0.109589 3.128269 -0.288917 3.317559 -0.757161ZM3.247821 -2.391034V-1.39477C3.247821 -0.448319 2.530511 -0.109589 2.082192 -0.109589C1.594022 -0.109589 1.185554 -0.458281 1.185554 -0.956413C1.185554 -1.504359 1.603985 -2.331258 3.247821 -2.391034Z" id="g3-97" />
|
||||
</ns0:defs>
|
||||
<ns0:g fill-opacity="0.9" id="page1">
|
||||
<ns0:use x="-52.07469" y="-62.037349" ns1:href="#g0-118" />
|
||||
<ns0:use x="-46.027953" y="-60.542968" ns1:href="#g2-105" />
|
||||
<ns0:use x="-39.943774" y="-62.037349" ns1:href="#g1-50" />
|
||||
<ns0:use x="-30.534659" y="-62.037349" ns1:href="#g0-82" />
|
||||
<ns0:use x="-21.941928" y="-65.652713" ns1:href="#g4-51" />
|
||||
</ns0:g>
|
||||
</ns0:svg>
|
15
markdown/f947b3c602ca948910b99f1601e5abed.svg
Normal file
|
@ -0,0 +1,15 @@
|
|||
<ns0:svg xmlns:ns0="http://www.w3.org/2000/svg" xmlns:ns1="http://www.w3.org/1999/xlink" height="14.94395999999999pt" readme2tex:offset="2.4906600000000054" version="1.1" viewBox="-52.07469 -69.509329 22.026207999999993 14.94395999999999" width="22.026207999999993pt" xmlns:readme2tex="http://github.com/leegao/readme2tex/">
|
||||
<ns0:defs>
|
||||
<ns0:path d="M7.531756 -5.758406C7.631382 -6.156912 7.81071 -6.465753 8.607721 -6.495641C8.657534 -6.495641 8.777086 -6.505604 8.777086 -6.694894C8.777086 -6.704857 8.777086 -6.804483 8.647572 -6.804483C8.318804 -6.804483 7.970112 -6.774595 7.641345 -6.774595C7.302615 -6.774595 6.953923 -6.804483 6.625156 -6.804483C6.56538 -6.804483 6.445828 -6.804483 6.445828 -6.60523C6.445828 -6.495641 6.545455 -6.495641 6.625156 -6.495641C7.193026 -6.485679 7.302615 -6.276463 7.302615 -6.057285C7.302615 -6.027397 7.28269 -5.877958 7.272727 -5.84807L6.156912 -1.414695L3.955168 -6.615193C3.875467 -6.794521 3.865504 -6.804483 3.636364 -6.804483H2.30137C2.102117 -6.804483 2.012453 -6.804483 2.012453 -6.60523C2.012453 -6.495641 2.102117 -6.495641 2.291407 -6.495641C2.34122 -6.495641 2.968867 -6.495641 2.968867 -6.405978L1.633873 -1.05604C1.534247 -0.657534 1.364882 -0.33873 0.557908 -0.308842C0.498132 -0.308842 0.388543 -0.298879 0.388543 -0.109589C0.388543 -0.039851 0.438356 0 0.518057 0C0.836862 0 1.185554 -0.029888 1.514321 -0.029888C1.853051 -0.029888 2.211706 0 2.540473 0C2.590286 0 2.719801 0 2.719801 -0.199253C2.719801 -0.298879 2.630137 -0.308842 2.520548 -0.308842C1.942715 -0.328767 1.863014 -0.547945 1.863014 -0.747198C1.863014 -0.816936 1.872976 -0.86675 1.902864 -0.976339L3.217933 -6.236613C3.257783 -6.176837 3.257783 -6.156912 3.307597 -6.057285L5.788294 -0.18929C5.858032 -0.019925 5.88792 0 5.977584 0C6.087173 0 6.087173 -0.029888 6.136986 -0.209215L7.531756 -5.758406Z" id="g0-78" />
|
||||
<ns0:path d="M4.662516 -3.706102C4.662516 -4.244085 4.403487 -4.403487 4.224159 -4.403487C3.975093 -4.403487 3.73599 -4.144458 3.73599 -3.92528C3.73599 -3.795766 3.785803 -3.73599 3.895392 -3.626401C4.104608 -3.427148 4.234122 -3.16812 4.234122 -2.809465C4.234122 -2.391034 3.626401 -0.109589 2.460772 -0.109589C1.952677 -0.109589 1.723537 -0.458281 1.723537 -0.976339C1.723537 -1.534247 1.992528 -2.261519 2.30137 -3.088418C2.371108 -3.257783 2.420922 -3.39726 2.420922 -3.58655C2.420922 -4.034869 2.102117 -4.403487 1.603985 -4.403487C0.667497 -4.403487 0.288917 -2.958904 0.288917 -2.86924C0.288917 -2.769614 0.388543 -2.769614 0.408468 -2.769614C0.508095 -2.769614 0.518057 -2.789539 0.56787 -2.948941C0.856787 -3.955168 1.285181 -4.184309 1.574097 -4.184309C1.653798 -4.184309 1.823163 -4.184309 1.823163 -3.865504C1.823163 -3.616438 1.723537 -3.347447 1.653798 -3.16812C1.215442 -2.012453 1.085928 -1.554172 1.085928 -1.125778C1.085928 -0.049813 1.96264 0.109589 2.420922 0.109589C4.094645 0.109589 4.662516 -3.188045 4.662516 -3.706102Z" id="g0-118" />
|
||||
<ns0:path d="M3.297634 2.391034C3.297634 2.361146 3.297634 2.34122 3.128269 2.171856C1.882939 0.916563 1.564134 -0.966376 1.564134 -2.49066C1.564134 -4.224159 1.942715 -5.957659 3.16812 -7.202989C3.297634 -7.32254 3.297634 -7.342466 3.297634 -7.372354C3.297634 -7.442092 3.257783 -7.47198 3.198007 -7.47198C3.098381 -7.47198 2.201743 -6.794521 1.613948 -5.529265C1.105853 -4.433375 0.986301 -3.327522 0.986301 -2.49066C0.986301 -1.713574 1.09589 -0.508095 1.643836 0.617684C2.241594 1.843088 3.098381 2.49066 3.198007 2.49066C3.257783 2.49066 3.297634 2.460772 3.297634 2.391034Z" id="g1-40" />
|
||||
<ns0:path d="M2.879203 -2.49066C2.879203 -3.267746 2.769614 -4.473225 2.221669 -5.599004C1.62391 -6.824408 0.767123 -7.47198 0.667497 -7.47198C0.607721 -7.47198 0.56787 -7.43213 0.56787 -7.372354C0.56787 -7.342466 0.56787 -7.32254 0.757161 -7.143213C1.733499 -6.156912 2.30137 -4.572852 2.30137 -2.49066C2.30137 -0.787049 1.932752 0.966376 0.697385 2.221669C0.56787 2.34122 0.56787 2.361146 0.56787 2.391034C0.56787 2.450809 0.607721 2.49066 0.667497 2.49066C0.767123 2.49066 1.663761 1.8132 2.251557 0.547945C2.759651 -0.547945 2.879203 -1.653798 2.879203 -2.49066Z" id="g1-41" />
|
||||
<ns0:path d="M3.317559 -0.757161C3.35741 -0.358655 3.626401 0.059776 4.094645 0.059776C4.303861 0.059776 4.911582 -0.079701 4.911582 -0.886675V-1.444583H4.662516V-0.886675C4.662516 -0.308842 4.41345 -0.249066 4.303861 -0.249066C3.975093 -0.249066 3.935243 -0.697385 3.935243 -0.747198V-2.739726C3.935243 -3.158157 3.935243 -3.5467 3.576588 -3.915318C3.188045 -4.303861 2.689913 -4.463263 2.211706 -4.463263C1.39477 -4.463263 0.707347 -3.995019 0.707347 -3.337484C0.707347 -3.038605 0.9066 -2.86924 1.165629 -2.86924C1.444583 -2.86924 1.62391 -3.068493 1.62391 -3.327522C1.62391 -3.447073 1.574097 -3.775841 1.115816 -3.785803C1.384807 -4.134496 1.872976 -4.244085 2.191781 -4.244085C2.67995 -4.244085 3.247821 -3.855542 3.247821 -2.968867V-2.600249C2.739726 -2.570361 2.042341 -2.540473 1.414695 -2.241594C0.667497 -1.902864 0.418431 -1.384807 0.418431 -0.946451C0.418431 -0.139477 1.384807 0.109589 2.012453 0.109589C2.669988 0.109589 3.128269 -0.288917 3.317559 -0.757161ZM3.247821 -2.391034V-1.39477C3.247821 -0.448319 2.530511 -0.109589 2.082192 -0.109589C1.594022 -0.109589 1.185554 -0.458281 1.185554 -0.956413C1.185554 -1.504359 1.603985 -2.331258 3.247821 -2.391034Z" id="g1-97" />
|
||||
</ns0:defs>
|
||||
<ns0:g fill-opacity="0.9" id="page1">
|
||||
<ns0:use x="-52.07469" y="-62.037349" ns1:href="#g0-78" />
|
||||
<ns0:use x="-42.9838" y="-62.037349" ns1:href="#g1-40" />
|
||||
<ns0:use x="-39.109426" y="-62.037349" ns1:href="#g0-118" />
|
||||
<ns0:use x="-33.922855" y="-62.037349" ns1:href="#g1-41" />
|
||||
</ns0:g>
|
||||
</ns0:svg>
|
11
markdown/fac5b28b95f69ccc2e9d37b26c68864f.svg
Normal file
|
@ -0,0 +1,11 @@
|
|||
<ns0:svg xmlns:ns0="http://www.w3.org/2000/svg" xmlns:ns1="http://www.w3.org/1999/xlink" height="8.85568400000001pt" readme2tex:offset="1.4943809999999944" version="1.1" viewBox="-52.07469 -66.465191 10.450390999999994 8.85568400000001" width="10.450390999999994pt" xmlns:readme2tex="http://github.com/leegao/readme2tex/">
|
||||
<ns0:defs>
|
||||
<ns0:path d="M2.182814 -4.630635C2.189788 -4.644583 2.21071 -4.735243 2.21071 -4.742217C2.21071 -4.777086 2.182814 -4.839851 2.099128 -4.839851C1.959651 -4.839851 1.380822 -4.78406 1.206476 -4.770112C1.150685 -4.763138 1.053051 -4.756164 1.053051 -4.609714C1.053051 -4.51208 1.150685 -4.51208 1.234371 -4.51208C1.569116 -4.51208 1.569116 -4.463263 1.569116 -4.407472C1.569116 -4.358655 1.555168 -4.316812 1.54122 -4.254047L0.557908 -0.306849C0.523039 -0.18132 0.523039 -0.167372 0.523039 -0.153425C0.523039 -0.048817 0.606725 0.069738 0.760149 0.069738C0.948443 0.069738 1.039103 -0.069738 1.080946 -0.223163C1.094894 -0.251059 1.39477 -1.478456 1.422665 -1.57609C1.917808 -1.527273 2.315318 -1.366874 2.315318 -1.004234C2.315318 -0.969365 2.315318 -0.934496 2.30137 -0.864757C2.273474 -0.760149 2.273474 -0.72528 2.273474 -0.648568C2.273474 -0.153425 2.677958 0.069738 3.012702 0.069738C3.689166 0.069738 3.898381 -0.990286 3.898381 -0.99726C3.898381 -1.08792 3.807721 -1.08792 3.7868 -1.08792C3.689166 -1.08792 3.682192 -1.053051 3.647323 -0.920548C3.563636 -0.620672 3.375342 -0.125529 3.033624 -0.125529C2.84533 -0.125529 2.789539 -0.299875 2.789539 -0.488169C2.789539 -0.606725 2.789539 -0.620672 2.831382 -0.801993C2.838356 -0.822914 2.866252 -0.941469 2.866252 -1.018182C2.866252 -1.638854 2.02939 -1.736488 1.736488 -1.75741C1.93873 -1.882939 2.196762 -2.113076 2.315318 -2.217684C2.670984 -2.552428 3.019676 -2.880199 3.410212 -2.880199C3.493898 -2.880199 3.584558 -2.859278 3.640349 -2.789539C3.340473 -2.740722 3.277709 -2.503611 3.277709 -2.399004C3.277709 -2.245579 3.396264 -2.140971 3.556663 -2.140971C3.744956 -2.140971 3.954172 -2.294396 3.954172 -2.587298C3.954172 -2.817435 3.7868 -3.075467 3.417186 -3.075467C3.019676 -3.075467 2.657036 -2.789539 2.30137 -2.461768C2.008468 -2.182814 1.778331 -1.966625 1.492403 -1.84807L2.182814 -4.630635Z" id="g1-107" />
|
||||
<ns0:path d="M5.041096 -3.745953C5.100872 -3.88543 5.140722 -3.955168 5.778331 -3.955168V-4.423412C5.529265 -4.403487 5.240349 -4.393524 4.991283 -4.393524S4.293898 -4.41345 4.084682 -4.423412V-3.955168C4.273973 -3.955168 4.562889 -3.92528 4.562889 -3.845579C4.562889 -3.835616 4.552927 -3.815691 4.513076 -3.726027L3.35741 -1.235367L2.092154 -3.955168H2.630137V-4.423412C2.30137 -4.403487 1.404732 -4.393524 1.39477 -4.393524C1.115816 -4.393524 0.667497 -4.41345 0.259029 -4.423412V-3.955168H0.896638L2.6401 -0.209215C2.759651 0.039851 2.889166 0.039851 3.01868 0.039851C3.188045 0.039851 3.287671 0.009963 3.387298 -0.199253L5.041096 -3.745953Z" id="g0-118" />
|
||||
<ns0:path d="M3.317559 -0.757161C3.35741 -0.358655 3.626401 0.059776 4.094645 0.059776C4.303861 0.059776 4.911582 -0.079701 4.911582 -0.886675V-1.444583H4.662516V-0.886675C4.662516 -0.308842 4.41345 -0.249066 4.303861 -0.249066C3.975093 -0.249066 3.935243 -0.697385 3.935243 -0.747198V-2.739726C3.935243 -3.158157 3.935243 -3.5467 3.576588 -3.915318C3.188045 -4.303861 2.689913 -4.463263 2.211706 -4.463263C1.39477 -4.463263 0.707347 -3.995019 0.707347 -3.337484C0.707347 -3.038605 0.9066 -2.86924 1.165629 -2.86924C1.444583 -2.86924 1.62391 -3.068493 1.62391 -3.327522C1.62391 -3.447073 1.574097 -3.775841 1.115816 -3.785803C1.384807 -4.134496 1.872976 -4.244085 2.191781 -4.244085C2.67995 -4.244085 3.247821 -3.855542 3.247821 -2.968867V-2.600249C2.739726 -2.570361 2.042341 -2.540473 1.414695 -2.241594C0.667497 -1.902864 0.418431 -1.384807 0.418431 -0.946451C0.418431 -0.139477 1.384807 0.109589 2.012453 0.109589C2.669988 0.109589 3.128269 -0.288917 3.317559 -0.757161ZM3.247821 -2.391034V-1.39477C3.247821 -0.448319 2.530511 -0.109589 2.082192 -0.109589C1.594022 -0.109589 1.185554 -0.458281 1.185554 -0.956413C1.185554 -1.504359 1.603985 -2.331258 3.247821 -2.391034Z" id="g2-97" />
|
||||
</ns0:defs>
|
||||
<ns0:g fill-opacity="0.9" id="page1">
|
||||
<ns0:use x="-52.07469" y="-62.037349" ns1:href="#g0-118" />
|
||||
<ns0:use x="-46.027953" y="-60.542968" ns1:href="#g1-107" />
|
||||
</ns0:g>
|
||||
</ns0:svg>
|
5238
markdown/fandisk-normals.ai
Normal file
BIN
markdown/fandisk-normals.png
Normal file
After Width: | Height: | Size: 516 KiB |
BIN
markdown/fandisk.gif
Normal file
After Width: | Height: | Size: 118 KiB |
695
markdown/github-markdown.css
Normal file
|
@ -0,0 +1,695 @@
|
|||
@font-face {
|
||||
font-family: octicons-link;
|
||||
src: url(data:font/woff;charset=utf-8;base64,d09GRgABAAAAAAZwABAAAAAACFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEU0lHAAAGaAAAAAgAAAAIAAAAAUdTVUIAAAZcAAAACgAAAAoAAQAAT1MvMgAAAyQAAABJAAAAYFYEU3RjbWFwAAADcAAAAEUAAACAAJThvmN2dCAAAATkAAAABAAAAAQAAAAAZnBnbQAAA7gAAACyAAABCUM+8IhnYXNwAAAGTAAAABAAAAAQABoAI2dseWYAAAFsAAABPAAAAZwcEq9taGVhZAAAAsgAAAA0AAAANgh4a91oaGVhAAADCAAAABoAAAAkCA8DRGhtdHgAAAL8AAAADAAAAAwGAACfbG9jYQAAAsAAAAAIAAAACABiATBtYXhwAAACqAAAABgAAAAgAA8ASm5hbWUAAAToAAABQgAAAlXu73sOcG9zdAAABiwAAAAeAAAAME3QpOBwcmVwAAAEbAAAAHYAAAB/aFGpk3jaTY6xa8JAGMW/O62BDi0tJLYQincXEypYIiGJjSgHniQ6umTsUEyLm5BV6NDBP8Tpts6F0v+k/0an2i+itHDw3v2+9+DBKTzsJNnWJNTgHEy4BgG3EMI9DCEDOGEXzDADU5hBKMIgNPZqoD3SilVaXZCER3/I7AtxEJLtzzuZfI+VVkprxTlXShWKb3TBecG11rwoNlmmn1P2WYcJczl32etSpKnziC7lQyWe1smVPy/Lt7Kc+0vWY/gAgIIEqAN9we0pwKXreiMasxvabDQMM4riO+qxM2ogwDGOZTXxwxDiycQIcoYFBLj5K3EIaSctAq2kTYiw+ymhce7vwM9jSqO8JyVd5RH9gyTt2+J/yUmYlIR0s04n6+7Vm1ozezUeLEaUjhaDSuXHwVRgvLJn1tQ7xiuVv/ocTRF42mNgZGBgYGbwZOBiAAFGJBIMAAizAFoAAABiAGIAznjaY2BkYGAA4in8zwXi+W2+MjCzMIDApSwvXzC97Z4Ig8N/BxYGZgcgl52BCSQKAA3jCV8CAABfAAAAAAQAAEB42mNgZGBg4f3vACQZQABIMjKgAmYAKEgBXgAAeNpjYGY6wTiBgZWBg2kmUxoDA4MPhGZMYzBi1AHygVLYQUCaawqDA4PChxhmh/8ODDEsvAwHgMKMIDnGL0x7gJQCAwMAJd4MFwAAAHjaY2BgYGaA4DAGRgYQkAHyGMF8NgYrIM3JIAGVYYDT+AEjAwuDFpBmA9KMDEwMCh9i/v8H8sH0/4dQc1iAmAkALaUKLgAAAHjaTY9LDsIgEIbtgqHUPpDi3gPoBVyRTmTddOmqTXThEXqrob2gQ1FjwpDvfwCBdmdXC5AVKFu3e5MfNFJ29KTQT48Ob9/lqYwOGZxeUelN2U2R6+cArgtCJpauW7UQBqnFkUsjAY/kOU1cP+DAgvxwn1chZDwUbd6CFimGXwzwF6tPbFIcjEl+vvmM/byA48e6tWrKArm4ZJlCbdsrxksL1AwWn/yBSJKpYbq8AXaaTb8AAHja28jAwOC00ZrBeQNDQOWO//sdBBgYGRiYWYAEELEwMTE4uzo5Zzo5b2BxdnFOcALxNjA6b2ByTswC8jYwg0VlNuoCTWAMqNzMzsoK1rEhNqByEyerg5PMJlYuVueETKcd/89uBpnpvIEVomeHLoMsAAe1Id4AAAAAAAB42oWQT07CQBTGv0JBhagk7HQzKxca2sJCE1hDt4QF+9JOS0nbaaYDCQfwCJ7Au3AHj+LO13FMmm6cl7785vven0kBjHCBhfpYuNa5Ph1c0e2Xu3jEvWG7UdPDLZ4N92nOm+EBXuAbHmIMSRMs+4aUEd4Nd3CHD8NdvOLTsA2GL8M9PODbcL+hD7C1xoaHeLJSEao0FEW14ckxC+TU8TxvsY6X0eLPmRhry2WVioLpkrbp84LLQPGI7c6sOiUzpWIWS5GzlSgUzzLBSikOPFTOXqly7rqx0Z1Q5BAIoZBSFihQYQOOBEdkCOgXTOHA07HAGjGWiIjaPZNW13/+lm6S9FT7rLHFJ6fQbkATOG1j2OFMucKJJsxIVfQORl+9Jyda6Sl1dUYhSCm1dyClfoeDve4qMYdLEbfqHf3O/AdDumsjAAB42mNgYoAAZQYjBmyAGYQZmdhL8zLdDEydARfoAqIAAAABAAMABwAKABMAB///AA8AAQAAAAAAAAAAAAAAAAABAAAAAA==) format('woff');
|
||||
}
|
||||
|
||||
.markdown-body {
|
||||
-ms-text-size-adjust: 100%;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
line-height: 1.5;
|
||||
color: #24292e;
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
|
||||
font-size: 16px;
|
||||
line-height: 1.5;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
.markdown-body .pl-c {
|
||||
color: #6a737d;
|
||||
}
|
||||
|
||||
.markdown-body .pl-c1,
|
||||
.markdown-body .pl-s .pl-v {
|
||||
color: #005cc5;
|
||||
}
|
||||
|
||||
.markdown-body .pl-e,
|
||||
.markdown-body .pl-en {
|
||||
color: #6f42c1;
|
||||
}
|
||||
|
||||
.markdown-body .pl-smi,
|
||||
.markdown-body .pl-s .pl-s1 {
|
||||
color: #24292e;
|
||||
}
|
||||
|
||||
.markdown-body .pl-ent {
|
||||
color: #22863a;
|
||||
}
|
||||
|
||||
.markdown-body .pl-k {
|
||||
color: #d73a49;
|
||||
}
|
||||
|
||||
.markdown-body .pl-s,
|
||||
.markdown-body .pl-pds,
|
||||
.markdown-body .pl-s .pl-pse .pl-s1,
|
||||
.markdown-body .pl-sr,
|
||||
.markdown-body .pl-sr .pl-cce,
|
||||
.markdown-body .pl-sr .pl-sre,
|
||||
.markdown-body .pl-sr .pl-sra {
|
||||
color: #032f62;
|
||||
}
|
||||
|
||||
.markdown-body .pl-v,
|
||||
.markdown-body .pl-smw {
|
||||
color: #e36209;
|
||||
}
|
||||
|
||||
.markdown-body .pl-bu {
|
||||
color: #b31d28;
|
||||
}
|
||||
|
||||
.markdown-body .pl-ii {
|
||||
color: #fafbfc;
|
||||
background-color: #b31d28;
|
||||
}
|
||||
|
||||
.markdown-body .pl-c2 {
|
||||
color: #fafbfc;
|
||||
background-color: #d73a49;
|
||||
}
|
||||
|
||||
.markdown-body .pl-c2::before {
|
||||
content: "^M";
|
||||
}
|
||||
|
||||
.markdown-body .pl-sr .pl-cce {
|
||||
font-weight: bold;
|
||||
color: #22863a;
|
||||
}
|
||||
|
||||
.markdown-body .pl-ml {
|
||||
color: #735c0f;
|
||||
}
|
||||
|
||||
.markdown-body .pl-mh,
|
||||
.markdown-body .pl-mh .pl-en,
|
||||
.markdown-body .pl-ms {
|
||||
font-weight: bold;
|
||||
color: #005cc5;
|
||||
}
|
||||
|
||||
.markdown-body .pl-mi {
|
||||
font-style: italic;
|
||||
color: #24292e;
|
||||
}
|
||||
|
||||
.markdown-body .pl-mb {
|
||||
font-weight: bold;
|
||||
color: #24292e;
|
||||
}
|
||||
|
||||
.markdown-body .pl-md {
|
||||
color: #b31d28;
|
||||
background-color: #ffeef0;
|
||||
}
|
||||
|
||||
.markdown-body .pl-mi1 {
|
||||
color: #22863a;
|
||||
background-color: #f0fff4;
|
||||
}
|
||||
|
||||
.markdown-body .pl-mc {
|
||||
color: #e36209;
|
||||
background-color: #ffebda;
|
||||
}
|
||||
|
||||
.markdown-body .pl-mi2 {
|
||||
color: #f6f8fa;
|
||||
background-color: #005cc5;
|
||||
}
|
||||
|
||||
.markdown-body .pl-mdr {
|
||||
font-weight: bold;
|
||||
color: #6f42c1;
|
||||
}
|
||||
|
||||
.markdown-body .pl-ba {
|
||||
color: #586069;
|
||||
}
|
||||
|
||||
.markdown-body .pl-sg {
|
||||
color: #959da5;
|
||||
}
|
||||
|
||||
.markdown-body .pl-corl {
|
||||
text-decoration: underline;
|
||||
color: #032f62;
|
||||
}
|
||||
|
||||
.markdown-body .octicon {
|
||||
display: inline-block;
|
||||
vertical-align: text-top;
|
||||
fill: currentColor;
|
||||
}
|
||||
|
||||
.markdown-body a {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.markdown-body a:active,
|
||||
.markdown-body a:hover {
|
||||
outline-width: 0;
|
||||
}
|
||||
|
||||
.markdown-body strong {
|
||||
font-weight: inherit;
|
||||
}
|
||||
|
||||
.markdown-body strong {
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
.markdown-body h1 {
|
||||
font-size: 2em;
|
||||
margin: 0.67em 0;
|
||||
}
|
||||
|
||||
.markdown-body img {
|
||||
border-style: none;
|
||||
}
|
||||
|
||||
.markdown-body code,
|
||||
.markdown-body kbd,
|
||||
.markdown-body pre {
|
||||
font-family: monospace, monospace;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
.markdown-body hr {
|
||||
box-sizing: content-box;
|
||||
height: 0;
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
.markdown-body input {
|
||||
font: inherit;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.markdown-body input {
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
.markdown-body [type="checkbox"] {
|
||||
box-sizing: border-box;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.markdown-body * {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.markdown-body input {
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
.markdown-body a {
|
||||
color: #0366d6;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.markdown-body a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.markdown-body strong {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.markdown-body hr {
|
||||
height: 0;
|
||||
margin: 15px 0;
|
||||
overflow: hidden;
|
||||
background: transparent;
|
||||
border: 0;
|
||||
border-bottom: 1px solid #dfe2e5;
|
||||
}
|
||||
|
||||
.markdown-body hr::before {
|
||||
display: table;
|
||||
content: "";
|
||||
}
|
||||
|
||||
.markdown-body hr::after {
|
||||
display: table;
|
||||
clear: both;
|
||||
content: "";
|
||||
}
|
||||
|
||||
.markdown-body table {
|
||||
border-spacing: 0;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
.markdown-body td,
|
||||
.markdown-body th {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.markdown-body h1,
|
||||
.markdown-body h2,
|
||||
.markdown-body h3,
|
||||
.markdown-body h4,
|
||||
.markdown-body h5,
|
||||
.markdown-body h6 {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.markdown-body h1 {
|
||||
font-size: 32px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.markdown-body h2 {
|
||||
font-size: 24px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.markdown-body h3 {
|
||||
font-size: 20px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.markdown-body h4 {
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.markdown-body h5 {
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.markdown-body h6 {
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.markdown-body p {
|
||||
margin-top: 0;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.markdown-body blockquote {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.markdown-body ul,
|
||||
.markdown-body ol {
|
||||
padding-left: 0;
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.markdown-body ol ol,
|
||||
.markdown-body ul ol {
|
||||
list-style-type: lower-roman;
|
||||
}
|
||||
|
||||
.markdown-body ul ul ol,
|
||||
.markdown-body ul ol ol,
|
||||
.markdown-body ol ul ol,
|
||||
.markdown-body ol ol ol {
|
||||
list-style-type: lower-alpha;
|
||||
}
|
||||
|
||||
.markdown-body dd {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.markdown-body code {
|
||||
font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.markdown-body pre {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.markdown-body .octicon {
|
||||
vertical-align: text-bottom;
|
||||
}
|
||||
|
||||
.markdown-body .pl-0 {
|
||||
padding-left: 0 !important;
|
||||
}
|
||||
|
||||
.markdown-body .pl-1 {
|
||||
padding-left: 4px !important;
|
||||
}
|
||||
|
||||
.markdown-body .pl-2 {
|
||||
padding-left: 8px !important;
|
||||
}
|
||||
|
||||
.markdown-body .pl-3 {
|
||||
padding-left: 16px !important;
|
||||
}
|
||||
|
||||
.markdown-body .pl-4 {
|
||||
padding-left: 24px !important;
|
||||
}
|
||||
|
||||
.markdown-body .pl-5 {
|
||||
padding-left: 32px !important;
|
||||
}
|
||||
|
||||
.markdown-body .pl-6 {
|
||||
padding-left: 40px !important;
|
||||
}
|
||||
|
||||
.markdown-body::before {
|
||||
display: table;
|
||||
content: "";
|
||||
}
|
||||
|
||||
.markdown-body::after {
|
||||
display: table;
|
||||
clear: both;
|
||||
content: "";
|
||||
}
|
||||
|
||||
.markdown-body>*:first-child {
|
||||
margin-top: 0 !important;
|
||||
}
|
||||
|
||||
.markdown-body>*:last-child {
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
|
||||
.markdown-body a:not([href]) {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.markdown-body .anchor {
|
||||
float: left;
|
||||
padding-right: 4px;
|
||||
margin-left: -20px;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.markdown-body .anchor:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.markdown-body p,
|
||||
.markdown-body blockquote,
|
||||
.markdown-body ul,
|
||||
.markdown-body ol,
|
||||
.markdown-body dl,
|
||||
.markdown-body table,
|
||||
.markdown-body pre {
|
||||
margin-top: 0;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.markdown-body hr {
|
||||
height: 0.25em;
|
||||
padding: 0;
|
||||
margin: 24px 0;
|
||||
background-color: #e1e4e8;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.markdown-body blockquote {
|
||||
padding: 0 1em;
|
||||
color: #6a737d;
|
||||
border-left: 0.25em solid #dfe2e5;
|
||||
}
|
||||
|
||||
.markdown-body blockquote>:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.markdown-body blockquote>:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.markdown-body kbd {
|
||||
display: inline-block;
|
||||
padding: 3px 5px;
|
||||
font-size: 11px;
|
||||
line-height: 10px;
|
||||
color: #444d56;
|
||||
vertical-align: middle;
|
||||
background-color: #fafbfc;
|
||||
border: solid 1px #c6cbd1;
|
||||
border-bottom-color: #959da5;
|
||||
border-radius: 3px;
|
||||
box-shadow: inset 0 -1px 0 #959da5;
|
||||
}
|
||||
|
||||
.markdown-body h1,
|
||||
.markdown-body h2,
|
||||
.markdown-body h3,
|
||||
.markdown-body h4,
|
||||
.markdown-body h5,
|
||||
.markdown-body h6 {
|
||||
margin-top: 24px;
|
||||
margin-bottom: 16px;
|
||||
font-weight: 600;
|
||||
line-height: 1.25;
|
||||
}
|
||||
|
||||
.markdown-body h1 .octicon-link,
|
||||
.markdown-body h2 .octicon-link,
|
||||
.markdown-body h3 .octicon-link,
|
||||
.markdown-body h4 .octicon-link,
|
||||
.markdown-body h5 .octicon-link,
|
||||
.markdown-body h6 .octicon-link {
|
||||
color: #1b1f23;
|
||||
vertical-align: middle;
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.markdown-body h1:hover .anchor,
|
||||
.markdown-body h2:hover .anchor,
|
||||
.markdown-body h3:hover .anchor,
|
||||
.markdown-body h4:hover .anchor,
|
||||
.markdown-body h5:hover .anchor,
|
||||
.markdown-body h6:hover .anchor {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.markdown-body h1:hover .anchor .octicon-link,
|
||||
.markdown-body h2:hover .anchor .octicon-link,
|
||||
.markdown-body h3:hover .anchor .octicon-link,
|
||||
.markdown-body h4:hover .anchor .octicon-link,
|
||||
.markdown-body h5:hover .anchor .octicon-link,
|
||||
.markdown-body h6:hover .anchor .octicon-link {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
.markdown-body h1 {
|
||||
padding-bottom: 0.3em;
|
||||
font-size: 2em;
|
||||
border-bottom: 1px solid #eaecef;
|
||||
}
|
||||
|
||||
.markdown-body h2 {
|
||||
padding-bottom: 0.3em;
|
||||
font-size: 1.5em;
|
||||
border-bottom: 1px solid #eaecef;
|
||||
}
|
||||
|
||||
.markdown-body h3 {
|
||||
font-size: 1.25em;
|
||||
}
|
||||
|
||||
.markdown-body h4 {
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
.markdown-body h5 {
|
||||
font-size: 0.875em;
|
||||
}
|
||||
|
||||
.markdown-body h6 {
|
||||
font-size: 0.85em;
|
||||
color: #6a737d;
|
||||
}
|
||||
|
||||
.markdown-body ul,
|
||||
.markdown-body ol {
|
||||
padding-left: 2em;
|
||||
}
|
||||
|
||||
.markdown-body ul ul,
|
||||
.markdown-body ul ol,
|
||||
.markdown-body ol ol,
|
||||
.markdown-body ol ul {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.markdown-body li {
|
||||
word-wrap: break-all;
|
||||
}
|
||||
|
||||
.markdown-body li>p {
|
||||
margin-top: 16px;
|
||||
}
|
||||
|
||||
.markdown-body li+li {
|
||||
margin-top: 0.25em;
|
||||
}
|
||||
|
||||
.markdown-body dl {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.markdown-body dl dt {
|
||||
padding: 0;
|
||||
margin-top: 16px;
|
||||
font-size: 1em;
|
||||
font-style: italic;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.markdown-body dl dd {
|
||||
padding: 0 16px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.markdown-body table {
|
||||
display: block;
|
||||
width: 100%;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.markdown-body table th {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.markdown-body table th,
|
||||
.markdown-body table td {
|
||||
padding: 6px 13px;
|
||||
border: 1px solid #dfe2e5;
|
||||
}
|
||||
|
||||
.markdown-body table tr {
|
||||
background-color: #fff;
|
||||
border-top: 1px solid #c6cbd1;
|
||||
}
|
||||
|
||||
.markdown-body table tr:nth-child(2n) {
|
||||
background-color: #f6f8fa;
|
||||
}
|
||||
|
||||
.markdown-body img {
|
||||
max-width: 100%;
|
||||
box-sizing: content-box;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.markdown-body img[align=right] {
|
||||
padding-left: 20px;
|
||||
}
|
||||
|
||||
.markdown-body img[align=left] {
|
||||
padding-right: 20px;
|
||||
}
|
||||
|
||||
.markdown-body code {
|
||||
padding: 0.2em 0.4em;
|
||||
margin: 0;
|
||||
font-size: 85%;
|
||||
background-color: rgba(27,31,35,0.05);
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.markdown-body pre {
|
||||
word-wrap: normal;
|
||||
}
|
||||
|
||||
.markdown-body pre>code {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
font-size: 100%;
|
||||
word-break: normal;
|
||||
white-space: pre;
|
||||
background: transparent;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.markdown-body .highlight {
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.markdown-body .highlight pre {
|
||||
margin-bottom: 0;
|
||||
word-break: normal;
|
||||
}
|
||||
|
||||
.markdown-body .highlight pre,
|
||||
.markdown-body pre {
|
||||
padding: 16px;
|
||||
overflow: auto;
|
||||
font-size: 85%;
|
||||
line-height: 1.45;
|
||||
background-color: #f6f8fa;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.markdown-body pre code {
|
||||
display: inline;
|
||||
max-width: auto;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
overflow: visible;
|
||||
line-height: inherit;
|
||||
word-wrap: normal;
|
||||
background-color: transparent;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.markdown-body .full-commit .btn-outline:not(:disabled):hover {
|
||||
color: #005cc5;
|
||||
border-color: #005cc5;
|
||||
}
|
||||
|
||||
.markdown-body kbd {
|
||||
display: inline-block;
|
||||
padding: 3px 5px;
|
||||
font: 11px "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
|
||||
line-height: 10px;
|
||||
color: #444d56;
|
||||
vertical-align: middle;
|
||||
background-color: #fafbfc;
|
||||
border: solid 1px #d1d5da;
|
||||
border-bottom-color: #c6cbd1;
|
||||
border-radius: 3px;
|
||||
box-shadow: inset 0 -1px 0 #c6cbd1;
|
||||
}
|
||||
|
||||
.markdown-body :checked+.radio-label {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
border-color: #0366d6;
|
||||
}
|
||||
|
||||
.markdown-body .task-list-item {
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
.markdown-body .task-list-item+.task-list-item {
|
||||
margin-top: 3px;
|
||||
}
|
||||
|
||||
.markdown-body .task-list-item input {
|
||||
margin: 0 0.2em 0.25em -1.6em;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.markdown-body hr {
|
||||
border-bottom-color: #eee;
|
||||
}
|
82
markdown/header.md
Normal file
|
@ -0,0 +1,82 @@
|
|||
css: markdown/github-markdown.css
|
||||
html header: <link rel="stylesheet" href="markdown/github-markdown.css">
|
||||
<style>
|
||||
.markdown-body {
|
||||
box-sizing: border-box;
|
||||
min-width: 200px;
|
||||
max-width: 980px;
|
||||
margin: 0 auto;
|
||||
padding: 45px;
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.markdown-body {
|
||||
padding: 15px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<article class="markdown-body">
|
||||
|
||||
|
||||
<script type="text/x-mathjax-config">
|
||||
MathJax.Hub.Config({ TeX: { equationNumbers: {autoNumber: "all"} } });
|
||||
</script>
|
||||
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
|
||||
|
||||
<div style="display:none">
|
||||
$\newcommand{\A}{\mat{A}}$
|
||||
$\newcommand{\B}{\mat{B}}$
|
||||
$\newcommand{\C}{\mat{C}}$
|
||||
$\newcommand{\D}{\mat{D}}$
|
||||
$\newcommand{\E}{\mat{E}}$
|
||||
$\newcommand{\F}{\mat{F}}$
|
||||
$\newcommand{\G}{\mat{G}}$
|
||||
$\newcommand{\H}{\mat{H}}$
|
||||
$\newcommand{\I}{\mat{I}}$
|
||||
$\newcommand{\J}{\mat{J}}$
|
||||
$\newcommand{\K}{\mat{K}}$
|
||||
$\newcommand{\L}{\mat{L}}$
|
||||
$\newcommand{\M}{\mat{M}}$
|
||||
$\newcommand{\N}{\mat{N}}$
|
||||
$\newcommand{\One}{\mathbf{1}}$
|
||||
$\newcommand{\P}{\mat{P}}$
|
||||
$\newcommand{\Q}{\mat{Q}}$
|
||||
$\newcommand{\Rot}{\mat{R}}$
|
||||
$\newcommand{\R}{\mathbb{R}}$
|
||||
$\newcommand{\S}{\mathcal{S}}$
|
||||
$\newcommand{\T}{\mat{T}}$
|
||||
$\newcommand{\U}{\mat{U}}$
|
||||
$\newcommand{\V}{\mat{V}}$
|
||||
$\newcommand{\W}{\mat{W}}$
|
||||
$\newcommand{\X}{\mat{X}}$
|
||||
$\newcommand{\Y}{\mat{Y}}$
|
||||
$\newcommand{\argmax}{\mathop{\text{argmax}}}$
|
||||
$\newcommand{\argmin}{\mathop{\text{argmin}}}$
|
||||
$\newcommand{\a}{\vec{a}}$
|
||||
$\newcommand{\b}{\vec{b}}$
|
||||
$\newcommand{\c}{\vec{c}}$
|
||||
$\newcommand{\d}{\vec{d}}$
|
||||
$\newcommand{\e}{\vec{e}}$
|
||||
$\newcommand{\f}{\vec{f}}$
|
||||
$\newcommand{\g}{\vec{g}}$
|
||||
$\newcommand{\mat}[1]{\mathbf{#1}}$
|
||||
$\newcommand{\min}{\mathop{\text{min}}}$
|
||||
$\newcommand{\m}{\vec{m}}$
|
||||
$\newcommand{\n}{\vec{n}}$
|
||||
$\newcommand{\p}{\vec{p}}$
|
||||
$\newcommand{\q}{\vec{q}}$
|
||||
$\newcommand{\r}{\vec{r}}$
|
||||
$\newcommand{\transpose}{{\mathsf T}}$
|
||||
$\newcommand{\tr}[1]{\mathop{\text{tr}}{\left(#1\right)}}$
|
||||
$\newcommand{\s}{\vec{s}}$
|
||||
$\newcommand{\t}{\vec{t}}$
|
||||
$\newcommand{\u}{\vec{u}}$
|
||||
$\newcommand{\vec}[1]{\mathbf{#1}}$
|
||||
$\newcommand{\x}{\vec{x}}$
|
||||
$\newcommand{\y}{\vec{y}}$
|
||||
$\newcommand{\z}{\vec{z}}$
|
||||
$\newcommand{\0}{\vec{0}}$
|
||||
$\renewcommand{\v}{\vec{v}}$
|
||||
<!-- https://github.com/mathjax/MathJax/issues/1766 -->
|
||||
$\renewcommand{\hat}[1]{\widehat{#1}}$
|
||||
</div>
|
1100
markdown/per-vertex-normal.ai
Normal file
BIN
markdown/per-vertex-normal.png
Normal file
After Width: | Height: | Size: 44 KiB |
BIN
markdown/rubiks-cube.gif
Normal file
After Width: | Height: | Size: 781 KiB |
BIN
markdown/subdivide_cube.gif
Normal file
After Width: | Height: | Size: 6.3 MiB |
74
normals.cpp
Normal file
|
@ -0,0 +1,74 @@
|
|||
#include "per_vertex_normals.h"
|
||||
#include "per_corner_normals.h"
|
||||
#include "per_face_normals.h"
|
||||
#include <igl/read_triangle_mesh.h>
|
||||
#include <igl/opengl/glfw/Viewer.h>
|
||||
|
||||
int main(int argc, char * argv[])
|
||||
{
|
||||
// parse command line arguments
|
||||
std::string path_to_obj;
|
||||
if (argc == 2) {
|
||||
std::string args = argv[1];
|
||||
// check if ends with .obj
|
||||
if (args.size() > 4 && args.substr(args.size() - 3, 3) == "obj") {
|
||||
path_to_obj = args;
|
||||
}
|
||||
}
|
||||
if (argc != 2 || path_to_obj.empty()) {
|
||||
printf(
|
||||
"Error: received unexpected command line arguments. \n"
|
||||
"Correct usage: \n"
|
||||
" Linux: ./normals <path to obj file> \n"
|
||||
" Windows: normals.exe <path to obj file> \n"
|
||||
"For example: \n"
|
||||
" Linux: ./normals ../data/cube.obj \n"
|
||||
" Windows: normals.exe ../../../data/cube.obj \n"
|
||||
);
|
||||
return -1;
|
||||
}
|
||||
Eigen::MatrixXd V;
|
||||
Eigen::MatrixXi F;
|
||||
igl::read_triangle_mesh(path_to_obj,V,F);
|
||||
Eigen::MatrixXd VN,FN,CN;
|
||||
// Compute different types of normals
|
||||
per_face_normals(V,F,FN);
|
||||
per_vertex_normals(V,F,VN);
|
||||
per_corner_normals(V,F,20,CN);
|
||||
// Set up and launch a little mesh viewer
|
||||
igl::opengl::glfw::Viewer v;
|
||||
v.data().set_mesh(V,F);
|
||||
v.data().set_normals(VN);
|
||||
// Keyboard interaction handling
|
||||
v.callback_key_down = [&VN,&FN,&CN](
|
||||
igl::opengl::glfw::Viewer & v,
|
||||
unsigned char key,
|
||||
int /*modifier*/
|
||||
)->bool
|
||||
{
|
||||
switch(key)
|
||||
{
|
||||
default:
|
||||
return false;
|
||||
case '1':
|
||||
v.data().set_normals(FN);
|
||||
break;
|
||||
case '2':
|
||||
// viewer is weird and need to convince it out of CN mode
|
||||
v.data().set_normals(FN);
|
||||
v.data().set_normals(VN);
|
||||
break;
|
||||
case '3':
|
||||
v.data().set_normals(CN);
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
std::cout<< R"(
|
||||
1 Use per-face normals
|
||||
2 Use per-vertex normals
|
||||
3 Use per-corner normals
|
||||
)";
|
||||
v.launch();
|
||||
}
|
||||
|
75
obj.cpp
Normal file
|
@ -0,0 +1,75 @@
|
|||
#include "cube.h"
|
||||
#include "sphere.h"
|
||||
#include "write_obj.h"
|
||||
#include "QuadViewer.h"
|
||||
#include "set_texture_from_png.h"
|
||||
#include <igl/readOBJ.h>
|
||||
#include <Eigen/Core>
|
||||
#include <vector>
|
||||
#include <iostream>
|
||||
#include <memory>
|
||||
#include <limits>
|
||||
#include <functional>
|
||||
|
||||
|
||||
int main(int argc, char * argv[])
|
||||
{
|
||||
// parse command line arguments
|
||||
std::string path_to_cube_png;
|
||||
std::string path_to_earth_png;
|
||||
if (argc == 3) {
|
||||
std::string args0 = argv[1];
|
||||
std::string args1 = argv[2];
|
||||
// check if ends with .png
|
||||
if (args0.size() > 4 && args0.substr(args0.size() - 3, 3) == "png") {
|
||||
path_to_cube_png = args0;
|
||||
}
|
||||
if (args1.size() > 4 && args1.substr(args1.size() - 3, 3) == "png") {
|
||||
path_to_earth_png = args1;
|
||||
}
|
||||
}
|
||||
if (argc != 3 || path_to_cube_png.empty() || path_to_earth_png.empty()) {
|
||||
printf(
|
||||
"Error: received unexpected command line arguments. \n"
|
||||
"Correct usage: \n"
|
||||
" Linux: ./obj <path to rubiks-cube.png> <path to earth-square.png>\n"
|
||||
" Windows: obj.exe <path to rubiks-cube.png> <path to earth-square.png> \n"
|
||||
"For example: \n"
|
||||
" Linux: ./obj ../data/rubiks-cube.png ../data/earth-square.png \n"
|
||||
" Windows: obj.exe ../../../data/rubiks-cube.png ../../../data/earth-square.png \n"
|
||||
);
|
||||
return -1;
|
||||
}
|
||||
{
|
||||
// Create mesh of a cube
|
||||
Eigen::MatrixXd V,UV,NV;
|
||||
Eigen::MatrixXi F,UF,NF;
|
||||
cube(V,F,UV,UF,NV,NF);
|
||||
write_obj("cube.obj",V,F,UV,UF,NV,NF);
|
||||
printf("wrote to cube.obj \n");
|
||||
igl::readOBJ("cube.obj",V,UV,NV,F,UF,NF);
|
||||
{
|
||||
QuadViewer v;
|
||||
v.set_mesh(V,F,UV,UF,NV,NF);
|
||||
set_texture_from_png(path_to_cube_png, v.viewer.data());
|
||||
v.launch();
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
// Create mesh of a sphere
|
||||
Eigen::MatrixXd V,UV,NV;
|
||||
Eigen::MatrixXi F,UF,NF;
|
||||
sphere(60,40,V,F,UV,UF,NV,NF);
|
||||
write_obj("sphere.obj",V,F,UV,UF,NV,NF);
|
||||
printf("wrote to sphere.obj \n");
|
||||
igl::readOBJ("sphere.obj",V,UV,NV,F,UF,NF);
|
||||
{
|
||||
QuadViewer v;
|
||||
v.set_mesh(V,F,UV,UF,NV,NF);
|
||||
set_texture_from_png(path_to_earth_png, v.viewer.data());
|
||||
v.launch();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
81
quad_subdivision.cpp
Normal file
|
@ -0,0 +1,81 @@
|
|||
#include "catmull_clark.h"
|
||||
#include "QuadViewer.h"
|
||||
#include <igl/readOBJ.h>
|
||||
//#include <igl/opengl/glfw/Viewer.h>
|
||||
|
||||
int main(int argc, char * argv[])
|
||||
{
|
||||
// parse command line arguments
|
||||
std::string path_to_obj;
|
||||
if (argc == 2) {
|
||||
std::string args = argv[1];
|
||||
// check if ends with .obj
|
||||
if (args.size() > 4 && args.substr(args.size() - 3, 3) == "obj") {
|
||||
path_to_obj = args;
|
||||
}
|
||||
}
|
||||
if (argc != 2 || path_to_obj.empty()) {
|
||||
printf(
|
||||
"Error: received unexpected command line arguments. \n"
|
||||
"Correct usage: \n"
|
||||
" Linux: ./quad_subdivision <path to obj file> \n"
|
||||
" Windows: quad_subdivision.exe <path to obj file> \n"
|
||||
"For example: \n"
|
||||
" Linux: ./quad_subdivision ../data/cube.obj \n"
|
||||
" Windows: quad_subdivision.exe ../../../data/cube.obj \n"
|
||||
);
|
||||
return -1;
|
||||
}
|
||||
Eigen::MatrixXd V;
|
||||
Eigen::MatrixXi F;
|
||||
igl::readOBJ(path_to_obj,V,F);
|
||||
if(F.cols() != 4 || F.minCoeff()<0)
|
||||
{
|
||||
std::cerr<<"Error: only pure quad meshes supported."<<std::endl;
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
// Remember original mesh
|
||||
Eigen::MatrixXd OV = V;
|
||||
Eigen::MatrixXi OF = F;
|
||||
bool show_lines = true;
|
||||
|
||||
QuadViewer v;
|
||||
std::cout<<R"(Usage:
|
||||
[space] apply Catmull-Clark subdivision
|
||||
3 apply Catmull-Clark subdivision 3 times
|
||||
R,r Reset to original mesh
|
||||
|
||||
)";
|
||||
v.set_mesh(V,F);
|
||||
v.callback_key_pressed = [&v,&V,&F,&OV,&OF,&show_lines](
|
||||
igl::opengl::glfw::Viewer & /*viewer*/,
|
||||
unsigned int key,
|
||||
int /*modifier*/
|
||||
)->bool
|
||||
{
|
||||
switch(key)
|
||||
{
|
||||
default:
|
||||
return false;
|
||||
case 'R':
|
||||
case 'r':
|
||||
// reset to input mesh
|
||||
V = OV;
|
||||
F = OF;
|
||||
v.set_mesh(V,F);
|
||||
break;
|
||||
case '3':
|
||||
// carry out three subdivisions
|
||||
catmull_clark(Eigen::MatrixXd(V),Eigen::MatrixXi(F),3,V,F);
|
||||
v.set_mesh(V,F);
|
||||
break;
|
||||
case ' ':
|
||||
// carry out one subdivision
|
||||
catmull_clark(Eigen::MatrixXd(V),Eigen::MatrixXi(F),1,V,F);
|
||||
v.set_mesh(V,F);
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
v.launch();
|
||||
}
|
18
src/catmull_clark.cpp
Normal file
|
@ -0,0 +1,18 @@
|
|||
#include "catmull_clark.h"
|
||||
#include <unordered_map>
|
||||
#include <utility>
|
||||
#include <functional>
|
||||
|
||||
void catmull_clark(
|
||||
const Eigen::MatrixXd & V,
|
||||
const Eigen::MatrixXi & F,
|
||||
const int num_iters,
|
||||
Eigen::MatrixXd & SV,
|
||||
Eigen::MatrixXi & SF)
|
||||
{
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// Replace with your code here:
|
||||
SV = V;
|
||||
SF = F;
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
}
|
22
src/cube.cpp
Normal file
|
@ -0,0 +1,22 @@
|
|||
#include "cube.h"
|
||||
|
||||
void cube(
|
||||
Eigen::MatrixXd & V,
|
||||
Eigen::MatrixXi & F,
|
||||
Eigen::MatrixXd & UV,
|
||||
Eigen::MatrixXi & UF,
|
||||
Eigen::MatrixXd & NV,
|
||||
Eigen::MatrixXi & NF)
|
||||
{
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// Add your code here:
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
////Hint:
|
||||
// V.resize(8,3);
|
||||
// F.resize(6,4);
|
||||
// UV.resize(14,2);
|
||||
// UF.resize(6,4);
|
||||
// NV.resize(6,3);
|
||||
// NF.resize(6,4);
|
||||
}
|
17
src/per_corner_normals.cpp
Normal file
|
@ -0,0 +1,17 @@
|
|||
#include "per_corner_normals.h"
|
||||
#include "triangle_area_normal.h"
|
||||
// Hint:
|
||||
#include "vertex_triangle_adjacency.h"
|
||||
#include <iostream>
|
||||
|
||||
void per_corner_normals(
|
||||
const Eigen::MatrixXd & V,
|
||||
const Eigen::MatrixXi & F,
|
||||
const double corner_threshold,
|
||||
Eigen::MatrixXd & N)
|
||||
{
|
||||
N = Eigen::MatrixXd::Zero(F.rows()*3,3);
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// Add your code here:
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
}
|
13
src/per_face_normals.cpp
Normal file
|
@ -0,0 +1,13 @@
|
|||
#include "per_face_normals.h"
|
||||
#include "triangle_area_normal.h"
|
||||
|
||||
void per_face_normals(
|
||||
const Eigen::MatrixXd & V,
|
||||
const Eigen::MatrixXi & F,
|
||||
Eigen::MatrixXd & N)
|
||||
{
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// Replace with your code:
|
||||
N = Eigen::MatrixXd::Zero(F.rows(),3);
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
}
|
13
src/per_vertex_normals.cpp
Normal file
|
@ -0,0 +1,13 @@
|
|||
#include "per_vertex_normals.h"
|
||||
#include "triangle_area_normal.h"
|
||||
|
||||
void per_vertex_normals(
|
||||
const Eigen::MatrixXd & V,
|
||||
const Eigen::MatrixXi & F,
|
||||
Eigen::MatrixXd & N)
|
||||
{
|
||||
N = Eigen::MatrixXd::Zero(V.rows(),3);
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// Add your code here:
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
}
|
17
src/sphere.cpp
Normal file
|
@ -0,0 +1,17 @@
|
|||
#include "sphere.h"
|
||||
#include <iostream>
|
||||
|
||||
void sphere(
|
||||
const int num_faces_u,
|
||||
const int num_faces_v,
|
||||
Eigen::MatrixXd & V,
|
||||
Eigen::MatrixXi & F,
|
||||
Eigen::MatrixXd & UV,
|
||||
Eigen::MatrixXi & UF,
|
||||
Eigen::MatrixXd & NV,
|
||||
Eigen::MatrixXi & NF)
|
||||
{
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// Add your code here:
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
}
|
13
src/triangle_area_normal.cpp
Normal file
|
@ -0,0 +1,13 @@
|
|||
#include "triangle_area_normal.h"
|
||||
#include <Eigen/Geometry>
|
||||
|
||||
Eigen::RowVector3d triangle_area_normal(
|
||||
const Eigen::RowVector3d & a,
|
||||
const Eigen::RowVector3d & b,
|
||||
const Eigen::RowVector3d & c)
|
||||
{
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// Replace with your code:
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
return Eigen::RowVector3d(0,0,0);
|
||||
}
|
13
src/vertex_triangle_adjacency.cpp
Normal file
|
@ -0,0 +1,13 @@
|
|||
#include "vertex_triangle_adjacency.h"
|
||||
|
||||
void vertex_triangle_adjacency(
|
||||
const Eigen::MatrixXi & F,
|
||||
const int num_vertices,
|
||||
std::vector<std::vector<int> > & VF)
|
||||
{
|
||||
VF.resize(num_vertices);
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// Add your code here:
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
}
|
||||
|
20
src/write_obj.cpp
Normal file
|
@ -0,0 +1,20 @@
|
|||
#include "write_obj.h"
|
||||
#include <fstream>
|
||||
#include <cassert>
|
||||
#include <iostream>
|
||||
|
||||
bool write_obj(
|
||||
const std::string & filename,
|
||||
const Eigen::MatrixXd & V,
|
||||
const Eigen::MatrixXi & F,
|
||||
const Eigen::MatrixXd & UV,
|
||||
const Eigen::MatrixXi & UF,
|
||||
const Eigen::MatrixXd & NV,
|
||||
const Eigen::MatrixXi & NF)
|
||||
{
|
||||
if (!(F.size() == 0 || F.cols() == 3 || F.cols() == 4)) {
|
||||
printf("ERROR in write_obj: F must have 3 or 4 columns");
|
||||
exit(-1);
|
||||
}
|
||||
return false;
|
||||
}
|