<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="AsciiDoc 8.6.9">
<title>meow</title>
<style type="text/css">
/*
* AsciiDoc 'volnitsky' theme for xhtml11 and html5 backends.
* Based on css from http://volnitsky.com, which was in turn based on default
* theme from AsciiDoc
*
* FIXME: The styling is still a bit rough in places.
*
*/
/* Default font. */
body {
font-family: Georgia,"Times New Roman",Times,serif;
}
/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
font-family: Candara,Arial,sans-serif;
}
#toc a {
border-bottom: 1px dotted #999999;
color: #3A3A4D !important;
text-decoration: none !important;
}
#toc a:hover {
border-bottom: 1px solid #6D4100;
color: #6D4100 !important;
text-decoration: none !important;
}
a { color: #666688; text-decoration: none; border-bottom: 1px dotted #666688; }
a:visited { color: #615FA0; border-bottom: 1px dotted #615FA0; }
a:hover { color: #6D4100; border-bottom: 1px solid #6D4100; }
em {
font-style: italic;
color: #444466;
}
strong {
font-weight: bold;
color: #444466;
}
h1, h2, h3, h4, h5, h6 {
color: #666688;
margin-bottom: 0.5em;
line-height: 1.3;
letter-spacing:+0.15em;
}
h1, h2, h3 { border-bottom: 2px solid #ccd; }
h2 { padding-top: 0.5em; }
h3 { float: left; }
h3 + * { clear: left; }
div.sectionbody {
margin-left: 0;
}
hr {
border: 1px solid #444466;
}
p {
margin-top: 0.5em;
margin-bottom: 0.5em;
}
ul, ol, li > p {
margin-top: 0;
}
pre {
padding: 0;
margin: 0;
}
#author {
color: #444466;
font-weight: bold;
font-size: 1.1em;
}
#footer {
font-size: small;
border-top: 2px solid silver;
padding-top: 0.5em;
margin-top: 4.0em;
}
#footer-text {
float: left;
padding-bottom: 0.5em;
}
#footer-badges {
float: right;
padding-bottom: 0.5em;
}
#preamble {
margin-top: 1.5em;
margin-bottom: 1.5em;
}
div.tableblock, div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
margin-top: 1.5em;
margin-bottom: 1.5em;
}
div.admonitionblock {
margin-top: 2.5em;
margin-bottom: 2.5em;
}
div.content { /* Block element content. */
padding: 0;
}
/* Block element titles. */
div.title, caption.title {
color: #444466;
font-weight: bold;
text-align: left;
margin-top: 1.0em;
margin-bottom: 0.5em;
}
div.title + * {
margin-top: 0;
}
td div.title:first-child {
margin-top: 0.0em;
}
div.content div.title:first-child {
margin-top: 0.0em;
}
div.content + div.title {
margin-top: 0.0em;
}
div.sidebarblock > div.content {
background: #ffffee;
border: 1px solid silver;
padding: 0.5em;
}
div.listingblock > div.content {
border: 1px solid silver;
background: #f4f4f4;
padding: 0.5em;
}
div.quoteblock {
padding-left: 2.0em;
margin-right: 10%;
}
div.quoteblock > div.attribution {
padding-top: 0.5em;
text-align: right;
}
div.verseblock {
padding-left: 2.0em;
margin-right: 10%;
}
div.verseblock > pre.content {
font-family: inherit;
}
div.verseblock > div.attribution {
padding-top: 0.75em;
text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
text-align: left;
}
div.admonitionblock .icon {
vertical-align: top;
font-size: 1.1em;
font-weight: bold;
text-decoration: underline;
color: #444466;
padding-right: 0.5em;
}
div.admonitionblock td.content {
padding-left: 0.5em;
border-left: 2px solid silver;
}
div.exampleblock > div.content {
border-left: 2px solid silver;
padding: 0.5em;
}
div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; }
a.image:visited { color: white; }
dl {
margin-top: 0.8em;
margin-bottom: 0.8em;
}
dt {
margin-top: 0.5em;
margin-bottom: 0;
font-style: normal;
color: #444466;
}
dd > *:first-child {
margin-top: 0.1em;
}
ul, ol {
list-style-position: outside;
}
ol.arabic {
list-style-type: decimal;
}
ol.loweralpha {
list-style-type: lower-alpha;
}
ol.upperalpha {
list-style-type: upper-alpha;
}
ol.lowerroman {
list-style-type: lower-roman;
}
ol.upperroman {
list-style-type: upper-roman;
}
div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
margin-top: 0.1em;
margin-bottom: 0.1em;
}
div.tableblock > table {
border: 3px solid #444466;
}
thead {
font-weight: bold;
color: #444466;
}
tfoot {
font-weight: bold;
}
td > div.verse {
white-space: pre;
}
p.table {
margin-top: 0;
}
/* Because the table frame attribute is overriden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
border-style: none;
}
div.tableblock > table[frame="hsides"] {
border-left-style: none;
border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
border-top-style: none;
border-bottom-style: none;
}
div.hdlist {
margin-top: 0.8em;
margin-bottom: 0.8em;
}
div.hdlist tr {
padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
font-weight: bold;
}
td.hdlist1 {
vertical-align: top;
font-style: normal;
padding-right: 0.8em;
color: #444466;
}
td.hdlist2 {
vertical-align: top;
}
div.hdlist.compact tr {
margin: 0;
padding-bottom: 0;
}
.comment {
background: yellow;
}
@media print {
#footer-badges { display: none; }
}
#toctitle {
color: #666688;
font-size: 1.2em;
font-weight: bold;
margin-top: 1.0em;
margin-bottom: 0.1em;
}
div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 { margin-top: 0; margin-bottom: 0; }
div.toclevel1 { margin-top: 0.3em; margin-left: 0; font-size: 1.0em; }
div.toclevel2 { margin-top: 0.25em; margin-left: 2em; font-size: 0.9em; }
div.toclevel3 { margin-left: 4em; font-size: 0.8em; }
div.toclevel4 { margin-left: 6em; font-size: 0.8em; }
body {
margin: 1em 5%;
max-width: 55em;
padding-left: 0;
}
.monospaced, tt, div.listingblock > div.content {
font-family: Consolas, "Andale Mono", "Courier New", monospace;
color: #004400;
background: #f4f4f4;
max-width: 80em;
line-height: 1.2em;
}
.paragraph p {
line-height: 1.5em;
margin-top: 1em;
}
.paragraph p, li, dd, .content { max-width: 45em; }
.admonitionblock { max-width: 35em; }
div.sectionbody div.ulist > ul > li {
list-style-type: square;
color: #aaa;
}
div.sectionbody div.ulist > ul > li > * {
color: black;
/*font-size: 50%;*/
}
div.sectionbody div.ulist > ul > li div.ulist > ul > li {
color: #ccd ;
}
div.sectionbody div.ulist > ul > li div.ulist > ul > li > * {
color: black ;
}
em {
font-style: normal ! important;
font-weight: bold ! important;
color: #662222 ! important;
letter-spacing:+0.08em ! important;
}
/*
* html5 specific
*
* */
table.tableblock {
margin-top: 1.0em;
margin-bottom: 1.5em;
}
thead, p.tableblock.header {
font-weight: bold;
color: #666688;
}
p.tableblock {
margin-top: 0;
}
table.tableblock {
border-width: 3px;
border-spacing: 0px;
border-style: solid;
border-color: #444466;
border-collapse: collapse;
}
th.tableblock, td.tableblock {
border-width: 1px;
padding: 4px;
border-style: solid;
border-color: #444466;
}
table.tableblock.frame-topbot {
border-left-style: hidden;
border-right-style: hidden;
}
table.tableblock.frame-sides {
border-top-style: hidden;
border-bottom-style: hidden;
}
table.tableblock.frame-none {
border-style: hidden;
}
th.tableblock.halign-left, td.tableblock.halign-left {
text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
text-align: right;
}
th.tableblock.valign-top, td.tableblock.valign-top {
vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
vertical-align: bottom;
}
@media screen {
body {
max-width: 50em; /* approximately 80 characters wide */
margin-left: 16em;
}
#toc {
position: fixed;
top: 0;
left: 0;
bottom: 0;
width: 13em;
padding: 0.5em;
padding-bottom: 1.5em;
margin: 0;
overflow: auto;
border-right: 3px solid #f8f8f8;
background-color: white;
}
#toc .toclevel1 {
margin-top: 0.5em;
}
#toc .toclevel2 {
margin-top: 0.25em;
display: list-item;
color: #aaaaaa;
}
#toctitle {
margin-top: 0.5em;
}
}
</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = { // Namespace.
/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////
/* Author: Mihai Bazon, September 2002
* http://students.infoiasi.ro/~mishoo
*
* Table Of Content generator
* Version: 0.4
*
* Feel free to use this script under the terms of the GNU General Public
* License, as long as you do not remove or alter this notice.
*/
/* modified by Troy D. Hanson, September 2006. License: GPL */
/* modified by Stuart Rackham, 2006, 2009. License: GPL */
// toclevels = 1..4.
toc: function (toclevels) {
function getText(el) {
var text = "";
for (var i = el.firstChild; i != null; i = i.nextSibling) {
if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
text += i.data;
else if (i.firstChild != null)
text += getText(i);
}
return text;
}
function TocEntry(el, text, toclevel) {
this.element = el;
this.text = text;
this.toclevel = toclevel;
}
function tocEntries(el, toclevels) {
var result = new Array;
var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
// Function that scans the DOM tree for header elements (the DOM2
// nodeIterator API would be a better technique but not supported by all
// browsers).
var iterate = function (el) {
for (var i = el.firstChild; i != null; i = i.nextSibling) {
if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
var mo = re.exec(i.tagName);
if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
}
iterate(i);
}
}
}
iterate(el);
return result;
}
var toc = document.getElementById("toc");
if (!toc) {
return;
}
// Delete existing TOC entries in case we're reloading the TOC.
var tocEntriesToRemove = [];
var i;
for (i = 0; i < toc.childNodes.length; i++) {
var entry = toc.childNodes[i];
if (entry.nodeName.toLowerCase() == 'div'
&& entry.getAttribute("class")
&& entry.getAttribute("class").match(/^toclevel/))
tocEntriesToRemove.push(entry);
}
for (i = 0; i < tocEntriesToRemove.length; i++) {
toc.removeChild(tocEntriesToRemove[i]);
}
// Rebuild TOC entries.
var entries = tocEntries(document.getElementById("content"), toclevels);
for (var i = 0; i < entries.length; ++i) {
var entry = entries[i];
if (entry.element.id == "")
entry.element.id = "_toc_" + i;
var a = document.createElement("a");
a.href = "#" + entry.element.id;
a.appendChild(document.createTextNode(entry.text));
var div = document.createElement("div");
div.appendChild(a);
div.className = "toclevel" + entry.toclevel;
toc.appendChild(div);
}
if (entries.length == 0)
toc.parentNode.removeChild(toc);
},
/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////
/* Based on footnote generation code from:
* http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
*/
footnotes: function () {
// Delete existing footnote entries in case we're reloading the footnodes.
var i;
var noteholder = document.getElementById("footnotes");
if (!noteholder) {
return;
}
var entriesToRemove = [];
for (i = 0; i < noteholder.childNodes.length; i++) {
var entry = noteholder.childNodes[i];
if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
entriesToRemove.push(entry);
}
for (i = 0; i < entriesToRemove.length; i++) {
noteholder.removeChild(entriesToRemove[i]);
}
// Rebuild footnote entries.
var cont = document.getElementById("content");
var spans = cont.getElementsByTagName("span");
var refs = {};
var n = 0;
for (i=0; i<spans.length; i++) {
if (spans[i].className == "footnote") {
n++;
var note = spans[i].getAttribute("data-note");
if (!note) {
// Use [\s\S] in place of . so multi-line matches work.
// Because JavaScript has no s (dotall) regex flag.
note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
spans[i].innerHTML =
"[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
"' title='View footnote' class='footnote'>" + n + "</a>]";
spans[i].setAttribute("data-note", note);
}
noteholder.innerHTML +=
"<div class='footnote' id='_footnote_" + n + "'>" +
"<a href='#_footnoteref_" + n + "' title='Return to text'>" +
n + "</a>. " + note + "</div>";
var id =spans[i].getAttribute("id");
if (id != null) refs["#"+id] = n;
}
}
if (n == 0)
noteholder.parentNode.removeChild(noteholder);
else {
// Process footnoterefs.
for (i=0; i<spans.length; i++) {
if (spans[i].className == "footnoteref") {
var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
href = href.match(/#.*/)[0]; // Because IE return full URL.
n = refs[href];
spans[i].innerHTML =
"[<a href='#_footnote_" + n +
"' title='View footnote' class='footnote'>" + n + "</a>]";
}
}
}
},
install: function(toclevels) {
var timerId;
function reinstall() {
asciidoc.footnotes();
if (toclevels) {
asciidoc.toc(toclevels);
}
}
function reinstallAndRemoveTimer() {
clearInterval(timerId);
reinstall();
}
timerId = setInterval(reinstall, 500);
if (document.addEventListener)
document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
else
window.onload = reinstallAndRemoveTimer;
}
}
asciidoc.install(4);
/*]]>*/
</script>
</head>
<body class="article" style="max-width:70em">
<div id="header">
<h1>meow</h1>
<div id="toc">
<div id="toctitle">Table of Contents</div>
<noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_description">Description</h2>
<div class="sectionbody">
<div class="paragraph"><p>一個不需要, 也不應該先compile成obj files的templates.</p></div>
<div class="ulist"><div class="title">Links</div><ul>
<li>
<p>
<a href="https://github.com/cathook/meow">GitHub</a>
</p>
</li>
<li>
<p>
<a href="http://www.csie.ntu.edu.tw/~b01902109/readme/template_meow/README.html">README.html</a>
</p>
</li>
<li>
<p>
<a href="https://github.com/cathook/meow/archive/master.zip">Download</a>
</p>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_file_tree">File Tree</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_latex">LaTex/</h3>
<div class="paragraph"><p>LaTex 相關模板</p></div>
<div class="sect4">
<h5 id="_makefile">Makefile</h5>
<div class="paragraph"><p>環境變數:</p></div>
<div class="ulist"><ul>
<li>
<p>
<span class="monospaced">SOURCE = source.tex</span> 設定 <em>LaTex</em> 源碼檔名
</p>
</li>
<li>
<p>
<span class="monospaced">TARGET = output</span> 設定生出來的 <strong>pdf</strong> 檔名
</p>
</li>
</ul></div>
<div class="admonitionblock">
<table><tr>
<td class="icon">
<div class="title">Note</div>
</td>
<td class="content"><span class="monospaced">TARGET</span> 不需要給副檔名</td>
</tr></table>
</div>
<div class="paragraph"><p>targets:</p></div>
<div class="ulist"><ul>
<li>
<p>
<span class="monospaced">all</span> 生成 <strong><em><TARGET></em>.pdf</strong>
</p>
</li>
<li>
<p>
<span class="monospaced">view</span> 用kde-open 把輸出結果開起來(如有需要會先重新編譯)
</p>
</li>
<li>
<p>
<span class="monospaced">clean</span> 清除
</p>
</li>
<li>
<p>
<span class="monospaced">two</span> 編譯兩次, 如果有目錄的話可能會需要用到
</p>
</li>
</ul></div>
</div>
<div class="sect4">
<h5 id="_source_tex">source.tex</h5>
<div class="paragraph"><p>內容為一些我自己定義的設定, 參數設置等等. 另外還有用寫在註解裡面的小筆記</p></div>
</div>
</div>
<div class="sect2">
<h3 id="_asciidoc">asciidoc/</h3>
<div class="paragraph"><p>一些關於asciidoc的example與編譯設定</p></div>
<div class="sect4">
<h5 id="_makefile_2">Makefile</h5>
<div class="paragraph"><p>編譯asciidoc用的, 裡面有兩個環境變數:</p></div>
<div class="ulist"><ul>
<li>
<p>
ASCIIDOC_SOURCE: 指定原始碼, 預設為 <em>example.txt</em>
</p>
</li>
<li>
<p>
ASCIIDOC_OUTPUT: 輸出的檔名, 預設為 <em>output.html</em>
</p>
</li>
</ul></div>
<div class="paragraph"><p>另外還有一個target:</p></div>
<div class="listingblock">
<div class="content"></div></div>
</div>
</div>
<div class="sect2">
<h3 id="_cppmakefile">cppMakefile/</h3>
<div class="paragraph"><div class="title">Description</div><p>這是一個簡單的 <strong>GNU makefile for <em>C++</em> project</strong>
類似AutoTool等工具, 不過又更簡化了, 操作方法是利用GNUMakefile裡的targets
當作指令, 生出一個targets檔, 以後鍵入 <span class="monospaced">make all</span> 就會自動把所有targets都
編譯出來.</p></div>
<div class="ulist"><div class="title">Commands</div><ul>
<li>
<p>
<span class="monospaced">make init</span><br>
初始化, 設定完之後所在位置會多幾個資料夾如下
</p>
<div class="ulist"><ul>
<li>
<p>
<em>bin/</em> 放編譯出來的執行檔
</p>
</li>
<li>
<p>
<em>dep/</em> dependency相關資料, 內容會自動生成, 不用理它
</p>
</li>
<li>
<p>
<em>inc/</em> 自定義的include file放置位置
</p>
</li>
<li>
<p>
<em>src/</em> source code放置位置
</p>
</li>
<li>
<p>
<em>obj/</em> obj file放置位置, 會自動生成, 不用理它
</p>
</li>
</ul></div>
</li>
<li>
<p>
<span class="monospaced">make new NAME=<name> [OBJS=<OBJ_FILES> LIBS=<LIBRARIES>]</span><br>
新增一個target, 須給定目標名 , 並且此Makefile會假定 <span class="monospaced">main() { ... }</span> 放在
<em>src/<name>.cpp</em> 而最終輸出會是 <em>bin/<name></em> .<br>
關於 <em>OBJS=</em> 與 <em>LIBS=</em> 參考下面說明
</p>
</li>
<li>
<p>
<span class="monospaced">make add NAME=<name> [OBJS=<OBJ_FILES> LIBS=<LIBRARIES>]</span><br>
針對target為 <em><name></em> 的目標新增需要的 <em><OBJ_FILES></em> , 與 <em><LIBRARIES></em>.
<em><LIBRARIES></em> 的部份會用 <span class="monospaced">pkg-config</span> 去解讀, 例如 <em><LIBRARIES></em> 為
<em>opencv lapackpp</em> 則link時會被以下指令展開<br>
<span class="monospaced">pkg-config --libs opencv lapackpp</span><br>
而 <em><OBJ_FILES></em> 的部份則只需要給 <strong>name</strong> 就好, 不需要有完整個 pathname, 例如
例如 <em><OBJ_FILES></em> 是 <em>a b c</em> 則此makefile會視為
</p>
<div class="ulist"><ul>
<li>
<p>
source code: <em>src/a.cpp src/b.cpp src/c.cpp</em>
</p>
</li>
<li>
<p>
obj file: <em>obj/a.o obj/b.o obj/c.o</em>
</p>
</li>
</ul></div>
</li>
<li>
<p>
<span class="monospaced">make del NAME=<name> [OBJS=<OBJ_FILES> LIBS=<LIBRARIES>]</span><br>
與 add相反, 嘗試將指定target所需的<em><OBJ_FILES>'和</em><LIBRARIES>'移除
</p>
</li>
<li>
<p>
<span class="monospaced">make clean</span><br>
將 <em>bin/<strong></em> <em>dep/</strong></em> <em>obj/*</em> 清除, 有時候覺得dependency怪怪的
時可以嘗試執行此指令
</p>
</li>
</ul></div>
<div class="admonitionblock">
<table><tr>
<td class="icon">
<div class="title">Note</div>
</td>
<td class="content">其中整個project到底有哪些obj file會完全依照 <strong>src/</strong> 裡面有哪些 <span class="monospaced">.cpp</span> 檔決定</td>
</tr></table>
</div>
<div class="sect4">
<h5 id="_gnumakefile">GNUMakefile</h5>
<div class="paragraph"><p>就是一個 Makefile, 不過裡面有些東西是 <span class="monospaced">GNU-make</span> only的</p></div>
</div>
<div class="sect4">
<h5 id="_gnumakefile_dependency_bash">GNUMakefile.dependency.bash</h5>
<div class="paragraph"><p>產生 dependency檔用的</p></div>
</div>
</div>
<div class="sect2">
<h3 id="_doxygen">doxygen/</h3>
<div class="paragraph"><p>doxygen 相關設定</p></div>
<div class="sect4">
<h5 id="_makefile_3">Makefile</h5>
<div class="paragraph"><p>編譯doxygen document的Makefile, 裡面只有一個target: <em>document</em>,
另外有兩個環境變數:</p></div>
<div class="ulist"><ul>
<li>
<p>
DOXYGEN_RUN_PATH: 指定doxygen執行的pwd, 預設為 <span class="monospaced">pwd</span>
</p>
</li>
<li>
<p>
DOXYGEN_CONFIG: 指定config檔放在哪裡, 預設為 <span class="monospaced">pwd</span>
</p>
</li>
</ul></div>
</div>
<div class="sect4">
<h5 id="_config">config</h5>
<div class="paragraph"><p>設置, 以下幾點個人覺得比較重要的</p></div>
<div class="listingblock">
<div class="content"></div></div>
<div class="admonitionblock">
<table><tr>
<td class="icon">
<div class="title">Note</div>
</td>
<td class="content"><em>config</em> 中 <span class="monospaced">$(config_path)</span> 是一個環境變數, 代表這個configure file所在位置
<strong>呼叫asciidoc時必須有設置這個環境變數</strong></td>
</tr></table>
</div>
</div>
<div class="sect4">
<h5 id="_header_html">header.html</h5>
<div class="paragraph"><p><strong>HTML</strong> output 的開頭
沒有更動</p></div>
</div>
<div class="sect4">
<h5 id="_footer_html">footer.html</h5>
<div class="paragraph"><p><strong>HTML</strong> output 的結尾
沒有更動</p></div>
</div>
<div class="sect4">
<h5 id="_logo_png">logo.png</h5>
<div class="paragraph"><p>就是logo</p></div>
</div>
<div class="sect4">
<h5 id="_stylesheet_css">stylesheet.css</h5>
<div class="paragraph"><p><strong>HTML</strong> output 的css樣式, 我把他改成暗色系了</p></div>
<div class="paragraph"><p>以下是更動的地方:</p></div>
<div class="listingblock">
<div class="content"></div></div>
</div>
<div class="sect4">
<h5 id="_custom_css">custom.css</h5>
<div class="paragraph"><p><strong>HTML</strong> output 的css樣式, 在這邊設定的話連 <em>navtree</em> 等都可以設定.<br>
另外這個檔案的檔名不能是 <span class="monospaced">navtree.css</span> , 不知道是不是bug.</p></div>
</div>
<div class="sect4">
<h5 id="_header_tex">header.tex</h5>
<div class="paragraph"><p><strong>LaTex</strong> output 的開頭</p></div>
</div>
<div class="sect4">
<h5 id="_header_tex_2">header.tex</h5>
<div class="paragraph"><p><strong>LaTex</strong> output 的結尾</p></div>
</div>
<div class="sect4">
<h5 id="_stylesheet_sty">stylesheet.sty</h5>
<div class="paragraph"><p><strong>LaTex</strong> 的樣式設定</p></div>
</div>
</div>
<div class="sect2">
<h3 id="_meowpp">meowpp/</h3>
<div class="paragraph"><p>meow for <strong>C++ templates</strong></p></div>
<div class="sect4">
<h5 id="_self_h">Self.h</h5>
<div class="paragraph"><p>包含一個具有 <strong>Copy On Write</strong> 技術的 <em>class</em> 而且有實作 <strong>by reference</strong> ,
基本上就是改良C\+\+原本的 reference 機制, 原本的 reference 只能在宣告的時候
指定參照指向的變數,
而這邊則可以動態改變</p></div>
</div>
<div class="sect4">
<h5 id="_usage_h">Usage.h</h5>
<div class="paragraph"><p>方便user製作還算精美的 <strong>usage document</strong> 並且利用 <span class="monospaced">getopt()</span> 實作讀入參數與分析</p></div>
</div>
<div class="sect4">
<h5 id="_utility_h">utility.h</h5>
<div class="paragraph"><p>一些不知道要歸類到哪的小functions</p></div>
</div>
<div class="sect3">
<h4 id="_colors">colors/</h4>
<div class="paragraph"><p>一些 <strong>color space</strong> 以及這些space的 <strong>transformate function</strong> 都放在這資料夾下</p></div>
<div class="admonitionblock">
<table><tr>
<td class="icon">
<div class="title">Note</div>
</td>
<td class="content">目前transformation function的準確率還很低, 有待以後加強</td>
</tr></table>
</div>
<div class="sect4">
<h5 id="_color3_space_h">Color3_Space.h</h5>
<div class="paragraph"><p><span class="monospaced">class Color3_Space<T></span> <strong>Channel Number = 3</strong> 的 Color Space 的共通 <strong>Base class</strong></p></div>
</div>
<div class="sect4">
<h5 id="_rgb_space_h">RGB_Space.h</h5>
<div class="paragraph"><p>Channel分別是</p></div>
<div class="ulist"><ul>
<li>
<p>
Red
</p>
</li>
<li>
<p>
Green
</p>
</li>
<li>
<p>
Blue
</p>
</li>
</ul></div>
<div class="ulist"><div class="title">Classes</div><ul>
<li>
<p>
<span class="monospaced">meow::RGBi_Space</span> 用 <em>int</em> 存資料, 每個channel數值合法範圍是 <strong>0~255</strong>
</p>
</li>
<li>
<p>
<span class="monospaced">meow::RGBf_Space</span> 用 <em>double</em> 存資料, 每個channel數值合法範圍是 <strong>0.0~1.0</strong>
</p>
</li>
</ul></div>
<div class="ulist"><div class="title">Functions</div><ul>
<li>
<p>
<span class="monospaced">meow::colorTransformation(in, *out)</span> for
</p>
<div class="ulist"><ul>
<li>
<p>
RGBi_Space ←→ RGBf_Space
</p>
</li>
</ul></div>
</li>
</ul></div>
</div>
<div class="sect4">
<h5 id="_yuv_space_h">YUV_Space.h</h5>
<div class="paragraph"><p>Channel分別是</p></div>
<div class="ulist"><ul>
<li>
<p>
Y 明度
</p>
</li>
<li>
<p>
U 色度
</p>
</li>
<li>
<p>
V 濃度
</p>
</li>
</ul></div>
<div class="ulist"><div class="title">Classes</div><ul>
<li>
<p>
<span class="monospaced">meow::YUVf_Space</span> 用 <em>double</em> 存資料, 每個channel數值合法範圍是 <strong>0~1.0</strong>
</p>
</li>
</ul></div>
<div class="ulist"><div class="title">Functions</div><ul>
<li>
<p>
<span class="monospaced">meow::colorTransformation(in, *out)</span> for
</p>
<div class="ulist"><ul>
<li>
<p>
YUVf_Space ←→ RGBi_Space
</p>
</li>
<li>
<p>
YUVf_Space ←→ RGBf_Space
</p>
</li>
</ul></div>
</li>
</ul></div>
</div>
<div class="sect4">
<h5 id="_hsl_space_h">HSL_Space.h</h5>
<div class="paragraph"><p>Channel分別是</p></div>
<div class="ulist"><ul>
<li>
<p>
H 色調
</p>
</li>
<li>
<p>
S 飽和度
</p>
</li>
<li>
<p>
L 亮度
</p>
</li>
</ul></div>
<div class="ulist"><div class="title">Classes</div><ul>
<li>
<p>
<span class="monospaced">meow::HSLf_Space</span> 用 <em>double</em> 存資料, 每個channel數值合法範圍是 <strong>0~1.0</strong>
</p>
</li>
</ul></div>
<div class="ulist"><div class="title">Functions</div><ul>
<li>
<p>
<span class="monospaced">meow::colorTransformation(in, *out)</span> for
</p>
<div class="ulist"><ul>
<li>
<p>
HSLf_Space ←→ RGBi_Space
</p>
</li>
<li>
<p>
HSLf_Space ←→ RGBf_Space
</p>
</li>
<li>
<p>
HSLf_Space ←→ YUVf_Space
</p>
</li>
</ul></div>
</li>
</ul></div>
</div>
<div class="sect4">
<h5 id="_hsv_space_h">HSV_Space.h</h5>
<div class="paragraph"><p>Channel分別是</p></div>
<div class="ulist"><ul>
<li>
<p>
H 色調
</p>
</li>
<li>
<p>
S 飽和度
</p>
</li>
<li>
<p>
V 亮度
</p>
</li>
</ul></div>
<div class="ulist"><div class="title">Classes</div><ul>
<li>
<p>
<span class="monospaced">meow::HSVf_Space</span> 用 <em>double</em> 存資料, 每個channel數值合法範圍是 <strong>0~1.0</strong>
</p>
</li>
</ul></div>
<div class="ulist"><div class="title">Functions</div><ul>
<li>
<p>
<span class="monospaced">meow::colorTransformation(in, *out)</span> for
</p>
<div class="ulist"><ul>
<li>
<p>
HSVf_Space ←→ RGBi_Space
</p>
</li>
<li>
<p>
HSVf_Space ←→ RGBf_Space
</p>
</li>
<li>
<p>
HSVf_Space ←→ YUVf_Space
</p>
</li>
<li>
<p>
HSVf_Space ←→ HSLf_Space
</p>
</li>
</ul></div>
</li>
</ul></div>
</div>
</div>
<div class="sect3">
<h4 id="_dsa">dsa/</h4>
<div class="paragraph"><p>包含一些資料結構</p></div>
<div class="sect4">
<h5 id="_binaryindextree_h">BinaryIndexTree.h</h5>
<div class="paragraph"><p>極度簡化的 <strong>SegmentTree</strong> 已無區間更新的操作.</p></div>
<div class="ulist"><div class="title">Classes</div><ul>
<li>
<p>
<span class="monospaced">meow::BinaryIndexTree<Value></span>
</p>
</li>
</ul></div>
</div>
<div class="sect4">
<h5 id="_disjointset_h">DisjointSet.h</h5>
<div class="paragraph"><p>用來維護一堆互斥集的資訊.</p></div>
<div class="ulist"><div class="title">Classes</div><ul>
<li>
<p>
<span class="monospaced">meow::DisjointSet</span>
</p>
</li>
</ul></div>
</div>
<div class="sect4">
<h5 id="_hashtable_h">HashTable.h</h5>
<div class="paragraph"><p>就是傳說中的HashTable</p></div>
<div class="ulist"><div class="title">Classes</div><ul>
<li>
<p>
<span class="monospaced">meow::HashTableList<Data, HashFunc></span>
</p>
</li>
</ul></div>
</div>
<div class="sect4">
<h5 id="_kd_tree_h">KD_Tree.h</h5>
<div class="paragraph"><p>查詢第k近鄰居用的</p></div>
<div class="ulist"><div class="title">Classes</div><ul>
<li>
<p>
<span class="monospaced">meow::KD_Tree<Vector></span>
</p>
</li>
</ul></div>
</div>
<div class="sect4">
<h5 id="_mergeableheap_h">MergeableHeap.h</h5>
<div class="paragraph"><p>可合併Heap</p></div>
<div class="ulist"><div class="title">Classes</div><ul>
<li>
<p>
<span class="monospaced">meow::MergeableHeap<Element></span>
</p>
</li>
</ul></div>
</div>
<div class="sect4">
<h5 id="_segmenttree_h">SegmentTree.h</h5>
<div class="paragraph"><p>線段樹
.Classes
* <span class="monospaced">meow::SegmentTree<Value></span></p></div>
</div>
<div class="sect4">
<h5 id="_splaytree_h">SplayTree.h</h5>
<div class="paragraph"><p>伸展樹, 比一般平衡樹稍強的東東
* <span class="monospaced">meow::SplayTree<Key, Value></span>
* <span class="monospaced">meow::SplayTree_Range<Key, Value></span></p></div>
</div>
<div class="sect4">
<h5 id="_vp_tree_h">VP_Tree.h</h5>
<div class="paragraph"><p>查詢第k近鄰居用的</p></div>
<div class="ulist"><div class="title">Classes</div><ul>
<li>
<p>
<span class="monospaced">meow::VP_Tree<Vector></span>
</p>
</li>
</ul></div>
</div>
</div>
<div class="sect3">
<h4 id="_geo">geo/</h4>
<div class="paragraph"><p>計算幾何相關, 算是從math中特化出來的</p></div>
<div class="sect4">
<h5 id="_vectors_h">Vectors.h</h5>
<div class="paragraph"><p>實作上不是用陣列, 是直接宣告2到3個變數分別存x, y (,z)</p></div>
<div class="ulist"><div class="title">Classes</div><ul>
<li>
<p>
<span class="monospaced">meow::Vector2D<Scalar></span>
</p>
</li>
<li>
<p>
<span class="monospaced">meow::Vector3D<Scalar></span>
</p>
</li>
</ul></div>
</div>
</div>
<div class="sect3">
<h4 id="_math">math/</h4>
<div class="sect4">
<h5 id="_utility_h_2">utility.h</h5>
<div class="paragraph"><p>數學相關的小 function 雜七雜八的不知道歸類何處</p></div>
<div class="ulist"><div class="title">Functions</div><ul>
<li>
<p>
noEPS()
</p>
</li>
<li>
<p>
normalize()
</p>
</li>
<li>
<p>
denormalize()
</p>
</li>
<li>
<p>
ratioMapping()
</p>
</li>
<li>
<p>
inRange()
</p>
</li>
<li>
<p>
squ()
</p>
</li>
<li>
<p>
cub()
</p>
</li>
<li>
<p>
average()
</p>
</li>
<li>
<p>
average()
</p>
</li>
<li>
<p>
tAbs()
</p>
</li>
</ul></div>
<div class="ulist"><div class="title">Constants</div><ul>
<li>
<p>
PI
</p>
</li>
</ul></div>
</div>
<div class="sect4">
<h5 id="_matrix_h">Matrix.h</h5>
<div class="ulist"><div class="title">Classes</div><ul>
<li>
<p>
<span class="monospaced">meow::Matrix<Entry></span>
</p>
</li>
</ul></div>
</div>
<div class="sect4">
<h5 id="_vector_h">Vector.h</h5>
<div class="paragraph"><p>實作上將 <strong>Matrix</strong> 重新包裝</p></div>
<div class="ulist"><div class="title">Classes</div><ul>
<li>
<p>
<span class="monospaced">meow::Vector<Scalar></span>
</p>
</li>
</ul></div>
</div>
<div class="sect4">
<h5 id="_transformation_h">Transformation.h</h5>
<div class="paragraph"><p>各種轉換的 Base Class, 這裡所謂的 <strong>Transformation</strong> 形式上不一定要是 Linear,
但原則上都是 <strong>input a vector, output a vector</strong> 其中input/output的dimension可以
不同.</p></div>
<div class="ulist"><div class="title">Classes</div><ul>
<li>
<p>
<span class="monospaced">meow::Transformation<Scalar></span>
</p>
</li>
</ul></div>
</div>
<div class="sect4">
<h5 id="_transformations_h">Transformations.h</h5>
<div class="paragraph"><p>包含各種 <strong>Non-Linear</strong> transformation</p></div>
<div class="ulist"><div class="title">Classes</div><ul>
<li>
<p>
<span class="monospaced">meow::BallProjection<Scalar></span>
</p>
</li>
<li>
<p>
<span class="monospaced">meow::PhotoProjection<Scalar></span>
</p>
</li>
</ul></div>
</div>
<div class="sect4">
<h5 id="_lineartransformation_h">LinearTransformation.h</h5>
<div class="paragraph"><p>各種 LinearTransformation 的Base Class, 繼承自 <span class="monospaced">meow::Transformation</span></p></div>
<div class="ulist"><div class="title">Classes</div><ul>
<li>
<p>
<span class="monospaced">meow::LinearTransformation<Scalar></span>
</p>
</li>
</ul></div>
</div>
<div class="sect4">
<h5 id="_lineartransformations_h">LinearTransformations.h</h5>
<div class="paragraph"><p>各種 <strong>Linear</strong> Transformation</p></div>
<div class="ulist"><div class="title">Classes</div><ul>
<li>
<p>
<span class="monospaced">meow::Rotation3D<Scalar></span>
</p>
</li>
</ul></div>
</div>
<div class="sect4">
<h5 id="_methods_h">methods.h</h5>
<div class="paragraph"><p>一些數學方法</p></div>
<div class="ulist"><div class="title">Functions</div><ul>
<li>
<p>
ransac()
</p>
</li>
<li>
<p>
levenbergMarquardt()
</p>
</li>
</ul></div>
</div>
</div>
<div class="sect3">
<h4 id="_oo">oo/</h4>
<div class="paragraph"><p>物件相關</p></div>
<div class="sect4">
<h5 id="_objbase_h">ObjBase.h</h5>
<div class="ulist"><div class="title">Classes</div><ul>
<li>
<p>
<span class="monospaced">meow::ObjBase</span>
</p>
</li>
</ul></div>
</div>
<div class="sect4">
<h5 id="_objtypes_h">ObjTypes.h</h5>
<div class="ulist"><div class="title">Classes</div><ul>
<li>
<p>
<span class="monospaced">meow::ObjType</span>
</p>
</li>
<li>
<p>
<span class="monospaced">meow::ObjInt</span>
</p>
</li>
<li>
<p>
<span class="monospaced">meow::ObjSizeT</span>
</p>
</li>
<li>
<p>
<span class="monospaced">meow::ObjDouble</span>
</p>
</li>
<li>
<p>
<span class="monospaced">meow::ObjString</span>
</p>
</li>
</ul></div>
</div>
<div class="sect4">
<h5 id="_objarray_h">ObjArray.h</h5>
<div class="ulist"><div class="title">Classes</div><ul>
<li>
<p>
<span class="monospaced">meow::ObjArray</span>
</p>
</li>
</ul></div>
</div>
<div class="sect4">
<h5 id="_objdictionary_h">ObjDictionary.h</h5>
<div class="ulist"><div class="title">Classes</div><ul>
<li>
<p>
<span class="monospaced">meow::ObjDictionary</span>
</p>
</li>
</ul></div>
</div>
<div class="sect4">
<h5 id="_objselector_h">ObjSelector.h</h5>
<div class="ulist"><div class="title">Classes</div><ul>
<li>
<p>
<span class="monospaced">meow::ObjSelector<SID></span>
</p>
</li>
</ul></div>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_test">Test</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_acm_相關題目">ACM 相關題目</h3>
<table class="tableblock frame-all grid-rows"
style="
width:70%;
">
<col style="width:21%;">
<col style="width:21%;">
<col style="width:28%;">
<col style="width:7%;">
<col style="width:7%;">
<col style="width:14%;">
<thead>
<tr>
<th class="tableblock halign-left valign-top" > Name </th>
<th class="tableblock halign-left valign-top" > Problem </th>
<th class="tableblock halign-center valign-top" > Link </th>
<th class="tableblock halign-center valign-top" > Status </th>
<th class="tableblock halign-left valign-top" > Time </th>
<th class="tableblock halign-center valign-top" > source</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top" ><p class="tableblock"><strong>KD_Tree</strong></p></td>
<td class="tableblock halign-left valign-top" ><p class="tableblock"><em>Retrenchment</em></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"><a href="http://acm.csie.org/ntujudge/problem.php?id=1971">NTU-OJ</a>
<a href="https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4052">ACM-ICPC Live</a></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock">Accept</p></td>
<td class="tableblock halign-left valign-top" ><p class="tableblock">0.083/0.083</p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock monospaced"><a href="http://codepad.org/U85ruse5">codepad</a></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top" ><p class="tableblock"><strong>VP_Tree</strong></p></td>
<td class="tableblock halign-left valign-top" ><p class="tableblock"><em>Retrenchment</em></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"><a href="http://acm.csie.org/ntujudge/problem.php?id=1971">NTU-OJ</a>
<a href="https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4052">ACM-ICPC Live</a></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock">Accept</p></td>
<td class="tableblock halign-left valign-top" ><p class="tableblock">0.516/0.516</p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock monospaced"><a href="http://codepad.org/03dW6ZHV">codepad</a></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top" ><p class="tableblock"><strong>SplayTree + SegmentTree</strong></p></td>
<td class="tableblock halign-left valign-top" ><p class="tableblock"><em>Shuffling_cards</em></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"><a href="http://acm.csie.org/ntujudge/problem.php?id=1353">NTU-OJ</a>
<a href="http://www.spoj.com/problems/SHUFFLEK/">SPOJ</a></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock">Accept/TLE</p></td>
<td class="tableblock halign-left valign-top" ><p class="tableblock">6.910/---</p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock monospaced"><a href="http://codepad.org/yUeiVZc0">codepad</a></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top" ><p class="tableblock"><strong>SplayTree + BinaryIndexTree</strong></p></td>
<td class="tableblock halign-left valign-top" ><p class="tableblock"><em>Shuffling_cards</em></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"><a href="http://acm.csie.org/ntujudge/problem.php?id=1353">NTU-OJ</a>
<a href="http://www.spoj.com/problems/SHUFFLEK/">SPOJ</a></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock">Accept/Accept</p></td>
<td class="tableblock halign-left valign-top" ><p class="tableblock">5.480/44.35</p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock monospaced"><a href="http://codepad.org/GAWjEtmq">codepad</a></p></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_bug_report_contact">Bug Report / Contact</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
E-Mail: cat.hook31894 ~在~ gmail.com
</p>
</li>
<li>
<p>
GitHub
</p>
</li>
</ul></div>
</div>
</div>
</div>
<div id="footnotes"><hr></div>
<div id="footer">
<div id="footer-text">
Last updated 2014-06-24 03:53:30 CST
</div>
</div>
</body>
</html>