<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-5922256080951534731</id><updated>2009-02-21T10:31:17.914+08:00</updated><title type='text'>SEIZE THE DAY</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://livingfish.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5922256080951534731/posts/default'/><link rel='alternate' type='text/html' href='http://livingfish.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Zou</name><uri>http://www.blogger.com/profile/02110196571661635910</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>7</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5922256080951534731.post-1127089384348551812</id><published>2007-05-22T14:26:00.000+08:00</published><updated>2007-05-22T14:29:35.155+08:00</updated><title type='text'>Quickly open the cmd window for the current directory</title><content type='html'>&lt;span style="font-family: arial;"&gt;For winXP&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial; color: rgb(153, 51, 0);"&gt;Windows Registry Editor Version 5.00&lt;/span&gt; &lt;div style="font-family: arial; color: rgb(153, 51, 0);"&gt;[HKEY_CLASSES_ROOT\Directory\shell\CommandPrompt]&lt;br /&gt;@="Cmd"&lt;/div&gt; &lt;span style="font-family: arial; color: rgb(153, 51, 0);"&gt;[HKEY_CLASSES_ROOT\Directory\shell\CommandPrompt\Command]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial; color: rgb(153, 51, 0);"&gt;@="cmd.exe /k cd \"%1\""&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5922256080951534731-1127089384348551812?l=livingfish.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://livingfish.blogspot.com/feeds/1127089384348551812/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5922256080951534731&amp;postID=1127089384348551812' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5922256080951534731/posts/default/1127089384348551812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5922256080951534731/posts/default/1127089384348551812'/><link rel='alternate' type='text/html' href='http://livingfish.blogspot.com/2007/05/quickly-open-cmd-window-for-current.html' title='Quickly open the cmd window for the current directory'/><author><name>Zou</name><uri>http://www.blogger.com/profile/02110196571661635910</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11199745370131991659'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5922256080951534731.post-976303276692804606</id><published>2007-05-21T19:22:00.000+08:00</published><updated>2007-05-22T19:39:55.043+08:00</updated><title type='text'>Personal webpage of CV</title><content type='html'>&lt;p&gt;*Range data processing, meshing and graphics&lt;/p&gt;&lt;p&gt;Szymon Rusinkiewicz&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cs.princeton.edu/~smr/"&gt;http://www.cs.princeton.edu/~smr/&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&lt;br /&gt;*A japanese guy who majors in 3D reconstruction &lt;/p&gt;&lt;p&gt;Yasutaka Furukawa &lt;/p&gt;&lt;p&gt;&lt;a href="http://www-cvr.ai.uiuc.edu/~yfurukaw/"&gt;http://www-cvr.ai.uiuc.edu/~yfurukaw/&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5922256080951534731-976303276692804606?l=livingfish.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://livingfish.blogspot.com/feeds/976303276692804606/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5922256080951534731&amp;postID=976303276692804606' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5922256080951534731/posts/default/976303276692804606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5922256080951534731/posts/default/976303276692804606'/><link rel='alternate' type='text/html' href='http://livingfish.blogspot.com/2007/05/personal-webpage-of-cv.html' title='Personal webpage of CV'/><author><name>Zou</name><uri>http://www.blogger.com/profile/02110196571661635910</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11199745370131991659'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5922256080951534731.post-2964971827475559561</id><published>2007-05-20T10:23:00.000+08:00</published><updated>2007-05-20T11:17:24.119+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Technical Memo'/><title type='text'>Byte order</title><content type='html'>&lt;span class="hw"&gt;from &lt;a href="http://www.answers.com/"&gt;http://www.answers.com&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;p&gt; The way numbers are stored in a computer word, which is the basic unit of storage (computer words are 8, 16, 32 and 64 bits long).&lt;/p&gt;&lt;p&gt;&lt;b&gt;Big Endian and Little Endian&lt;/b&gt;&lt;/p&gt;&lt;p&gt; Big endian is the way we normally deal with numbers: the most significant byte or digits are placed leftmost in the structure (the big end). The Internet protocol (TCP/IP) also uses the big endian order regardless of the hardware at either end.&lt;/p&gt;&lt;p&gt;Some CPUs, most notably x86 CPUs, deal with words in little endian order, which places the least significant digits on the left (the little end). Since numbers are calculated by the CPU starting with the least significant digits, little endian numbers are already set up in the required processing order.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Bi-Endian&lt;/b&gt;&lt;/p&gt;&lt;p&gt; A bi-endian machine, such as the PowerPC, supports both big endian and little endian words.&lt;/p&gt;&lt;p&gt;In the following example, the decimal number 23,041 (equivalent to 5A01 in hex) is shown in both byte orders.&lt;/p&gt;&lt;pre&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;   &lt;/span&gt;&lt;b style="color: rgb(153, 51, 0);"&gt;BYTE ORDER FOR NUMBER 23,041 (5A01 in hex)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: rgb(153, 51, 0);"&gt;   Big Endian (BE)      Little Endian (LE)&lt;/b&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;   5A01                 015A&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;   &lt;/span&gt;&lt;b style="color: rgb(153, 51, 0);"&gt;CPU BYTE ORDER EXAMPLES&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;   &lt;/span&gt;&lt;b style="color: rgb(153, 51, 0);"&gt;Big Endian           Little Endian&lt;/b&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;   Motorola 680x0       x86 (Intel, AMD, etc.)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;   IBM mainframes       PDP-11, VAX&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;   &lt;/span&gt;&lt;b style="color: rgb(153, 51, 0);"&gt;Bi-Endian CPUs&lt;/b&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;   PowerPC&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;   Itanium&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5922256080951534731-2964971827475559561?l=livingfish.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://livingfish.blogspot.com/feeds/2964971827475559561/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5922256080951534731&amp;postID=2964971827475559561' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5922256080951534731/posts/default/2964971827475559561'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5922256080951534731/posts/default/2964971827475559561'/><link rel='alternate' type='text/html' href='http://livingfish.blogspot.com/2007/05/byte-order.html' title='Byte order'/><author><name>Zou</name><uri>http://www.blogger.com/profile/02110196571661635910</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11199745370131991659'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5922256080951534731.post-626481977574858542</id><published>2007-05-19T21:23:00.000+08:00</published><updated>2007-05-19T21:55:03.923+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Technical Memo'/><title type='text'>Input and display chinese characters in cygwin</title><content type='html'>&lt;span style="font-size:130%;"&gt;~\.inputrc:&lt;/span&gt;&lt;br /&gt;set meta-flag on&lt;br /&gt;set convert-meta off&lt;br /&gt;set output-meta on&lt;br /&gt;set input-meta on&lt;br /&gt;set completion-ignore-case on&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;~\.bashrc:&lt;/span&gt;&lt;br /&gt;alias ls='ls --show-control-chars --color=auto'&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5922256080951534731-626481977574858542?l=livingfish.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://livingfish.blogspot.com/feeds/626481977574858542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5922256080951534731&amp;postID=626481977574858542' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5922256080951534731/posts/default/626481977574858542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5922256080951534731/posts/default/626481977574858542'/><link rel='alternate' type='text/html' href='http://livingfish.blogspot.com/2007/05/input-and-display-chinese-characters-in.html' title='Input and display chinese characters in cygwin'/><author><name>Zou</name><uri>http://www.blogger.com/profile/02110196571661635910</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11199745370131991659'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5922256080951534731.post-3532350839244652116</id><published>2007-05-19T11:31:00.000+08:00</published><updated>2007-05-19T21:55:03.923+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Technical Memo'/><title type='text'>PLY - Polygon File Format</title><content type='html'>&lt;span style="font-family:arial;"&gt;from:&lt;a href="http://local.wasp.uwa.edu.au/%7Epbourke/dataformats/ply/"&gt;http://local.wasp.uwa.edu.au/~pbourke/dataformats/ply/&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;p&gt;  &lt;b&gt;Introduction&lt;/b&gt;  &lt;/p&gt;&lt;p align="justify"&gt; This document presents the PLY polygon file format, a format for storing graphical objects that are described as a collection of polygons.  Our goal is to provide a format that is simple and easy to implement but that is general enough to be useful for a wide range of models.  The file format has two sub-formats: an ASCII representation for easily getting started, and a binary version for compact storage and for rapid saving and loading.  We hope that this format will promote the exchange of graphical object between programs and also between groups of people. &lt;/p&gt;  &lt;b&gt;Overview&lt;/b&gt;  &lt;p align="justify"&gt; Anyone who has worked in the field of computer graphics for even a short  time knows about the bewildering array of storage formats for graphical  objects.  It seems as though every programmer creates a new file format for  nearly every new programming project.  The way out of this morass of  formats is to create a single file format that is both flexible enough to  anticipate future needs and that is simple enough so as not to drive away  potential users.  Once such a format is defined, a suite of utilities (both  procedures and entire programs) can be written that are centered around this  format.  Each new utility that is added to the suite can leverage off the power  of the others. &lt;/p&gt;  &lt;p align="justify"&gt; The PLY format describes an object as a collection of vertices, faces and other elements, along with properties such as color and normal direction that can be attached to these elements.  A PLY file contains the description of exactly one object.  Sources of such objects include: hand-digitized objects, polygon objects from modeling programs, range data, triangles from marching cubes (isosurfaces from volume data), terrain data, radiosity models. Properties that might be stored with the object include: color, surface normals, texture coordinates, transparency, range data confidence, and different properties for the front and back of a polygon. &lt;/p&gt;  &lt;p align="justify"&gt; The PLY format is NOT intended to be a general scene description  language, a shading language or a catch-all modeling format.  This means  that it includes no transformation matrices, object instantiation, modeling  hierarchies, or object sub-parts.  It does not include parametric patches,  quadric surfaces, constructive solid geometry operations, triangle strips,  polygons with holes, or texture descriptions (not to be confused with texture  coordinates, which it does support!). &lt;/p&gt;  &lt;p align="justify"&gt; A typical PLY object definition is simply a list of (x,y,z) triples for vertices and a list of faces that are described by indices into the list of vertices.  Most PLY files include this core information.  Vertices and faces are two examples of "elements", and the bulk of a PLY file is its list of elements.  Each element in a given file has a fixed number of "properties" that are specified for each element.  The typical information in a PLY file contains just two elements, the (x,y,z) triples for vertices and the vertex indices for each face.  Applications can create new properties that are attached to elements of an object.  For example, the properties red, green and blue are commonly associated with vertex elements.  New properties are added in such a way that old programs do not break when these new properties are encountered. Properties that are not understood by a program can either be carried along uninterpreted or can be discarded.  In addition, one can create a new element type and define the properties associated with this element.  Examples of new elements are edges, cells (lists of pointers to faces) and materials (ambient, diffuse and specular colors and coefficients).  New elements can also be carried along or discarded by programs that do not understand them. &lt;/p&gt;  &lt;b&gt;File Structure&lt;/b&gt;  &lt;p align="justify"&gt; This is the structure of a typical PLY file: &lt;/p&gt; &lt;pre&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;  Header&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;  Vertex List&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;  Face List&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;  (lists of other elements)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;  &lt;p align="justify"&gt; The header is a series of carriage-return terminated lines of text that describe the remainder of the file.  The header includes a description of each element type, including the element's name (e.g. "edge"), how many such elements are in the object, and a list of the various properties associated with the element.  The header also tells whether the file is binary or ASCII. Following the header is one list of elements for each element type, presented in the order described in the header. &lt;/p&gt;  &lt;p align="justify"&gt; Below is the complete ASCII description for a cube.  The header of a binary version of the same object would differ only in substituting the word "binary_little_endian" or "binary_big_endian" for the word "ascii".  The comments in brackets are NOT part of the file, they are annotations to this example.  Comments in files are ordinary keyword-identified lines that begin with the word "comment". &lt;/p&gt;  &lt;pre&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;ply&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;format ascii 1.0           { ascii/binary, format version number }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;comment made by Greg Turk  { comments keyword specified, like all lines }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;comment this file is a cube&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;element vertex 8           { define "vertex" element, 8 of them in file }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;property float x           { vertex contains float "x" coordinate }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;property float y           { y coordinate is also a vertex property }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;property float z           { z coordinate, too }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;element face 6             { there are 6 "face" elements in the file }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;property list uchar int vertex_index { "vertex_indices" is a list of ints }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;end_header                 { delimits the end of the header }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;0 0 0                      { start of vertex list }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;0 0 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;0 1 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;0 1 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;1 0 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;1 0 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;1 1 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;1 1 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;4 0 1 2 3                  { start of face list }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;4 7 6 5 4&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;4 0 4 5 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;4 1 5 6 2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;4 2 6 7 3&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;4 3 7 4 0&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;  &lt;p align="justify"&gt; This example demonstrates the basic components of the header.  Each part  of the header is a carriage-return terminated ASCII string that begins with a  keyword.  Even the start and end of the header ("ply&lt;cr&gt;" and  "end_header&lt;cr&gt;") are in this form.  The characters "ply&lt;cr&gt;" must be the  first four characters of the file, since they serve as the file's magic  number.   &lt;/cr&gt;&lt;/cr&gt;&lt;/cr&gt;&lt;/p&gt;  &lt;p align="justify"&gt; Following the start of the header is the keyword "format" and a specification  of either ASCII or binary format, followed by a version number.  Next is the  description of each of the elements in the polygon file, and within each  element description is the specification of the properties.  Then generic  element description has this form: &lt;/p&gt;  &lt;pre&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;element &lt;/span&gt;&lt;element-name&gt;&lt;span style="color: rgb(153, 51, 0);"&gt; &lt;/span&gt;&lt;number-in-file&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;property &lt;/span&gt;&lt;data-type&gt;&lt;span style="color: rgb(153, 51, 0);"&gt; &lt;/span&gt;&lt;property-name-1&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;property &lt;/span&gt;&lt;data-type&gt;&lt;span style="color: rgb(153, 51, 0);"&gt; &lt;/span&gt;&lt;property-name-2&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;property &lt;/span&gt;&lt;data-type&gt;&lt;span style="color: rgb(153, 51, 0);"&gt; &lt;/span&gt;&lt;property-name-3&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;/property-name-3&gt;&lt;/data-type&gt;&lt;/property-name-2&gt;&lt;/data-type&gt;&lt;/property-name-1&gt;&lt;/data-type&gt;&lt;/number-in-file&gt;&lt;/element-name&gt;&lt;/pre&gt;  &lt;p align="justify"&gt; The properties listed after an "element" line define both the data type of the  property and also the order in which the property appears for each element.   There are two kinds of data types a property may have: scalar and list.  Here  is a list of the scalar data types a property may have: &lt;/p&gt;  &lt;pre&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;name        type        number of bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;---------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;char       character                 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;uchar      unsigned character        1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;short      short integer             2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;ushort     unsigned short integer    2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;int        integer                   4&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;uint       unsigned integer          4&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;float      single-precision float    4&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;double     double-precision float    8&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;  &lt;p align="justify"&gt; These byte counts are important and must not vary across implementations in order for these files to be portable.  There is a special form of property definitions that uses the list data type: &lt;/p&gt;  &lt;pre&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;  property list &lt;/span&gt;&lt;numerical-type&gt;&lt;span style="color: rgb(153, 51, 0);"&gt; &lt;/span&gt;&lt;numerical-type&gt;&lt;span style="color: rgb(153, 51, 0);"&gt; &lt;/span&gt;&lt;property-name&gt; &lt;/property-name&gt;&lt;/numerical-type&gt;&lt;/numerical-type&gt;&lt;/pre&gt;  &lt;p align="justify"&gt; An example of this is from the cube file above: &lt;/p&gt;  &lt;pre&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;  property list uchar int vertex_index&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;  &lt;p align="justify"&gt; This means that the property "vertex_index"  contains first an unsigned char telling how many indices the property contains, followed by a list containing that many integers.  Each integer in this variable-length list is an index to a vertex. &lt;/p&gt;  &lt;b&gt;Another Example&lt;/b&gt;  &lt;p align="justify"&gt; Here is another cube definition: &lt;/p&gt;  &lt;pre&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;ply&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;format ascii 1.0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;comment author: Greg Turk&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;comment object: another cube&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;element vertex 8&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;property float x&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;property float y&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;property float z&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;property red uchar                    { start of vertex color }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;property green uchar&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;property blue uchar&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;element face 7&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;property list uchar int vertex_index  { number of vertices for each face }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;element edge 5                        { five edges in object }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;property int vertex1                  { index to first vertex of edge }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;property int vertex2                  { index to second vertex }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;property uchar red                    { start of edge color }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;property uchar green&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;property uchar blue&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;end_header&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;0 0 0 255 0 0                         { start of vertex list }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;0 0 1 255 0 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;0 1 1 255 0 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;0 1 0 255 0 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;1 0 0 0 0 255&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;1 0 1 0 0 255&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;1 1 1 0 0 255&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;1 1 0 0 0 255&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;3 0 1 2                           { start of face list, begin with a triangle }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;3 0 2 3                           { another triangle }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;4 7 6 5 4                         { now some quadrilaterals }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;4 0 4 5 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;4 1 5 6 2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;4 2 6 7 3&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;4 3 7 4 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;0 1 255 255 255                   { start of edge list, begin with white edge }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;1 2 255 255 255&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;2 3 255 255 255&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;3 0 255 255 255&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;2 0 0 0 0                         { end with a single black line }&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;  &lt;p align="justify"&gt; This file specifies a red, green and blue value for each vertex.  To illustrate the variable-length nature of vertex_index, the first two faces of the object are triangles instead of a single square.  This means that the number of faces in the object is 7.  This object also contains a list of edges.  Each edge contains two pointers to the vertices that delinate the edge.  Each edge also has a color.  The five edges defined above were specified so as to highlight the two triangles in the file.  The first four edges are white, and they surround the two triangles.  The final edge is black, and it is the edge that separates the triangles. &lt;/p&gt;  &lt;b&gt;User-Defined Elements&lt;/b&gt;  &lt;p align="justify"&gt; The examples above showed the use of three elements: vertices, faces and  edges.  The PLY format allows users to define their own elements as well.   The format for defining a new element is exactly the same as for vertices,  faces and edges.  Here is the section of a header that defines a material  property: &lt;/p&gt;  &lt;pre&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;element material 6&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;property ambient_red uchar               { ambient color }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;property ambient_green uchar&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;property ambient_blue uchar&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;property ambient_coeff float&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;property diffuse_red uchar               { diffuse color }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;property diffuse_green uchar&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;property diffuse_blue uchar&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;property diffuse_coeff float&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;property specular_red uchar              { specular color }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;property specular_green uchar&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;property specular_blue uchar&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;property specular_coeff float&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;property specular_power float            { Phong power }&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;  &lt;p align="justify"&gt; These lines would appear in the header directly after the specification of vertices, faces and edges.  If we want each vertex to have a material specification, we might add this line to the end of the properties for a vertex: &lt;/p&gt;  &lt;pre&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;  property material_index int&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;  &lt;p align="justify"&gt; This integer is now an index into the list of materials contained in the file. It may be tempting for the author of a new application to invent several new elements to be stored in PLY files.  This practice should be kept to a minimum.  Much better is to try adapting common elements (vertices, faces, edges, materials) to new uses, so that other programs that understand these elements might be useful in manipulating these adapted elements.  Take, for example, an application that describes molecules as collections of spheres and cylinders.  It would be tempting define sphere and cylinder elements for the PLY files containing the molecules.  If, however, we use the vertex and edge elements for this purpose (adding the radius property to each), we can make use of programs that manipulate and display vertices and edges.  Clearly one should not create special elements for triangles and quadrilaterals, but instead use the face element.  What if a program does not know the adjacency between faces and vertices (so-called unshared vertices)?  This is where each triangle (say) is purely a collection of three positions in space, with no notion whether some triangles have common vertices.  This is a fairly common situation.  Assuming there are N triangles in a given object, then 3N vertices should be written to the file, followed by N faces that simply connect up these vertices.  We anticipate that a utility will be written that converts between unshared and shared vertex files.&lt;/p&gt;---------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;A toolkit for reading and writing ply files can be found at&lt;br /&gt;&lt;a href="http://www.cs.princeton.edu/%7Ediego/professional/rply/"&gt;http://www.cs.princeton.edu/~diego/professional/rply/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5922256080951534731-3532350839244652116?l=livingfish.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://livingfish.blogspot.com/feeds/3532350839244652116/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5922256080951534731&amp;postID=3532350839244652116' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5922256080951534731/posts/default/3532350839244652116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5922256080951534731/posts/default/3532350839244652116'/><link rel='alternate' type='text/html' href='http://livingfish.blogspot.com/2007/05/ply-polygon-file-format.html' title='PLY - Polygon File Format'/><author><name>Zou</name><uri>http://www.blogger.com/profile/02110196571661635910</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11199745370131991659'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5922256080951534731.post-485305217132083077</id><published>2007-05-18T00:12:00.000+08:00</published><updated>2007-05-19T21:55:55.615+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Resources'/><title type='text'>some links</title><content type='html'>A collection of links to free mathematic ebooks&lt;br /&gt;&lt;a href="http://us.geocities.com/alex_stef/mylist.html"&gt;http://us.geocities.com/alex_stef/mylist.html&lt;/a&gt;&lt;br /&gt;A collection of resources of computer vision&lt;br /&gt;&lt;a href="http://homepages.inf.ed.ac.uk/rbf/CVonline/geom.htm"&gt;http://homepages.inf.ed.ac.uk/rbf/CVonline/geom.htm&lt;/a&gt;&lt;br /&gt;A interesting personal website&lt;br /&gt;&lt;a href="http://www.tangentspace.net/"&gt;http://www.tangentspace.net/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5922256080951534731-485305217132083077?l=livingfish.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://livingfish.blogspot.com/feeds/485305217132083077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5922256080951534731&amp;postID=485305217132083077' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5922256080951534731/posts/default/485305217132083077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5922256080951534731/posts/default/485305217132083077'/><link rel='alternate' type='text/html' href='http://livingfish.blogspot.com/2007/05/some-links.html' title='some links'/><author><name>Zou</name><uri>http://www.blogger.com/profile/02110196571661635910</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11199745370131991659'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5922256080951534731.post-2141775699242653964</id><published>2007-05-17T23:25:00.000+08:00</published><updated>2007-05-19T21:55:03.923+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Technical Memo'/><title type='text'>vtk link memo</title><content type='html'>The link option of additional dependencies in vs2005.net&lt;br /&gt;&lt;br /&gt;$(NOINHERIT) kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib  vtkRendering.lib vtkzlib.lib vtkCommon.lib vtkFiltering.lib vtkImaging.lib vtkGraphics.lib vtkGenericFiltering.lib vtkIO.lib vtkftgl.lib vtkexoIIc.lib vtkNetCDF.lib vtkDICOMParser.lib vtkfreetype.lib vtkexpat.lib vtkVolumeRendering.lib vtkpng.lib vtkjpeg.lib vtktiff.lib vtkHybrid.lib vtkWidgets.lib vtksys.lib opengl32.lib&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5922256080951534731-2141775699242653964?l=livingfish.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://livingfish.blogspot.com/feeds/2141775699242653964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5922256080951534731&amp;postID=2141775699242653964' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5922256080951534731/posts/default/2141775699242653964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5922256080951534731/posts/default/2141775699242653964'/><link rel='alternate' type='text/html' href='http://livingfish.blogspot.com/2007/05/vtk-link-memo.html' title='vtk link memo'/><author><name>Zou</name><uri>http://www.blogger.com/profile/02110196571661635910</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11199745370131991659'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>