-
Notifications
You must be signed in to change notification settings - Fork 0
/
TODO.txt
132 lines (113 loc) · 5.84 KB
/
TODO.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
LIBRARY
================================================================================
* Add memleak tests (check Application Verifier, Dr. Memory).
* Comments in Doxygen style (Qt style?).
* Implement Kahan summation iteration which takes two values and error.
* Implement Kahan summation (check functors, accumulate, transform, etc).
* Make use of FindBoost (check minimal version 1.43) and FindGTest and allow
user to change paths.
? Add "real" type which abstracts floating point type.
* Add tests for extended math functions.
Transformation3D<> class
================================================================================
* Write tests.
? Optimize vector-matrix multiplication (remove vector conversion).
MRF class collection
================================================================================
* Provide checks for template types' signatures in clique functions.
Mesh class
================================================================================
* Check algorithms and investigate speed-up possibilites (pointers, inline, etc).
* Add logging levels in operator <<().
* Make Mesh thread-safe.
* Do not add duplicated faces, edges, points.
? Do not add "close" points, e.g. which are in radius of two-three floats;
use existed point instead.
* Make well-designed accessor functions (see standard graph representations).
* Implement "primitive-object" for Mesh class in order to visualize a Mesh.
* Provide vertex moving function.
* Cache vertex normals.
* Check English names for mesh terms (basic graph and mesh definitions).
* Add debug assertions to out-of-range exceptions.
* Handle normalization of the null-vector.
* Write tests: out-of-range, assertions, distance, IO (using test data).
* Provide tsrips for fast rendering.
RawImage<> class
================================================================================
* Add iterator support.
* Rewrite OpenCV I/O functions (get rid of templated RawImage classes).
* Provide I/O for Qt classes.
* Write tests: last pixel check, real data, etc.
Vector<> class
================================================================================
* Write tests: conversion from/to Vectors of different types; operations with
converted vectors.
Triangle<> class
================================================================================
* Write tests.
IniReader class
================================================================================
* Replace IniReaderSettings class with traits.
* Add default sections to switches (otherwise e.g. GCC will not compile it).
* Try using fin.peek() != char_traits<char>::eof() instead of while (fin.good()).
* Add errors handling.
Methods namespace
================================================================================
* Add kernels for Laplacian, Prewitt operators.
* Create test images and test filtering with several kernels.
* Add tests for distances.
================================================================================
ARCHIVE
================================================================================
LIBRARY
--------------------------------------------------------------------------------
[DONE] ? Suppress warnings in headers using pragma push/pop.
[DONE] ? Make KDTree++ visible outside library.
[DONE] * CMake msvc compiler options.
[DONE] * Supress msvc unsafe CRT warnings.
[DONE] * Look at CMake's special functions such as FindBoost and, probably,
FindSTLPort.
[DONE] * add .hgeol file.
[DONE] * Create a test project (look at boost::test or Google Test Framework).
[DONE] * Populate precompiled header with frequently used headers.
[DONE] * Rename "stdafx" to "pch" in order to make it clear.
[DONE] * Provide Timer class, which works via Performance Counters on Windows
and as boost::timer on all other platforms. This should replace functions
from "bo/performance.hpp".
[DONE] * Put windows-dependent code under #ifdef.
[DONE] * Write tests for Timer class.
[DONE] * Use alternative new operator in test application for more verbose
memory leaks. See CRT debug heap for details.
[DONE] * Add "#if defined __cplusplus" to precompiled header for C++ files, so
the precompiled header can also be used in C files.
RawImage<> class
--------------------------------------------------------------------------------
[DONE] * Use 1D array.
[DONE] * Provide is_null() method.
[DONE] * Move IO-related code (RawImage<>::from_cvmat()) to "io/raw_image_io".
[DONE] * Provide index() function with range checking and death tests.
Vector<> class
--------------------------------------------------------------------------------
[DONE] * Consider using std algorithms (std::copy, std::swap, etc) instead of loops.
[DONE] * Make an n-dimensional vector based on boost::array.
[DONE] * Add useful mathematical methods, e.g. normalize(), etc.
[DONE] * Implement operator+=, operator-=, etc.
[DONE] * Test if function inlining gives some performace boost (ANSWER: more or
less NO).
[DONE] * Rewrite min(), max(), min_index(), max_index(), sum(), product() using
appropriate std algorithms, such as std::min_element(), std::accumulate().
[DONE] * Consider removing precompiled headers (problems on other platforms,
distribute builds are not possible). Or make an option in CMake.
Triangle<> class
--------------------------------------------------------------------------------
[DONE] * Implement Equals() method.
[DONE] * Implement safe at() operators.
Mesh class
--------------------------------------------------------------------------------
[DONE] * Move IO-related code: Mesh::to_ply(), Mesh::from_ply() to "io/mesh_io".
IniReader class
--------------------------------------------------------------------------------
[DONE] * Write tests.
Methods namespace
--------------------------------------------------------------------------------
[DONE] * Add function performing linear filtering for RawImage<> (filter2D).