updated 2009-04-29.
This is just something I threw together that I thought you might find useful. Comments?
This page is about the process of creating graphics to display on a computer screen.
related pages:
The comp.graphics.* series of newsgroups...
Computer graphics tools intended to be used by graphic artists to create art.
Date: Tue, 21 Apr 1998 15:18:47 -0400 From: Eric Haines Reply-To: Organization: Autodesk, Inc. MIME-Version: 1.0 To: Subject: Ray Tracing News archive's new location Hi, You're receiving this note because you've got a pointer on one (or more) of your web pages that points to an old archive of The Ray Tracing News: http://www.povray.org/rtn - old, missing some issues This newsletter now has an official site which I maintain and update - other mirror sites are a year out of date or more. I would appreciate it if you changed your link to this new site (which has actually been around for a number of years - it's stable): http://www.acm.org/tog/resources/RTNews/html/ Thanks! Eric Haines http://www.acm.org/tog/editors/erich/ p.s. another link you may find of interest: http://www.acm.org/tog/Software.html - please do let me know if you've found any other good (free, with source) graphics software out there.
After a little experimentation, here's how I scanned photos last time.
photo scanning
There's probably a better way ...
The 2 adjustment dialogs should already be open; if not, open them with Tools | Exposure Adjustment and Tools | Color Adjustment.
(these settings should already be enabled: Output type: Best Color Photograph (16 Mcolors). Output size: original size. Resolution: automatic (I think this is 200 dpi). Sharpen detail in photos (?). Use Maximum bit depth. )
I chose the numbers in the previous step to make neutral gray look neutral gray.
Since I'm scanning a black and white photo, in theory I should be able to pick *any* pixel with the eyedropper and see that the R,G,B values are all equal to each other.
When I keep the scanner default of x=0, y=0, the Red value is always larger (in the Paint Shop Pro histogram, I see peaks in the red shifted to the right (brighter) than the green and blue peaks.)
You can tell when this is adjusted correctly by going to ``Tools | Exposure Adjustment'' and picking pixels with the eyedropper. The R,G,B values of *neutral* pixels (in particular, light and medium gray) in the photograph, (say, a white fencepost in the shade, or teeth...) should be very close to each other -- 127, 122, 131 are close enough.
(it's best to do the previous 2 adjustments here, where the scanner does them with full 36 bit accuracy, rather than trying to do it later in 24 bit mode where we've already lost that information).
Image | Resize | Percentage | 50%to try to get image roughly 400 pixels wide (web quality -- see #photo_size ).
See
for more scan tips.
[FIXME]
Specialized tools aimed at taking the art (generally created by one of the above Standard art tools ) and making it more suitable for the Web: reducing its bandwidth without significantly changing its appearance, making buttons out of it, etc.
See html.html#design_advice for more general layout design advice.
[This is just a local backup copy; the live version of the "photo size" section has moved to http://visual.wiki.taoriver.net/moin.cgi/PhotoSize ]
Summary:
Web sizes are always in terms of pixels. People recommend many different sizes.
Thumbnails:
64x64 75 wide 80x80 80x80 100x150 128x128 128 wide 150x115 150 wide 192x192 192x128 260x175
"Try not to exceed 100 KB per web page for the total of all images"
Full-size web photos:
"under 420 pixels wide" 560 wide 600x400 600x400 750x500 760 wide
"twice the width of the finest significant line in a document"
"30 to 100 KB per image"
"make the smallest lowercase letter echo (e
) 8 pixels high"
Full-size printed photos:
medium quality: approximately 150 pixels per inch of resolution
professional quality: at least 300 pixels per inch of resolution
Thumbnail Size (TN) - 80 x 80 pixels http://www.sellproducts.globalsources.com/HELP/webhelp/book12/12d1.htm
100 x 150 thumbnails http://mejac.palo-alto.ca.us/leica-users/v19/msg10204.html
lists common sizes: 64, 80, 96, 112, 128, ... 192 http://www.jpegwizard.com/thumbn/thumbn.asp Looks like a nifty utility.
--Kodak Photo CD images are stored at five different resolutions, from Base/16 images at 128 x 192 pixels (for thumbnail views), to 16 Base full-resolution images at 2,048 x 3,072 pixels (Table 1). The Pro Photo CD disk adds a sixth level of resolution (64 Base) that provides high-resolution images (4,096 x 6,144 pixels).
...
... A stroke width is the thickness of the finest significant line in a document, such as the thinnest line used to render a handwritten letter or the thickness of a telephone wire in a photograph. ...
... We would predict excellent rendering of that stroke, because more than two pixels would span the stroke width. ...
...
Using Kodak Photo CD Technology for Preservation and Access A Guide for Librarians, Archivists, and Curatorsby Anne R. Kenney and Oya Y. Rieger http://www.library.cornell.edu/preservation/kodak/kodak-htm.htm For printed textual material, they recommend measuring the height of the smallest lowercase letter echo (
e) in pixels:
a minimum of eight pixels are necessary to represent detail in a consistently acceptable or just-legible manner. Twice that many pixels should provide excellent fidelity to the original,[FIXME: move to computer graphics and just link from html.html ?]
-- "Digital Darkroom Imaging and Printing Tech Tips" by Steve Hoffmann http://www.sphoto.com/techinfo/wdtech.html#ThumbnailI've decided to use 'thumbnails' that are a bit larger than most people use. ... I use 260X175 pixel images for most of my web gallery thumbnails. On some images that look good in a slightly smaller format I'm using 150X115 pixel sized thumbnails. 260X175 pixel images in vertical format will just fit in a browser window at 640X480 screen resolution. ...
The larger versions of each of my web images that are available to download are about 750X500 pixels for the 35mm and 6X9cm images
The full sized images I have left at about 400X600 (roughly) so that folks like me on a small 800X600 resolution screen (laptop) can view the entire image without having to scroll around it. -- Michael E. Bérubé http://mejac.palo-alto.ca.us/leica-users/v19/msg10191.html
scanning & preparing color photos for web display (& printing):
featuring "Step-by-Step" instructions
article by David Moninger 1997
http://www.islandtime.com/re-intro/re-photo.htm
(DAV: the advice on GIF vs. JPEG is obsolete ... The advice to save a copy of the original high-resolution scan is good, but DAV believes PNG is the best format for that).If you're going to the Web ... you should strive to keep the final size under 420 pixels wide to allow for browser borders, etc. This will insure that the viewer will not have to use the scroll bars to see all the picture.
Consider 240 - 250 pixels to be half a screen wide. Thumbnail pictures are usually 75 to 150 pixels wide.
``Say No to 72 dpi'' by Wayne Fulton 2002 http://www.scantips.com/no72dpi.html | http://www.scantips.com/ [FIXME: read]
Noel's Digital Image CD Primer http://home.att.net/~ncarboni/ImageCDR.html ``thumbnails ... about 128 pixels wide'' [FIXME: read]
``Hi there. Evil Emperor Zurg here to talk about digital cameras.'' http://wdwig.com/digital.htm ``The only piece of equipment that will always improve your images is a camera support! Zurg, your excellency, work with me here, vaporize them if they won't use one!'' ... ``Zurg needed more shiny new toys.'' [FIXME: read]
"Web Photo Gallery Creation Tools" http://graphicssoft.about.com/cs/webgallery/
-- http://www.acdsystems.com/English/Community/ColumnsArticles/PhotoTips/photo-2002-06-08.htmTo figure out what size prints you can make from today's digital cameras, you have to first break down the pixel measurements. For example, a 4.1-megapixel camera works out to a picture with dimensions of 1704 x 2272 pixels at its highest resolution; ...
For a reasonable quality print you need approximately 150 pixels per inch of resolution (we'll call this medium quality), while for professional quality prints you need at least double that.
[This is just a local backup copy; the live version of the "fonts and typography" section has moved to http://visual.wiki.taoriver.net/moin.cgi/FontsAndTypography ]
tools for making letters shaped however you want; ideas for different letter styles, legibility, etc; fonts other have created using those tools and ideas.
The latest font news is at http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&group=comp.fonts and http://fonts.deviantart.com/ and http://en.wikipedia.org/wiki/Category:Digital_typography .
see also ASCII_Art fonts.
see also linux.html#tex for info on TeX, the standard way of typesetting mathematical equations.
see also si_metric_faq.html#iso8859 for some information on the default character set for web pages.
Some of these font try to make English text even easier to read, by making the letters more distinct. Others try to ``look cool'' or ``look pretty'' even if it makes English text slightly more difficult to read. See idea_space.html#alphabet_aesthetics for fonts that go to extremes to look cool, even if it makes English text almost impossible to read.
The Norwegian font scene http://cgm.cs.mcgill.ca/~luc/norway.html lists many fonts, mostly foreign character sets (Greek, runes, futhark, Arabic, Cyrillic ...)
The Association for Font Information Interchange http://www.unicode.org/afii/ ???
The comp.fonts FAQ, compiled by Norman Walsh http://www.nwalsh.com/comp.fonts/FAQ/index.html (1996-08-14)
The comp.fonts FAQ, compiled by Norman Walsh http://www.fontlab.com/html/faq.html (1996-08-14)
[this is an old archive -- moved to http://visual.wiki.taoriver.net/moin.cgi/PostScriptLinks ] PostScript: it's not just a file format. Don Lancaster suggests using it as a full-fledged programming language in its own right.
http://www.cappella.demon.co.uk/ points to a cute little PostScript barcode utility and documentation.
Thinking in PostScript book by Glenn Reid http://rightbrain.com/pages/book-download.shtml online book [FIXME: to read] [Is this related to Thinking in C++ by Bruce Eckel ?]
http://cuisg11.unige.ch/OSG/people/jvitek/Compilers/Year93/msg00128.html PDB -- ANSI-C to PostScript translator/compiler apparently by Arthur van Hoff (Jan 1993)
see also Fractal Image compression
(FIXME: Consider moving to http://en.wikipedia.org/wiki/Fractal )
students can enjoy the art of mathematics as they master the science of mathematics. This focus can help one address a wide variety of topics in the K-12 curriculum including scientific notation, coordinate systems and graphing, number systems, convergence, divergence, and self-similarity.
Why Fractals? Many people are immediately drawn to the bizarrely beautiful images known as fractals. Extending beyond the typical perception of mathematics as a body of sterile formulas, fractal geometry mixes art with mathematics to demonstrate that equations are more than just a collection of numbers. With fractal geometry we can visually model much of what we witness in nature, the most recognized being coastlines and mountains. Fractals are used to model soil erosion and to analyze seismic patterns as well. But beyond potential applications for describing complex natural patterns, with their visual beauty fractals can help alter students' beliefs that mathematics is dry and inaccessible and may help to motivate mathematical discovery in the classroom.
What is the ``IBM fractal project'' ? [FIXME: look at these illustrations]One of the most inspiring works however seems to have been Poincaré's Vorlesungen uber die Theorie der Automorphen Funktoren published in 1897 which contained many influential illustrations. His drawings of hyperbolic tesselations were embellished by M.C. Escher and made into a form of art which itself could be argued to be closely related to fractals.
From: (Alan Wolf) Newsgroups: sci.nonlinear Subject: To Mac users who had problems with the Lyapunov .zip file on my site... Date: Wed, 08 Nov 1995 10:20:40 GMT ... The Lyapunov code on my site is in the form of a self-decompressing zip file. A few Mac users had trouble with that, so I added a conventional .zip file that some Mac decompressors can handle more easily. Alan Wolf
Subject: Re: fractal geometry From: Rick Kessler <rkessler at pacificrim.net> Date: 20 Jan 1996 01:22:59 GMT
check out (gopher://archives.math.utk.edu) - several programs on fractals for both dos/windows and macs. Hope you find what you need.
Rick
graphics produced under severe limitations
David Cary is fascinated by ASCII Art. (consider moving to http://en.wikipedia.org/wiki/ASCII_art or http://visual.wiki.taoriver.net/moin.cgi/AsciiArt )
-- /"\ m i k e b u r r e l l \ / ASCII RIBBON CAMPAIGN X AGAINST HTML MAIL http://mikpos.dyndns.org / \
Typing Pictures http://mathforum.org/dr.math/faq/faq.ascii.pictures.html ASCII art, used for geometry. (``do not use tabs - use only the space bar and a monospace font.'')
_ _ _ _ _ ___ _ ___ ___ < >| || || || | _| _|< >|o || | |_||_||_||____||___| |_||___||_||_|a very small ASCII Art font (3 rows), perhaps by Illusion/Phoenix Graphician, Phoenix Realtime Productions Linkoping Institute of Technology
_ _ _ _ _ _ | (_) | _____ | |_| |__ (_)___ | | | |/ / _ \ | __| '_ \| / __| | | | < __/ | |_| | | | \__ \ |_|_|_|\_\___| \__|_| |_|_|___/ __ .__ .__ ___________ _/ |_| |__ |__| ______ / _ \_ __ \ \ __\ | \| |/ ___/ ( <_> ) | \/ | | | Y \ |\___ \ \____/|__| |__| |___| /__/____ > \/ \/FIGlet is available for Unix (with source code), DOS, Macintosh, and many other systems. Now handles non-ASCII character sets and right-to-left printing (e.g., Hebrew).
John Barger thought these fonts were most useful:
Subject: INFO-FONTS: Hurrah for Figlet From: jorn@mcs.com (Jorn Barger) Date: 15 Feb 1996 14:23:46 -0600 ... So I downloaded all (?) the new fonts and sorted out these that I think will be most useful: _|_ _ |) _ o._ _|_ _|_ |- ._ _ o._ o '_/_ /'_ | \/\/(_)| (_)|| | | _\||()|`|_ | | ||| || / /(/(/( ____ __ __ _| | | | | (_-< ' \/ _` | | | (_-< ` \ (_-< \ _` | _` | _ \ \ \ / /__/_|_|_\__,_|_|_| ___/_|_|_|___/_| _|\__,_|\__,_|\___/\_/\_/ _|_|_ _ _ _ _ _ . _ _|_ _|_ _ _ . _ |_ |_ , | | || (/_(/_|_)(_)|| | | _)|_| (_||(_)| )|_ _. _ ._ -+- _ __ __ _. | _/ (_.(_)[ ) | (/,_) _) (_] +-+-+-+-+-+-+-+ ^ ^ ^ ^ ^ ^ ^ .-. .-..-..-..-..-..-..-. |d|i|g|i|t|a|l| /p\ /y\ /r\ /a\ /m\ /i\ /d\ | |__ | || .` || || | > < +-+-+-+-+-+-+-+<___><___><___><___><___><___><___>`----'`-'`-'`-'`----''-'`-` ____ _ _ ___ ____ ____ _ _ ____ ___ _ _ _ _ _ _ _ _ _ _ _ | \_/ |__] |___ |__/ |\/| |___ | \ | | | |\/| /_//_'/_//_//_'/ |___ | |__] |___ | \ | | |___ |__/ | |__| | | / / / __ __ | | ___ __ _ ___ / /__ ____ / /_ __| __ \ _` | _` | _ \\ \ \ / (_-</ ' \(_-</ / _ `/ _ \/ __/ \__ \ | | | ( | ( | ( |\ \ \ / /___/_/_/_/___/_/\_,_/_//_/\__/ ____/_| |_|\__,_|\__,_|\___/ \_/\_/ /~\ | ___ ___ ___ __ ___ __ __ ___ -|-/~\| ||/~\~|~/~\|~~\(~ / __)( _)( ,) ( )( _) / _) ( ) ( ,\ | \_/ \_/|| | \_/|__/_) \__ \ ) _) ) \ )( ) _)( (_ /__\ ) _/ | (___/(___)(_)\_)(__)(_) \__)(_)(_)(_) , , _ ,_ o _|_ / | / \_/|/|/| / \_/ / | | |/\_| ___ ___ ___| \/ | | |_/ \/ \__/ |/|/|_/ |_/ | )|___)| | )| ) (| |/\/ |__ | | |__/ ____ __ __ __ ____ _ _ ____ __ ____ ( _ \( )( )( ) ( _ \( )_( )( ___) /__\ ( _ \ ) _ < )(__)( )(__ ) _ < ) _ ( )__) /(__)\ )(_) ) (____/(______)(____)(____/(_) (_)(____)(__)(__)(____/ bulbhead _ _ _ _ _ _ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ / \ / \ / \ / \ / \ / \ ||s |||m |||k |||e |||y |||b |||o |||a |||r |||d || ( b | u | b | b | l | e )||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|| \_/ \_/ \_/ \_/ \_/ \_/ |/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\| _ _ _ _ ___| |_ __ _ _ __ __| | __ _ _ __ __| | __ _ ___ __ _ __ _(_) ___ __ _ / __| __/ _` | '_ \ / _` |/ _` | '__/ _` | |__` |/ _ \__` |__` | |/ _ ' _` | \__ \ || (_| | | | | (_| | (_| | | | (_| | | | (_) | | | | | | | | | | | |___/\__\__,_|_| |_|\__,_|\__,_|_| \__,_| |_|\___/ |_| |_|_|_| |_| |_| __ __ _ _ _____/ /___ _____ / /_ ___ ___ ___| |_ ___ ___ ___| |___ ___ / ___/ / __ `/ __ \/ __/ | _| -_| _| _| .'| | . | | -_|_ -| (__ ) / /_/ / / / / /_ |_| |___|___|_| |__,|_|_|_ |_|___|___| /____/_/\__,_/_/ /_/\__/ |___| ___ __ _ _ __ ___ __ __ / _ \ / _` | '__/ _ \ .----.| |--.--.--.-----.| |--.--.--. | (_) | (_| | | | __/ | __|| | | | || <| | | \___/ \__, |_| \___| |____||__|__|_____|__|__||__|__|___ | |___/ |_____| _ _| | _ _ ___ ___ ___ ___ ___ _ _ / . || '_>| . \/ ._>| . \| . \/ ._>| '_> \___||_| | _/\___.| _/| _/\___.|_| |_| |_| |_| _| _| _| _|_|_| _| _|_| _|_|_| _| _| _| _| _| _| _| _| _|_| _| _| _| _| _| _| _| _| _|_|_| _| _|_| _|_|_| _| _| eeee eeeee eeeeeee eeeee e e eeeee eeee eeeee 8 8 8 88 8 8 8 8 8 8 8 8 8 8 8 8e 8 8 8e 8 8 8eee8 8e 8 8e 8eee 8eee8e 88 8 8 88 8 8 88 88 8 88 88 88 8 88e8 8eee8 88 8 8 88 88ee8 88 88ee 88 8 _________ _ _ _ _ _ _______________________________ / ,'_)( ) (_) ( ) ( ) __ ___/__ __ \ _ \ _ \ __ / ___ | | | | _ __ ___ | |_ ___ | | _(__ )__ /_/ / __/ __/ /_/ / ( o_)( _)( _)( )( _)( o )( o \( o )( _) /____/ _ .___/\___/\___/\__,_/ \( /_\ /_\ /_\/_\ \_/ /___/ \_/ /_\ /_/ _____ _____.__ __ .__ _ ________________ _/ ____\/ ____\__|/ |_|__| ___| |_ ___ ____ / ___\_ __ \__ \\ __\\ __\| \ __\ | /___) _)/ _ \| _ \ / /_/ > | \// __ \| | | | | || | | | |___ | |_| |_| | | | | \___ /|__| (____ /__| |__| |__||__| |__| (___/ \___)___/| ||_/ /_____/ \/ |_| _ _ o | | | | , __ ,_ _ _|_ ____ ___ _ _ ____ __| |_____ __| | / \_/ / | | |/ \_| / ___) _ \| | | | _ \ / _ | ___ |/ _ | \/ \___/ |_/|_/|__/ |_/ | | | |_| | |_| | | | ( (_| | ____( (_| | /| |_| \___/|____/|_| |_|\____|_____)\____| \| . . . . ,-. |- ,-. ,-,-. ,-. ,-. |- ,-. | | ,-. `-. | ,-| | | | | | ,-| | |-' | | | | `-' `' `-^ ' ' ' |-' `-^ `' `-' `' `' `-' | ' stampatello _ _ | | (_) o o o | |__ _ __ _ | o | / | | '_ \| |/ _` | -o- o-o OO o-o o-o o-o -o- o-o o o | |_) | | (_| | | | | | | \ |-' | | | | | | |_.__/|_|\__, | o | o o o o o-o o o o-o o--O __/ | | |___/ o--o ___ ___ /'___)/'___) .--. _ _ _ _ | (__ | (__ _ _ : .-' ( '_`\ ( ) ( )| ,__)| ,__)( ) ( ) : `;.-..-..---. .---. .-..-. | (_) )| (_) || | | | | (_) | : : : :; :`-'_.'`-'_.': :; : | ,__/'`\___/'(_) (_) `\__, | :_; `.__.'`.___;`.___;`._. ; | | ( )_| | .-. : (_) `\___/' `._.' o o o O O O , ,, O O o _ || || ' o o O / \\ /'\\ =||= ||/\\ \\ _-_ .oOo. .oOo. OoOo. OoOo. o .oOo. .oOo || || || || || || || || || O o OooO' O o O o O OooO' `Ooo. || || || || || || || || || o O O o O o O o O O \\_-| \\,/ \\, \\ |/ \\ \\,/ oOoO' `OoO' `OoO' `OoO' Oo `OoO' `OoO' / \ _/ O '----` o' @@@@@@@ @@@@@@ @@@ @@@@@@ @@@@@@ @@@ @@@ @@@@@@@@ @@@@@@@@ @@@ @@@@@@@ @@@@@@@@ @@@@ @@@ @@! @@@ @@! @@@ @@! !@@ @@! @@@ @@!@!@@@ !@! @!@ !@! @!@ !@! !@! !@! @!@ !@!!@!@! @!@@!@! @!@ !@! !!@ !!@@!! @!@ !@! @!@ !!@! !!@!!! !@! !!! !!! !!@!!! !@! !!! !@! !!! !!: !!: !!! !!: !:! !!: !!! !!: !!! :!: :!: !:! :!: !:! :!: !:! :!: !:! :: ::::: :: :: :::: :: ::::: :: :: :: : : : : : :: : : : : : :: : poison oooo d8b .ooooo. ooo. .oo. .oo. .oooo. ooo. .oo. `888""8P d88' `88b `888P"Y88bP"Y88b `P )88b `888P"Y88b 888 888 888 888 888 888 .oP"888 888 888 888 888 888 888 888 888 d8( 888 888 888 d888b `Y8bod8P' o888o o888o o888o `Y888""8o o888o o888o ::: === :::=== :::==== :::===== ::: :::==== :::===== ::: === ::: ::: === ::: ::: ::: === ::: === === ===== ======== ====== === ======== === ===== === === === === === === === === === === === ====== ====== === === === ======== === === ======= usaflag _______.___________. ___ .______ ____ __ ____ / | | / \ | _ \ \ \ / \ / / | (----`---| |----` / ^ \ | |_) | \ \/ \/ / \ \ | | / /_\ \ | / \ / .----) | | | / _____ \ | |\ \----. \ /\ / |_______/ |__| /__/ \__\ | _| `._____| \__/ \__/ starwars 88 "" 88 88 8b,dPPYba, 88 8b d8 ,adPPYba, 8b,dPPYba, ,adPPYba, 88 88 88P' `"8a 88 `8b d8' a8P_____88 88P' "Y8 I8[ "" 88 88 88 88 88 `8b d8' 8PP""""""" 88 `"Y8ba, "8a, ,a88 88 88 88 `8b,d8' "8b, ,aa 88 aa ]8I `"YbbdP'Y8 88 88 88 "8" `"Ybbd8"' 88 `"YbbdP"' ######## ### ## ## ## ## ######## ######## ####### ## ## ## ## ### ## ### ## ## ## ## ## ## ## ## ## ## #### ## #### ## ## ## ## ## ######## ## ## ## ## ## ## ## ## ###### ######## ####### ## ## ######### ## #### ## #### ## ## ## ## ## ## ## ## ## ### ## ### ## ## ## ## ## ######## ## ## ## ## ## ## ######## ## ## ####### *** *** * ** *** ** * ** *** **** **** **** ** *** **** **** **** * **** * *** * * *** * ** *** * *** * ** **** * *** * * **** * **** ** ** * **** ** * **** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** *** * ** ** ** ** ** ** *** ** ** ******* ***** ** *** * *** * ******** *** ***** ** ***** *** ** *** *** *** *** *** ** *** **** *** ******* ** * **** caligraphy j -==--- . hypertext theory : artificial intelligence : finnegans wake . _+m"m+_"+_ lynx http://www.mcs.net/~jorn/ ! Jp Jp qh qh best-of news:alt.music.category-freak ! O O O O ftp://ftp.mcs.com/mcsnet.users/jorn/ Yb Yb dY dY ...do you ever feel your mind has started to erode? "Y_ "Y5m2Y" " no.
2002-11-14:DAV: \ --- x \oooo | \ o\ o \ -o==\===o-- --o===\==o- \ o \o \ | oooo\ x --- \ --- --- --- --- / x \ / x \ / / \ x / \ \ | | \ / \ / | | | | x x | | | | / / \ | | \ \ / x \ / / \ x / \ x / --- --- --- --- --- - - --- / \ / \ / \ / \ / x x x \ | / \ / \ / \ | | | x x | | | \ / / \ / | \ x x x / \ / \ / \ / \ / --- - - --- - - - - / \ / \ / \ / \ / x \ / x \ / / \ x / \ \ | | \ / \ / | | | | x x | | | | / / \ | | \ \ / x \ / / \ x / \ x / \ / \ / \ / \ / - - - - - - ooo - - / \ /o\ooo/o\ / \ / xooo\o/ooox \ / /o\oo x oo/o\ \ | | oo\ / \ /oo | | | | oo x x oo | | | | oo/ \ / \oo | | \ \o/oo x oo\o/ / \ xooo/o\ooox / \ / \o/ooo\o/ \ / - - ooo - - - - ooo - - / \ /ooooo/o\ / \ / /ooooo/ooo/ \ / /o\oo \ oooo\ \ | | oo\ / \ ooo | | | | oo / / oo | | | | ooo \ / \oo | | \ \oooo \ oo\o/ / \ /ooo/ooooo/ / \ / \o/ooooo/ \ / - - ooo - -
Computer graphics tools intended to be used by doctrors, engineers, mathematicians, etc. to look into large data sets to "see" new insights.
see computer_architecture.html#cellular_automata for cellular automata simulators (some of them quite pretty).
see data_compression.html#benchmark for some medical images and other test images for these visualization tools.
see nanotech.html#molecule_modeling for tools for visualizing atoms and molecules.
Visualizing Complex Functions http://home1.gte.net/jrsr/complex.html using color on a 2D surface to visualize complex-input, complex-output functions. Pretty. http://www.mathworks.com/publications/newsletter/summer98.cleve.shtml Many more complex functions visualized with the same method. Pretty.
http://mecheng1.uwaterloo.ca/~fslien/ Computational Fluid Dynamics (CFD) and Turbulence Modelling; Flow visualization, finite element analysis.
Scientific Visualization http://www.uni-koeln.de/~aa045/gallery.html
Information Visualization Resources http://www.graphics.stanford.edu/courses/cs348c-96-fall/resources.html
DEVise: an Environment for Data Exploration and Visualization http://www.cs.wisc.edu/~devise/
Date: Sat, 7 Feb 1998 09:55:30 -0500 (EST) Comment: Hx: Transhuman Technlogies Originator: transhumantech@excelsior.org Version: Autolist v0.2 - Copyright 1995 Planet X Engineering From: Eugene Leitl To: Multiple recipients of list <transhumantech@excelsior.org> Subject: free medical image 3D visualization software for Windows95/NT (fwd) ---------- Forwarded message ---------- Date: Mon, 2 Feb 1998 20:18:25 -0500 From: Andrew Miller To: "bionet.neuroscience mail newsgroup" Subject: free medical image 3D visualization software for Windows95/NT Resent-Date: Tue, 3 Feb 98 0:28:0 UT Resent-From: server-daemon@dl.ac.uk NeuroModeller (version 1.09) brought to you by Cornell Medical Center, Division of Neurosurgery: http://users.infohouse.com/amiller/home.htm ... approximately 640 KB download size. Currently reads DICOM and BMP file types as input. Sincerely, A. Miller, MD amiller@infohouse.com
_A New Kind of Science_ http://www.wolfram.com/s.wolfram/books/new-science.html book by Stephen Wolfram. Wolfram Research sells the really cool-looking _Mathematica_ http://www.wolfram.com/mathematica/ software system for mathematics and visualization.
(and a couple of formatted text formats)
See also Writing Computer Graphics Software
see also data_compression.html#file_formats
"my favorite (standard) file formats"
(see SVG for the SVG2VML converter)
...
Vector Markup Language
http://www.toxicorp.com/vml_start.html
says
(un)Fortunately, the W3C shelved the VML submission ...
Instead, they are concentrating on a later vector language specification, called
Scalable Vector Graphics (SVG).
(decimal) 137 80 78 71 13 10 26 10 (hexadecimal) 89 50 4e 47 0d 0a 1a 0a (ASCII C notation) \211 P N G \r \n \032 \n
Some other interesting and/or popular image formats:
general Information on file formats
"Wotsit's Format, the complete programmer's resource on the net. This site contains file format information on hundreds of different file types and all sorts of other useful programming information; algorithms, source code, specifications, etc." http://www.wotsit.org/
-- Bart Richards, CEO of Thunderstone http://www.thunderstone.com/ , interviewed in an article by Bruce Wiebusch "The Internet as a Design Tool" in _designfax_ 1998 March"The biggest issue as far as I see it is ... File formats. Each vendor of a new software tool that chooses to create a new file format to store or transmit their information is, in a way, making a new language. In human terms, any time you have different languages you create communication barriers which impede the flow of information. ... proprietary formats that can't be directly processed by third-party applications. The net result is that the life-cycle of the knowledge contained in these files is shortened, and possible re-use of the information is limited to the imagination of the original developers. No one else can pry open the can and extract the knowledge for a different purpose.
Put another way, you can still use and view all the information in DaVinci's Codex that was created a few hundred years ago, but you probably can't get at the data you put in an MS-Word Version 3 file just 5 years ago. Evey successful communication product like faxes, phones, radio, and television is reliant on open standards. The lack of open data-format standards is limiting the potential for the Internet. Proprietary formats constrict the flow of knowledge and slow down new innovation.
Author: Uwe Borchert Email: borchert@informatik.unibw-muenchen.de Date: 1998/11/06 Forums: sci.image.processing ... Hello Obinna, >My application requires reading bmp and jpg image formats from a file. I >wonder if you can direct me to where I can find a description of the >formats. > There are a lot of file format documents on the WWW. There is realy no need for any real book, exceept for heating in the winter. ;-P ... BMP is no real standard and there is no official homepage. You should check one of the following servers: Internet Resources: http://www.cs.waikato.ac.nz/~stevef/224/Resources The Graphics File Format Page: http://www.dcs.ed.ac.uk/~mxr/gfx/ MS-DOS Multimediaformat: ftp://x2ftp.oulu.fi/pub/msdos/programming/formats/ UNIX Multimediaformat: ftp://x2ftp.oulu.fi/pub/unix/programming/formats/ Sound and graphikformats ftp://ftp.ncsa.uiuc.edu/misc/file.formats/ Graphics viewers, editors, utilities and info: http://www2.ncsu.edu/bae/people/faculty/walker/hotlist/graphics.html I'm not sure, but the links should not be broken and lead you to knowledge. CU -- (.)(.) ( .. ) ~~~~~~~~~~ Uwe Borchert
detailed information on a few file formats I find interesting:
search for control characters that shouldn't be in a ASCII text (.txt) file:
grep -3 -n "[^[:graph:][:blank:]]" *.txtor, if you want to be cryptic,
grep -3 -n "[^!-~ \x09]" *.txti.e., "*.txt" files should only contain the graphical characters from '!' (0x21) to '~' (0x7E), the whitespace characters space (0x20), tab (0x09), and the end-of-line. The file should end with one or more end-of-line. For any one text file, there should only be one kind of end-of-line:
To convert any text file using any of these conventions (or even the mixed-convention that sometimes occurs when MS-Studio edits a Unix text file and leaves both Unix and MS-DOS line endings), to the standard Unix format, do: Load it in VIM. If you see extra ^M or ^J characters, do ":%s/\r//" (without the quotes). If you see extra-long lines, do ":%s/\r/\r/g" (without the quotes). (see http://vi-improved.org/wiki/index.php/FileFormat ). (see ~/bin/t.sh for alternatives)
Normalize text, html, and texinfo files to standard Unix plain text format. If these files are already Unix or Mac text files, without any whitespace at the end of the line, then no changes will be made (except for possibly adding or deleting blank lines at the end of the file).
strip all trailing whitespace from each line including MS-DOS style ^M (\r 0x0D) characters.
perl -pi.bak -e 's|[ \t\r]*$||g' *.txt perl -pi.bak -e 's|[ \t\r]*$||g' *.html perl -pi.bak -e 's|[ \t\r]*$||g' *.texinfo
This does *not* assume that every line ends with ^M. (Conversion programs that make this assumption delete the last letter of every line, which is a Bad Thing with mixed-convention files). To convert a Mac text file to Unix plain text format, do
perl -pi.bak -e 's|\r|\n|g' *.texinfo
One could try to do the same thing with
sed 's/[ <cr>]*$//' junk.txt > 2junk.txtnote that there are 3 characters inside the brackets, a space, a tab, and a carriage_return (0x20 0x09 0x0D). tabs (^I \t 0x09), and spaces (0x20). leaving the newline (^J \n 0x0A) at the end of the line. I wish I could escape them like sed 's/[ \t\r]*$//' junk.txt > 2junk.txt but unfortunately, this doesn't work with my version of sed. The command diff -b 2junk.txt.bak 2junk.txt should not find any changes between the 2 files. The command diff --recursive -b dirA dirB should not find any changes between the 2 directories (except for the backup files generated). 1999-06-18:DAV: David Cary started, using ideas from http://www.ptug.org/sed/sedfaq.html .
If this text file is a "mixed" text file (some lines end with UNIX \n but other lines end with DOS \r\n) this should normalize it to plain UNIX text file. This corrupts binary files. This strips the formatting of ProleText http://www.clarinet.com/tech/proletext.html and structure-enhanced text (setext) http://www.bsdi.com/setext/ (but it should leave all the content). from http://www.ptug.org/sed/sedfaq.html
sed 's/[ ^t]*$//' file.
more information on text files:
[FIXME: c_programming.html]My opinion is that the best way to solve the technical issues is to mandate that the ASCII #9 TAB character never appear in disk files: program your editor to expand TABs to an appropriate number of spaces before writing the lines to disk.
keyword = value / commentfollowed by the binary image data.
FITS archive at NRAO http://www.cv.nrao.edu/fits/ has FITS standards documentation and source code for implementing it.
The National Space Science Data Center (NSSDC) http://nssdc.gsfc.nasa.gov/ also has the FITS standards documentation at ftp://nssdc.gsfc.nasa.gov/pub/fits .
The FITSview http://www.cv.nrao.edu/~bcotton/fitsview.html program for viewing astronomical images is distributed free of charge by NRAO (versions available for Macintosh, MS-Windows, and Unix systems). More source code is available at http://idlastro.gsfc.nasa.gov/fitsio.html and http://midas.oma.be/www_root/serverdoc/www/astronomy.html#fits
http://dir.yahoo.com/Science/Astronomy/FITS__Flexible_Image_Transport_System_/
(decimal) 137 80 78 71 13 10 26 10 (hexadecimal) 89 50 4e 47 0d 0a 1a 0a (ASCII C notation) \211 P N G \r \n \032 \n
libpng-#.##.tar.gz lpng###.zip (or possibly lbpng###.zip or lp###.zip)(?)
ftp.uu.net:/graphics/jpeg/jpegsrc.v##.tar.gz ftp.simtel.net:/pub/simtelnet/msdos/graphics/jpegsr##.zip
HTM2TXT http://atrey.karlin.mff.cuni.cz/~pavel/htm2txt.html converts HTML to plain text. (Is this really any better than lynx --dump ?)
Most Linux systems already come with documentation on texinfo; try ``info texinfo'' (I use the Gnome Help Browser).
GNU says
-- http://www.gnu.org/prep/standards.html#SEC31 (documentation for GNU utilities and libraries)The preferred document format for the GNU system is the Texinfo formatting language.
Is http://www.gnu.org/manual/texinfo/ the official Texinfo manual ?
Note to self: when I write normal tree-structured ".texinfo" format files, I do *not* "write the `Next', `Previous', and `Up' pointers after the name of a node." See Creating Pointers with makeinfo http://www.gnu.org/manual/texinfo/html_node/texinfo_79.html#SEC75 (Karl Berry told David Cary in 1999-02-06 that this feature was added to makeinfo by Brian Fox a long time ago).
These books on computer graphics are gnerally about "how to write software that generates computer graphics" or "how to write software that can read and write computer graphics files", not "how to draw art using your computer".
From: kallianp@cs.sc.edu (Mohit Kallianpur) Newsgroups: comp.graphics.algorithms Subject: Re: BOOKS Date: 11 Oct 1995 18:44:29 GMT Organization: University of South Carolina - Columbia - Computer Science Lines: 76 cho <w-cho@ux4.cso.uiuc.edu> writes: > Hello. I've just started out my study in computer graphics, and been >searching for "a few good books." :) I am fairly competent with C and >C++... I would appreciate any recommendation for books regarding 3D >graphics. Thank you! Hi John, Check out http://wcl-rs.bham.ac.uk/GamesDomain/gamedev/3dbooks.html In case you cannot check out that site, here is a list of books which you may find very useful : For Graphics intro and algorithms : 1) 3D Computer Graphics, 2nd Ed., Alan Watt, Addison-Wesley 1993, ISBN : 0-201-63186-5. This book should be owned by any person who is into Computer Graphics. Really excellent book! 2) Computer Graphics: Principles and Practice (2nd Ed.) - J.D. Foley, A. van Dam, S.K. Feinder, J.F. Hughes, Addison- Wesley 1990, ISBN : 0-201-12110-7 Another classic. There is an "Introduction to Computer Graphics" by the same authors. It is supposedly an abridged and modified version of the above book with code in "C". I have not looked at this book yet. 3) Computer Graphics: A Programming Approach, 2nd Ed., Steven Harrington, McGraw-Hill 1987, ISBN : 0-07- 026753-7 4) Advanced Animation and Rendering Techniques, Alan Watt and Mark Watt, Addison-Wesley, ISBN : 0-201- 54412-1 For the math part of graphics : 1) Mathematical Elements for Computer Graphics, 2nd Ed. - David F. Rogers and J. Alan Adams, McGraw-Hill 1990, ISBN 0-07-053530-2 Covers all the basic math stuff needed for graphics - including curves, splines, NURBS etc. 2) Computer Graphics : An Introduction to Mathematics and Geometry, M. E. Mortenson, Industrial Press, ISBN : 0831111828. Apparently requires a good math background to read, as it is not easy reading. For texturing, writing shaders etc. : 1) Texturing and Modeling : A Procedural Approach, Ken Musgrave, David S. Ebert, Darwyn Peachey et. al., Academic Press Professional. ISBN : 0-12- 228760-6 For image processing : 1) Digital Image Processing - Rafael C. Gonzalez and Richard E. Woods Addison-Wesley 1992, ISBN 0-201-50803- 6 Excellent book on image processing! You can probably also get the Graphics Gems series from your library, and the source for it off the net. Hope this helps. Mohit Kallianpur (kallianp@cs.sc.edu)
See also
You may also want to check out my style_guides [FIXME:] for related information.
The companion source code is available at the URL: file://ftp.qualia.com/pub/bspfaq/ You can also obtain the FAQ and the source code by sending e-mail to: bspfaq@qualia.com The subject line should be: SEND BSP TREE <what> where "<what>" is any combination of "TEXT", "HTML", or "SOURCE". These options will return to you a plaintext copy of the FAQ, an HTML formatted copy of the FAQ, or a uuencoded copy of the sample source which accompanies the FAQ. ... Problems with the e-mail utility should be reported to: bspfaq@qualia.com Use a different subject line descriptive of your problem, and the message will be forwarded to the maintainer. -- bwade@qualia.com http://www.qualia.com/
The latest version of this FAQ is available via WWW at: http://www.cis.ohio-state.edu/hypertext/faq/bngusenet/top.html under comp->graphics->rendering->raytracing. It is also available via anonymous ftp at: ftp://rtfm.mit.edu/pub/usenet/news.answers/graphics/raytrace-faq/ If you only have email, you can get it by sending email to: <mail-server@rtfm.mit.edu> with both "send usenet/news.answers/graphics/raytrace-faq/part1" and "send usenet/news.answers/graphics/raytrace-faq/part2" in the body of the message (without the quotes).
[moved to http://visual.wiki.taoriver.net/moin.cgi/GraphicAlgorithm ]
Detailed information on the Bresenham algorithm. The original version was just for lines (on a mechanical pen-plotter). Since then, people have discovered/invented very similar algorithms for Bezier curves, circles, ellipses, etc.
Olin Lathrop <olin_piclist at EMBEDINC.COM> on 2001-04-03 07:09:42 AM Please respond to pic microcontroller discussion list <PICLIST at MITVMA.MIT.EDU> To: PICLIST at MITVMA.MIT.EDU cc: (bcc: David Cary/TULSA/BRUNSWICKOUTDOOR) Subject: Re: [PIC]:16bit/32bit Replacements for PIC16c7xx series. >> Show me a version of Bresenham line algorithm where there is only one addition per step. As I see it, there is at least one addition and two subtractions. We accumulate the error, that is one addition. We shift left the error one for multiply by two. We compare error with deltax which requires a subtraction at minimum. That is one subtraction. Based on the comparision, we may subtract deltax from the error and increment the y axis. That is two subtractions. << Bresenham's algorithm works on 3 numbers. I'll call them E, DEA, and DEB. Once the setup is over, the algorithm goes like this: loop: if E >= 0 then <take a B step> E <-- E + DEB else <take an A step> E <-- E + DEA endif goto loop; The IF merely requires checking the sign bit of E, so I don't consider that an "operation". You do have to add either DEA or DEB into E each step. That's the add operation I was talking about. The A step and B step operations are up to you, but an A step is usually advancing by 1 in the minor axis, and a B step is leaving the minor axis value alone. What you do with the major axis is also up to you, but you would usually advance it by 1. You also will need to terminate the loop. Since the number of iterations can be determined ahead of time, this is usually just decrementing a counter until it reaches zero. So there is only one real math "operation" required, but I should have mentioned the additional 2 or 3 increment/decrement operations per iteration. I don't know where you came up with the parts about shifting the error left one bit and comparing it to deltax. I think you may be confusing the setup with the running operation. There is lots of literature on this. You may even be able to find Jack Bresenham's original paper in the IBM journal. ******************************************************************** Olin Lathrop, embedded systems consultant in Littleton Massachusetts (978) 742-9014, olin at embedinc.com, http://www.embedinc.com -- http://www.piclist.com hint: The list server can filter out subtopics (like ads or off topics) for you. See http://www.piclist.com/#topics James Lee Williams <jlw at CREDITVIEW.SE> on 2001-04-03 09:03:27 AM Please respond to pic microcontroller discussion list <PICLIST at MITVMA.MIT.EDU> To: PICLIST at MITVMA.MIT.EDU cc: (bcc: David Cary/TULSA/BRUNSWICKOUTDOOR) Subject: Re: [PIC]:16bit/32bit Replacements for PIC16c7xx series. I have personally never seen this version of the Bresenham. At first look, I notice that your decision voxel determines if it will set the y or the x value. When in fact, one axis will always make a step regardless of any condition, except the end of the move opertion. I would like to see the full algorithm you are using, because I have been searching the net for days and none of the sites and links show it this way. I basic algorithm I have been seeing all along is: for(x=x1;x <= x2;x++) { <take an a step> if((eps << 1) >= DeltaX) { <take an b step> eps -= DeltaX; } } The pseudocode algorithm for this routine is written as: E <- 0, Y -<Y1 FOR X <-X1 TO X2 DO STEP X IF(E + M > -0.5) E <- (E+M) ELSE Y <- Y - 1 E <- E + M + 1 ENDIF END FOR This appears to look close to your method, but not completely. You see, these are the algorithms that I keep finding when I search the web for the Bresenham algorithm. I like your solution, it is much simpler, but I can find any reference to it on the web at all. Regards, James -----Original Message----- From: Olin Lathrop [mailto:olin_piclist at EMBEDINC.COM] Sent: Tuesday, April 03, 2001 8:10 AM To: PICLIST at MITVMA.MIT.EDU Subject: Re: [PIC]:16bit/32bit Replacements for PIC16c7xx series. >> Show me a version of Bresenham line algorithm where there is only one addition per step. As I see it, there is at least one addition and two subtractions. We accumulate the error, that is one addition. We shift left the error one for multiply by two. We compare error with deltax which requires a subtraction at minimum. That is one subtraction. Based on the comparision, we may subtract deltax from the error and increment the y axis. That is two subtractions. << Bresenham's algorithm works on 3 numbers. I'll call them E, DEA, and DEB. Once the setup is over, the algorithm goes like this: loop: if E >= 0 then <take a B step> E <-- E + DEB else <take an A step> E <-- E + DEA endif goto loop; The IF merely requires checking the sign bit of E, so I don't consider that an "operation". You do have to add either DEA or DEB into E each step. That's the add operation I was talking about. The A step and B step operations are up to you, but an A step is usually advancing by 1 in the minor axis, and a B step is leaving the minor axis value alone. What you do with the major axis is also up to you, but you would usually advance it by 1. You also will need to terminate the loop. Since the number of iterations can be determined ahead of time, this is usually just decrementing a counter until it reaches zero. So there is only one real math "operation" required, but I should have mentioned the additional 2 or 3 increment/decrement operations per iteration. I don't know where you came up with the parts about shifting the error left one bit and comparing it to deltax. I think you may be confusing the setup with the running operation. There is lots of literature on this. You may even be able to find Jack Bresenham's original paper in the IBM journal. ******************************************************************** Olin Lathrop, embedded systems consultant in Littleton Massachusetts (978) 742-9014, olin at embedinc.com, http://www.embedinc.com -- http://www.piclist.com hint: The list server can filter out subtopics (like ads or off topics) for you. See http://www.piclist.com/#topics -- http://www.piclist.com hint: The list server can filter out subtopics (like ads or off topics) for you. See http://www.piclist.com/#topics Bob Ammerman <RAMMERMAN at PRODIGY.NET> on 2001-04-03 09:03:53 AM Please respond to pic microcontroller discussion list <PICLIST at MITVMA.MIT.EDU> To: PICLIST at MITVMA.MIT.EDU cc: (bcc: David Cary/TULSA/BRUNSWICKOUTDOOR) Subject: Re: [PIC]:16bit/32bit Replacements for PIC16c7xx series. Lets see what we can do to transform this: for(x=x1;x <= x2;x++) { <take an a step> if((eps << 1) >= DeltaX) { <take an b step> eps -= DeltaX; } } into something more effecient. First if ((eps << 1) >= DeltaX Is (roughly, except for possible rounding issues) equivalent to: if (eps >= DeltaX / 2) But if we subtract DeltaX/2 from X before entering the loop then we have: if (eps >= 0) So now we have: eps -= DeltaX >> 1; for(x=x1;x <= x2;x++) { <take an a step> if(eps >= 0) { <take an b step> eps -= DeltaX; } } Is that a little simpler? Bob Ammerman RAm Systems (contract development of high performance, high function, low-level software) -- http://www.piclist.com hint: The list server can filter out subtopics (like ads or off topics) for you. See http://www.piclist.com/#topics Bob Ammerman <RAMMERMAN at PRODIGY.NET> on 2001-04-03 09:05:53 AM Please respond to pic microcontroller discussion list <PICLIST at MITVMA.MIT.EDU> To: PICLIST at MITVMA.MIT.EDU cc: (bcc: David Cary/TULSA/BRUNSWICKOUTDOOR) Subject: Re: [PIC]:16bit/32bit Replacements for PIC16c7xx series. >Oh, what I forgot to mention also is that every version of the this >algorithm was being used for graphics and hand nothing to do with >motion. Oh course if there is a different alogithm used for motion, >where can I find it? This seems to simplify the mater a lot. It there >one for a circle too? >Regards, >James Yes, there is a Bresenham like algorithm for circles. It is basically a second order extension of the line drawing algorithm. (You run a difference equation on the DeltaX value as you go). You should find this in any good book on graphics. Bob Ammerman RAm Systems (contract development of high performance, high function, low-level software) -- http://www.piclist.com hint: The list server can filter out subtopics (like ads or off topics) for you. See http://www.piclist.com/#topics James Lee Williams <jlw at CREDITVIEW.SE> on 2001-04-03 09:36:56 AM Please respond to pic microcontroller discussion list <PICLIST at MITVMA.MIT.EDU> To: PICLIST at MITVMA.MIT.EDU cc: (bcc: David Cary/TULSA/BRUNSWICKOUTDOOR) Subject: Re: [PIC]:16bit/32bit Replacements for PIC16c7xx series. Opps serious error in my example I forgot to add the error voxel. Should be: for(x=x1; x<= x2;x++) { <take an x step> eps += DeltaY; //Accumulated error ob deltay. if((eps<<1) >= DeltaX) { <take an y step> eps -= DeltaX; } } As I see this, It is as simple as it can be. -----Original Message----- From: Bob Ammerman [mailto:RAMMERMAN at PRODIGY.NET] Sent: Tuesday, April 03, 2001 10:04 AM To: PICLIST at MITVMA.MIT.EDU Subject: Re: [PIC]:16bit/32bit Replacements for PIC16c7xx series. Lets see what we can do to transform this: for(x=x1;x <= x2;x++) { <take an a step> if((eps << 1) >= DeltaX) { <take an b step> eps -= DeltaX; } } into something more effecient. First if ((eps << 1) >= DeltaX Is (roughly, except for possible rounding issues) equivalent to: if (eps >= DeltaX / 2) But if we subtract DeltaX/2 from X before entering the loop then we have: if (eps >= 0) So now we have: eps -= DeltaX >> 1; for(x=x1;x <= x2;x++) { <take an a step> if(eps >= 0) { <take an b step> eps -= DeltaX; } } Is that a little simpler? Bob Ammerman RAm Systems (contract development of high performance, high function, low-level software) -- http://www.piclist.com hint: The list server can filter out subtopics (like ads or off topics) for you. See http://www.piclist.com/#topics -- http://www.piclist.com hint: The list server can filter out subtopics (like ads or off topics) for you. See http://www.piclist.com/#topics Bob Ammerman <RAMMERMAN at PRODIGY.NET> on 2001-04-03 10:36:11 AM Please respond to pic microcontroller discussion list <PICLIST at MITVMA.MIT.EDU> To: PICLIST at MITVMA.MIT.EDU cc: (bcc: David Cary/TULSA/BRUNSWICKOUTDOOR) Subject: Re: [PIC]:16bit/32bit Replacements for PIC16c7xx series. Oops serious error in my example I forgot to add the error voxel. Should be: for(x=x1; x<= x2;x++) { <take an x step> eps += DeltaY; file://Accumulated error ob deltay. if((eps<<1) >= DeltaX) { <take an y step> eps -= DeltaX; } } As I see this, It is as simple as it can be. Not at all. Try this: eps += DeltaY; eps -= DeltaX >> 1; DeltaYmX = DeltaY - DeltaX; for (x == x1; x<= x2; x++) { <take an x step> if (eps >= 0) <take a y step> eps += DeltaYmX; } else { eps += DeltaY; } } Now it looks a lot like Olin's version, doesn't it? Bob Ammerman RAm Systems (contract development of high performance, high function, low-level software) -- http://www.piclist.com hint: The list server can filter out subtopics (like ads or off topics) for you. See http://www.piclist.com/#topics Olin Lathrop <olin_piclist at EMBEDINC.COM> on 2001-04-03 11:58:01 AM Please respond to pic microcontroller discussion list <PICLIST at MITVMA.MIT.EDU> To: PICLIST at MITVMA.MIT.EDU cc: (bcc: David Cary/TULSA/BRUNSWICKOUTDOOR) Subject: Re: [PIC]:16bit/32bit Replacements for PIC16c7xx series. > I have personally never seen this version of the Bresenham. > At first look, I notice that your decision voxel determines if it will > set the y or the x value. I don't know what you mean by "decision voxel". Bresenham's original algorithm was intended to draw a straight line between two pixels on a plotter. The major axis was implicitly advanced by 1 each iteration. The algorithm determines whether the minor axis is advanced by 1 or not for each iteration. In other words, its job is to produce 1 bit of information each iteration. > When in fact, one axis will always make a > step regardless of any condition, except the end of the move opertion. Right. That's the major axis. > I would like to see the full algorithm you are using, because I have > been searching the net for days and none of the sites and links show it > this way. I basic algorithm I have been seeing all along is: > > ... > > I like your solution, it is much simpler, but I can find any reference > to it on the web at all. What I posted is pretty much the standard way to do it. It is documented lots of places, including Bresenham's original paper in the IBM Systems Journal, Volume 4, Number 1, January 1965, pages 25-30. I just looked at the standard reference for computer graphics by Foley and Van Dam, "Fundamentals of Interactive Computer Graphics", published by Addison-Wesley. They go thru a nice derivation then show the complete algorithm. I wrote a paper once on how to extend Bresenham's algorithm so the endpoints can be anywhere in a pixel, not just at the centers. This paper includes a complete derivation of the basic algorithm, "Accurate Rendering by Subpixel Addressing", IEEE Computer Graphics and Applications, September 1990, pages 45-53. ******************************************************************** Olin Lathrop, embedded systems consultant in Littleton Massachusetts (978) 742-9014, olin at embedinc.com, http://www.embedinc.com -- http://www.piclist.com hint: The list server can filter out subtopics (like ads or off topics) for you. See http://www.piclist.com/#topics Olin Lathrop <olin_piclist at EMBEDINC.COM> on 2001-04-03 12:01:59 PM Please respond to pic microcontroller discussion list <PICLIST at MITVMA.MIT.EDU> To: PICLIST at MITVMA.MIT.EDU cc: (bcc: David Cary/TULSA/BRUNSWICKOUTDOOR) Subject: Re: [PIC]:16bit/32bit Replacements for PIC16c7xx series. >> Oh, what I forgot to mention also is that every version of the this algorithm was being used for graphics and hand nothing to do with motion. Oh course if there is a different alogithm used for motion, where can I find it? This seems to simplify the mater a lot. It there one for a circle too? << Bresenham's original algorithm WAS for motion. He was moving an object above a fixed table, you are trying to move the table. You have things above the table like a drill or a router. He had a pen. Same thing. By the way Bresenham developed the algorithm because the traditional slope/fraction method wasn't fast enough on the limited computer available to drive the plotter. ******************************************************************** Olin Lathrop, embedded systems consultant in Littleton Massachusetts (978) 742-9014, olin at embedinc.com, http://www.embedinc.com -- http://www.piclist.com hint: The list server can filter out subtopics (like ads or off topics) for you. See http://www.piclist.com/#topics
The Bresenham algorithm is usually implemented in assembly language .
curve tracing, curve fitting, ...... a tutorial and heavy duty set of utilities that allow you to convert noisy data points into smooth cubic splines. This is a preliminary release.
... especially useful in capturing fonts from bitmaps, plotting engineering curves, or smoothing scanned artwork.
...
How do you take a bunch of noisy dots and run a smooth curve through them? This problem crops up often when designing typogrophy or doing engineering charts and graphs.
...
DAV: The ``addition only'' differencing is close to what I would call a modified Bresenham algorithm. Unfortunately it does not step 1 pixel per iteration like the circle algorithm, but instead jumps along and relys on a seperate line-draw algorithm to fill in the pixels. It looks something like ../program/bezier.c
calligraphy [ Here we have manual, handmade graphics. Not computer graphics. Is there a better place to put this ? Related to `` typography '' here.] calligraphic works.
Edgar Allan Poe, "Anastatic Printing," Broadway Journal, April 12, 1845 http://www.eapoe.org/works/essays/anaprt01.htm describes a way of making relatively cheap copies of ink-on-paper documents, then claims
All that a man of letters need do, will be to pay some attention to legibility of MS., arrange his pages to suit himself, and stereotype them instantaneously, as arranged. He may intersperse them with his own drawings, or with anything to please his own fancy, in the certainty of being fairly brought before his readers, with all the freshness of his original conception about him.
And at this point we are arrested by a consideration of infinite moment, although of a seemingly shadowy character. The cultivation of accuracy in MS., thus enforced, will tend with an inevitable impetus to every species of improvement in style -- more especially in the points of concision and distinctness -- and this again, in a degree even more noticeable, to precision of thought, and luminous arrangement of matter. There is a very peculiar and easily intelligible reciprocal influence between the thing written and the manner of writing -- but the latter has the predominant influence of the two. The more remote effect on philosophy at large, which will inevitably result from improvement of style and thought in the points of concision, distinctness, and accuracy, need only be suggested to be conceived.
As a consequence of attention being directed to neatness and beauty of MS., the antique profession of the scribe will be revived, affording abundant employment to women -- their delicacy of organization fitting them peculiarly for such tasks. The female amanuensis, indeed, will occupy very nearly the position of the present male type-setter, whose industry will be diverted perforce into other channels.
Cool "Plant Evolution" software. http://www.ugcs.caltech.edu/~mattduke/final.html
http://www.baddesigns.com/ dedicated to spotlighting particularly poor examples of product and system design. maintained by Mike Darnell, a software usability expert with Netscape.
The Ultimate Animated GIF Site is located at : http://homepages.ihug.co.nz/~gbiggs/
?? http://www.cerious.com/
Computer Graphics Format links http://www2.ncsu.edu/bae/people/faculty/walker/hotlist/graphics.html
Ghostscript includes output drivers that can produce JPEG (JFIF) files from Postscript images. *Please note* that JPEG is designed for continuous-tone images (such as photographs) and is therefore quite unsuitable for the vast majority of page images produced with Postscript. If you get crummy-looking JPEG files, don't blame Ghostscript; instead consult a reference about uses and abuses of JPEG, such as the JPEG FAQ available at http://www.faqs.org/faqs/jpeg-faq/.
-- Ghostscript "devices.txt"
Signal and Image Processing Institute of the University of Southern California http://sipi.usc.edu/recentre.html Biomedical Imaging Image and Video Compression
Graphics File Format Standards http://www.ora.com/centers/gff/specs.htm
http://www.jpeg.org/ home site of the JPEG and JBIG committees
http://www.u-aizu.ac.jp/brochure/SW/pasko.html member of FreeDesigner (CAD) mailing list; interesting related stuff.
the Virtual Environments, 3D Medical Imaging, and Computer Graphics Laboratory http://www.afit.af.mil/Schools/EN/graphics/GRAPHICS.html in the Air Force Institute of Technology's Graduate School of Engineering
Terrains http://www.cms.dmu.ac.uk/People/cph/VRbib/Terrain/ including a explaination of the "Mars" demo, and some publicly available terrain archives (Alaska ?).
http://www-gscit.fcit.monash.edu.au/~chesterk/vr/irvrnew.html long list of Virtual Reality resources, including mailing lists, web pages, books, etc.
Sci.virtual-worlds is a USENET newsgroup http://www.hitl.washington.edu/scivw/
Vector Rotations around Arbitrary Vector http://cadd.cern.ch/cad_geant_int/ddt_long/node14.html
Nigel Thompson http://www.thompson-ind.com/ has information on Win95 Game Programming (Direct 3D and other low-level graphics programming); Ham Radio Software; Stillwater Elementary online. /* was http://ourworld.compuserve.com/homepages/nigelt/ */
Very large "digital textile printer" http://www.encad.com/ prints images on fabric large enough to upholster sofas
Duggal Color Projects Inc. http://www.duggal.com/ very large digital printers: prints directly on NYC busses, building murals, cotton fabrics, owns a "giant inkjet mural printer (spray jet)"
http://www.jpg.com/ You can compress your images online with the "JPEG Wizard" (takes your JPEG images, and shrinks them further); webcam software; Medical imaging; ...
The Association for Information and Image Management (AIIM) International http://www.aiim.org/
Subject: ANNOUNCE: Free Radiosity Software (inc. C++ source code) From: (Ian Ashdown) Date: Sat, 17 Feb 1996 17:18:38 GMT The C++ source code for HELIOS, a fully-functional radiosity renderer for MS-Windows 3.1, is now available for downloading on the 'net ... "Radiosity" is a computer graphics technique that enables you to synthesize photorealistic images. Whereas ray tracing techniques excel in the rendition of point light sources, specular reflections, and refraction effects, radiosity methods accurately model area light sources, diffuse reflections, color bleeding between surfaces, and detailed shading within shadows. They are in a sense complementary approaches to photorealistic rendering. Folklore had it that you needed a graphics workstation with gigabytes of RAM or even a supercomputer to do radiosity rendering. This is no longer true: You can use your personal desktop computer -- a '386 IBM-PC with a math coprocessor, 4 MB of RAM, and a 256-color SVGA display will do nicely -- to experiment with radiosity methods. A 66-MHz '486DX machine will render a simple scene (540 polygons) in less than three minutes. A more complex scene with 2,700 polygons can be rendered in a little over six minutes. Commercial radiosity renderers are slowly making their way into the marketplace. Take a look, for example, at the incomparable Lightscape Visualization system (http://www.lightscape.com) to see what is available now for Windows NT. (Other interesting sites on the Web for commercial radiosity renderers are http://www.bentley.com/products/masterpiece.html -- download the Microstation MasterPiece Technical Profile -- and the Italian http://www.atma.it/english/rlight.html.) In the meantime, you can download HELIOS to experiment with the possibilities of radiosity rendering using MS-Windows 3.1 or Windows 95. The Web site is: http://www.ledalite.com/lighthouse.html where you will find a demonstration version of HELIOS Version 1.02C (106 KB) and the complete C++ development package (806 KB), including four different executable versions of HELIOS, fully- commented C++ source code (over 12,700 lines), make files for Microsoft Visual C++ 1.5 and Borland C++ 4.5, online help files, two demonstration environments, demo images, and more. (While you are perusing our Web site, you might want to look at http://www.ledalite.com/library/ledapub.html -- we have an eclectic variety of academic papers and articles on computer graphics and related topics available online for downloading.) The HELIOS development package is *not* in the public domain. It is copyrighted material that may be freely copied, redistributed, and/or modified for personal, non-commercial use ONLY, provided the copyright notice is included with all source code files. HELIOS was first developed in: Ashdown, I. 1994. Radiosity: A Programmer's Perspective. New York, NY: John Wiley & Sons, Inc. Softcover, 498 pages, 12 color plates. ISBN 0-471-30444-1 (without diskette) $39.95 US ISBN 0-471-30488-3 (with 3.5-inch MS-DOS diskette) $54.95 US This book provides a detailed explanation of radiosity theory and its associated algorithms (no knowledge of higher mathematics required!) More important, it also includes complete, fully documented, and compiler-independent C++ source code (over 7,500 lines) for HELIOS Version 1.00A, a fully-functional radiosity- based rendering program for MS-Windows 3.1, Windows 95, and Windows NT. The radiosity-related code presented in the book is identical to that now offered online. If you want to fully understand how HELIOS (and radiosity) works, you more or less need to buy the book. You can order "Radiosity: A Programmer's Perspective" from your local bookseller or (in the United States) directly from John Wiley & Sons by calling 1-800-CALL-WILEY. You can also order the book online from http://www.wiley.com. Ian Ashdown, P. Eng. | READ THE BOOK! Research & Development Manager | Radiosity: A Programmer's Perspective Ledalite Architectural Products Inc. | by Ian Ashdown | John Wiley & Sons, 1994 Visit http://www.ledalite.com | (Sneaky Internet Advertising) ### Subject: Re: Swarm algorithm ... From: (Frank Compagner) Date: 9 Feb 1996 14:02:53 GMT ... says... >I am looking for a Swarm algorithm, a la XSwarm. All of the code I can find >that implements this cool piece of eye candy is uncommented and contains a >lot of picky little windowing commands for either X or MS-Windoze. > >I'd like to understand the mathematics behind it ... >If anyone can help, or suggest further research options, I would appreciate >it. > >Thanx >RichD Some time ago, in response to a very similar question, i wrote a little (pascal) program that uses the same algorithm as the Xswarm screensaver. It's a lot easier to understand. Someone else (can't seem to find who exactly, maybe ) then converted this to C. I've got source and executables to both, just tell me what you'd like to have and i'll mail them to you. Frank ------------------------------------------------------------------------------ Frank Compagner University of Amsterdam ### Subject: Re: Bresenham or Fixed point ? From: Illusion/Phoenix Date: Thu, 08 Feb 1996 12:58:54 +0100 jp wrote: > > Yves Dufournaud wrote: > > >After all this good stuff on fixed point calculation, > >I've a question : > >to do bloc stretching you use : > >- a derivative of bresenham ( as can be found in graphics gem) ? > >- a fixed point algorithm ? > >- none of these ? ( what do you use in this case ?) > > >Which one is the faster ? > > Well, this is just me, so don't take anything I say as fact or > anything....but I have found Bresenhams alg. to be faster with long > lines, and fixed-point to be real good for short lines...... In fact, it's really the opposite! I'll explain why: Bresenham could be optimized downto a loop (unrolled or not) that is, let's say 7 clock cycles. Fair enough. It doesn't have much of a setup, though, we can estimate it to 5 clock cycles. I'm being reeeeally nice to you Bresenham folks, in case you didn't you don't noticed. I don't think anyone can make it THAT fast. DDA, however, has a loop of basically 2-3 clockcycles fully optimized, per pixel. This is in the best case, and not for all slopes. With slopes closing to the horizontal axis, it requires a bit more, maybe something like 5-9 clock cycles. This averages to 5 cc per pixel. DDA have to use a DIV in the setup, and some other things have to be done, so we can estimate the setup time to 50 clock cycles. Well, look here. This is a table of estimated performance of both Bresenham and DDA. The scale is one pixel per char on the vertical axis, and 5 clock cycles per char on the horizontal one. Now we have two equations, b(t) and d(t), where b(t) shows how far the Bresenham routine has drawn after a certain amount of time, and d(t), which does the same for DDA. b(t) = 1/7*t-5/7 d(t) = 1/5*t-50/5 , t >= 0 Let's calculate the point t where the two routines has calculated the same amount of pixels. 1/7*t-5/7 = 1/5*t-50/5 50/5-5/7 = 1/5*t-1/7*t t = (50/5-5/7)/(1/5-1/7) t = 162.5 clock cycles At that point, both routines have drawn 22.5 pixels From this we can see that for lines not longer than 22 pixels, would be calculated faster with Bresenham. But if you are going to make polygons, with your routine, or use it for gouraud interpolation, you won't need more than one pixel per scanline, and the DDA won't use more than 2-3 clock cycles per pixel in any case. Eat that, Bresenham! Here is a cute little table to display the above equations in an easier way...: Pixels drawn: db 20 bb b bb bd bbd 15 b d bb d b d 'b' = b(t) bb d 'd' = d(t) b d 10 bb d b d bb d b d bb d 5 b d bb d b d bb d 1 b d 0bbddddddddd ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 0 25 50 75 100 125 150 175 200 225 250 clock ticks BTW, once I tried to get rid of the DIV in the DDA routine. What I came up with was am exact copy of Bresenham. So old Bressy did know what fixedpoint was, I'd recon that the computers at that time were so much slower with DIV, that his routine was faster. But NOT today! BTW again, if anyone wonders how the DDA is done with 2 cc per pixels, look here: adc edi,ebx mov [di],al The top 16 bits of edi contains the decimals and ebx contains the x-add. If you want to optimize it further, I think it's possible to do like this: adc esi,ebx mov [di],al adc edi,ebx mov [si],al where you have doubled ebx. That's all, folks! // i -- _ _ _ _ _ ___ _ ___ ____ < >| || || || | _| _|< >|o || | |_||_||_||____||___| |_||___||_||_| Graphician, Phoenix Realtime Productions http://www.edu.isy.liu.se/~d94marka/ ### ### Subject: Re: Bresenham algorithm for an ellipse ? From: (Chris Lattner) Date: 18 Jan 1996 23:40:36 GMT : I am looking an algorithm for drawing an ellipse . : The input shall be the midpoint and the two axes . Here is one implementation in C of the algorithm... Remark : Only one quarter of the ellipse is computated, the rest is set by symmetry. a and b are the half-axes (I hope this is the right word for it) of the ellipse in x- and y-direction. If you like a circle set a=b=radius . --------------------------------- cut --------------------------------- void symmetry(x,y) int x,y; { PUT_PIXEL(+x,+y); // This would obviously be inlined! PUT_PIXEL(-x,+y); // and offset by a constant amount PUT_PIXEL(-x,-y); PUT_PIXEL(+x,-y); } void bresenham_ellipse(a,b) int a,b; { int x,y,a2,b2, S, T; a2 = a*a; b2 = b*b; x = 0; y = b; S = a2*(1-2*b) + 2*b2; T = b2 - 2*a2*(2*b-1); symmetry(x,y); do { if (S<0) { S += 2*b2*(2*x+3); T += 4*b2*(x+1); x++; } else if (T<0) { S += 2*b2*(2*x+3) - 4*a2*(y-1); T += 4*b2*(x+1) - 2*a2*(2*y-3); x++; y--; } else { S -= 4*a2*(y-1); T -= 2*a2*(2*y-3); y--; } symmetry(x,y); } while (y>0); } Have fun! Chris _.,-*~'`^`'~*-,._.,-*~'`^`'~*-,._.,-*~'`^`'~*-,._.,-*~'`^`'~*-,._ Chris | Home page: http://www.teleport.com/~sabre Lattner | For all your PC programming needs! Articles, My Propaganda-> | reference, links, EVERYTHING! ^`'~*-,._.,-*~'`^`'~*-,._.,-*~'`^`'~*-,._.,-*~'`^`'~*-,._.,-*~'`^ ### Subject: Re: I need help in finding if a point is near a line From: (Kevin Stone) Date: 16 Jan 1996 22:32:44 GMT Lance Wentz () wrote: : Jason Reeve wrote: : > : > My problem, 2D vector maths. I have 2 sprites A and B. I want to see : >if another sprite C is inbetween A and B allowing for some tolerance : > either side. Any help You have to do two tests... the first test needs to find if sprite C is inbetween sprite A and B, and the second test needs to find the distance that sprite C is from the line between sprites A and B and compare that distance to your tollerance. The answer to the first test is surprisingly simple... A \ This is a diagram of the situation. Sprites A and B \ C form a line, and sprite C is somewhere in space. \ We need two vectors... A vector in the direction of line \ AC and a vector in the direction of the line BC. B By taking the Dot Product of vector AC and BC you will find if sprite C possibly lies inbetween A and B. If the result of the Dot is less than 0 then sprite C is inbetween A and B (such as the situation in this diagram), if it's greater than 0 then sprite C is not inbetween A and B. The second test is easy as well... We need to find the distance that sprite C is to the line AB. This can be done with a little trig... A Ive rotated the situation alittle bit so it's easier to draw. |\ I've also added a point, "D". Line DC is what we need to find. | \ We need to find the angle between lines AC and AB. This is D--C easily done with the Dot Product of those two vectors. | / Once we have that angle, we can use the Cosine Law to |/ solve the triangle ACD, and with that, we can find the length B of line DC... which is the distance that sprite C is from the line AB. I will call the angle between AC and AB, theta. Theta = ArcCosine((AB dot AC) / (|AB|*|AC|)); // By the Dot Poduct law |DC| = (|AC| * cos(Theta)) / cos(90) Now you can apply your tollerance to the length of DC and do what ever you need to do. :) I sure hope this works. Here's a summary of the algorithm... Given two sprites A and B, find if sprite C lies in between A and B. If it does, find the distance that C is from the line formed by A and B. The code might look something like this... if (Dot(AC, BC) < 0) { Theta = acos(Dot(AB, AC)/(Length(AB)*Length(AC)); DistToLine = abs(Length(AC)*cos(Theta) / cos(90)) if (DistToLine < Tollerance) SpriteC_InBetweenSpritesAB = true; } else SpriteC_InBetweenSpritesAB = false; BAS
"Visual Arts & Communications" http://www.ee.pdx.edu/~igal/visocomm/ by Igal Koshevoy (???)
_The Computational Beauty of Nature: Computer Explorations of Fractals, Chaos, Complex Systems, and Adaptation_ book by Gary Flake has source code online at http://mitpress.mit.edu/books/FLAOH/cbnhtml/
Lifelike Computer Characters http://www.research.microsoft.com/research/ui/lcc/ Bruce Sterling's Closing Address on Artificial Life ???
daVinci http://www.informatik.uni-bremen.de/~davinci/ mirror http://www.tzi.de/~davinci/ is a X-Window visualization tool for drawing directed graphs automatically in high quality. Windows NT version available. Automatic graph layout with edge crossing- and bend minimization. Interactive fine tuning for a given layout. Interactive abstractions (collapsing subgraphs, hiding edges). Application programmers can use the daVinci API to draw graphs without having to deal with graph layout algorithms and computer graphics. organization trees, tree-like data structures, ... http://www.informatik.uni-bremen.de/~mfr/
the GGI Project http://synergy.caltech.edu/~ggi/ "GGI stands for "General Graphics Interface", and it is a project that aims to develop a reliable, stable and fast graphics system that works everywhere. We want to allow any program using GGI to run on any platform requiring at most a recompile. ... GGI development also involves a portable userspace library, 3D graphics, and anything else that is fun to hack :-)"
the _Fractal Report_ http://www.geocities.com/CapeCanaveral/Launchpad/5113/ lots of enthusiastic articles about making computer graphics with simple BASIC programs. BASIC and C source code included.
http://www.comlab.ox.ac.uk/archive/3d.html single image random dot stereo (SIRDS) and other 3-D images and software. A few pointers to things of more than 3 dimensions.
http://eddie.mit.edu/ftp/pub/three-d-zone/ some postscript utilities for various 3 D object manipulation.
togglethis http://www.togglethis.com/ ???
$79 CD Labeler package (die-cut labels, templates, centering application tool) http://www.neato.com/
http://www.gifoptimizer.com/ ???
GRAFICA Obscura http://www.sgi.com/grafica/ "Collected Computer Graphics Hacks" Curated by Paul Haeberli A couple of them are about paper folding ( origami ), with nary a computer in sight. fonts; image merging (projective warp panorama), Texture Mapping Applications, and a few other clever ideas.
http://www.scitechsoft.com/ ???
Are we doomed to get only 2 out of 3 of our desires, or can we make some curve can do all of them ? (perhaps sacrificing a little smoothness for fidelity and locality).
David came up with this idea: At each point we want the curve to go through that point, but we don't want a "cusp", so the curve through that point must be tangent to some line. The simplest thing I could thing of would be to make that tangent line through the current point on the given list parallel to a line drawn between the preceding and following point on the list.
So each little segment of the curve starts at some point in the list and goes to the next point of the list, and the curve is tangent to the line associated with each point.
What sort of curve could we draw between these points and still keep the curve tangent to those lines ? At first I (DAV) tried just a single arc (part of a circle), but it's impossible to meet all the constraints with a single circle. However, Paul convinced me that it *is* possible to break the curve into 2 arcs that meet at some point between the given 2 points in such a way that the 2 circles are tangent to each other (This special tangent point is, of course, somewhere on the line that touches both of the circle centers). In fact, there are an infinite number of such circle pairs.
How to find these circles ? David Cary and Paul Cary invented this procedure 1999-02-22.
Given 2 tangent lines and 1 point on each line: one can fit 2 circles ...
Given any regular Ngon, this procedure creates a perfect circle that goes through all the points. (The "infinite number" of possibilities converges on a singularity in this case).
One bit of strangness: if you "squish" a picture of the final curve (with the original listed points marked) along the X axis, creating a new list of points, then use this procedure to fit a curve through all the points in this new list, this new curve will *not* exactly overlap the "squashed" curve, even though they will intersect and be tangent at each of the points in the new list. (I think that a Bezier Curve *will* exactly overlap a squished version of itself).
Logos http://www.will-harris.com/design/logos.htm ``for a company, group, or product''
see data_compression.html#interpolation for more on interpolation. [FIXME: is there a connection with Bresenham here ?]
Autotracing is the computer's way to turning a picture into the kinds of lines and curves it really likes (trust me, computers go gaga over lines and curves, they get practically giddy with excitement).-- Daniel Will-Harris http://www.schmoozeletter.com/schmoozeletter/html/15.html
-- http://www.whisqu.se/per/docs/graphics30.htm* I should point out that the actual fractions we used were, assuming * you are at X, moving left to right: * * X 7/16 * 3/16 5/16 1/16 * * Note that the error goes to four neighbors, not three. ... * Lou Steinberg
-- http://www.whisqu.se/per/docs/graphics26.htmI tried a few cuts at an extended 3D Floyd-Steinber error diffusion algorithm which would additionally pass errors onto the same (x,y) pixel one frame forward in *time*, in an effort to reduce this blinking effect. I am quite interested to hear if anyone else has explored such an extension to the dimensionality of error diffusion.
I'm convinced that there is a lot of good milage left in the Floyd-Steinberg approach (I consider it a larger topic than merely any one algorithm), and am interested in receiving further comments.
/Alan Paeth
``Using a higher frequency would seem to require reducing the number of available "steps", or perhaps the use of multiplication or division or other complex math to compute delays. In fact that is not the case.
Floyd Steinberg error diffusion is a commonly-used technique for converting grayscale or continuous-tone color images into something with 1, 3, or some other small number of bits per pixel. The fundamental principle is extremely simple: accumulate fractional amounts at each step, but output only the integer portion.
X 7 This is the Floyd and Steinberg 3 5 1 error diffusion filter.In this filter, the X represents the pixel you are currently scanning, ... Here, the pixel immediately to the right gets 7/16 of the error (the divisor is 16 because the weights add to 16), the pixel directly below gets 5/16 of the error, ... When scanning a line right-to-left, this pattern is reversed. This pattern was chosen carefully so that it would produce a checkerboard pattern in areas with intensity of 1/2 (or 128 in our image). It is also fairly easy to calculate when the division by 16 is replaced by shifts.
and also claims that http://www.visgraf.impa.br/Courses/ip00/proj/Dithering1/veryovka_buchanan_dithering.html ``Veryovka-Buchanan [dithering] ... enhance the contours of the image ... generates a better result of dithering than the knowledge classical methods.'' (In other words, it claims to produce a better-looking result than Floyd and Steinberg dithering).
DAV: this seems to assume that the vertices of polygons are always centered on a pixel. Would it be interesting to always place the vertices of polygons at the points *between* pixels ? (In other words, at the corners of square pixels ?) Also, perhaps it would be interesting to generically place vertices anywhere (for example, when a detailed font is scaled way down). ``shifting a standard line-drawing algorithm horizontally by one half-pixel toward the polygon's interior.''. -- why can't we do this with (horizontal) top and bottom lines as well ? Because those top (bottom) 2 pixels are centered on pixels; if they were centered at pixel corners, it would be OK.Summary: The first in a series of columns develops routines to draw filled polygons. Filled polygons, which are essentially any closed form filled with pixels in a consistent color or pattern, are useful for a variety of graphics constructs. Polygons are divisible into convex, nonconvex and complex shapes. Filling a polygon is fundamentally a rasterization process involving drawing all of the horizontal lines within the polygon's boundaries. Problems that must be resolved include defining which pixels are within each polygon and ensuring that multiple polygons can fit together without overlapping. A line-tracing algorithm is modified so that it contains only pixels that are truly within the polygon. Rules and routines are developed to fit polygons together without overlapping and fill them.
links to [astro ?]``Over 500 comets have been discovered in SOHO images, most by amateurs using LASCO data which have been downloaded from the Web. That's more comets than from any other observatory, either from the ground or in space.''
DAV: ASCII art drawing of a silly way to represent many of the letters in the ISO-8859-1 character set using only 7 segment display http://www.fairradio.com/0sla-1.htm : /\ \/\ \/ - | | - | | - /\ \ ? ? ? ? ? / /\ ? \ \ \/ \ \ \ \ /\ \ / \ / / \/ / / \ /\ \ /\ /\ \ / / /\ /\ /\ / / / \ /\ \ \ \ / /\ \/\ \/\ \/\ \ \/\ \/\ / /\ \ / / / \/ \/ / / \/ \/ / / / ? /\ ? / ? / / / \ \ \ \ /\ ? /\ \/\ \ \/ \/ \/\ \/\ \ \ \/ \ /\ \ \ \ \/ \/ \ \/ \ / \ \/ / \/ /\ ? ? / ? \ ? / \ \ /\ / \ /\ /\ \/ \/\ \ \ \/ \/\ \/\ / \ / \ \ / \/ \/ \ \/ \/ \ / / \ /\ \ /\ / /\ / / \ /\ /\ \/\ / /\ \/ \/ \/\ \/\ /\ /\ \/ \ /\ /\ /\ \/ \/ \/ \/ \/ \ / \ / \ \ / \ \/ /\ /\ / \ / \ \ /\ ? ? / \/ \/\ / \/\ \/ \/ \/ \/ \/\ \/\ / \ \ \ / \/ \/ \ / \/ \ / ? ? ? ? ? ? ? ? ? ? ? / /\ /\ / \/ /\ ? ? ? \ ? ? ? ? /\ ? ? ? ? / \/ \ \/ \/ / \ \/ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ... except for Lima, center segment always lit for lowercase letters ... other options: break m and w into 2 cells (rn, nn, uj, uu, vv).
[FIXME: how does this compare to U-Disp - An Open Sourced USB display 7-Segment Character Set http://www.u-disp.com/index.php/character_set ?]
(The basic idea is to spell out words kinda like a http://en.wikipedia.org/wiki/Fourteen-segment_display or a http://en.wikipedia.org/wiki/Sixteen_segment_display when all I have available is a http://en.wikipedia.org/wiki/Seven_segment_display )
The Luscher Color Test was devised by psychologist Max Luscher in 1969. It's effectiveness has been known in advertising, automotive and the fashion industry for years.[FIXME: consider taking this quiz]
"Pen Photography - Part I" article by Terry Clark http://www.pentrace.com/penbase/Data_Returns/full_article.asp?ID=330
"Pen Photography - Part III" article by Terry Clark on how to photograph pens. http://www.pentrace.com/penbase/Data_Returns/full_article.asp?id=337
[FIXME: talks about standard photography, nothing to do with computer graphics ... very pretty photos; perhaps eye_candy.html ?] [FIXME: link from 3d_design#pen ?]
"The search for the perfect black ink" by Rick Womer http://www.pentrace.com/penbase/Data_Returns/full_article.asp?id=14 [clear pen ?]][FIXME: move to 3d_design#pen ?]
From: "Aleks Jakulin" <jakulin at at ieee.org> Newsgroups: comp.compression,comp.graphics.algorithms Subject: Re: image compression techniques? Date: Sat, 10 Jan 2004 09:58:49 +0100 Organization: ARNES ... Their secrets of Farbrausch are about the art of making things look good and fit in 64k without anyone paying them anything but respect, not as much in developing new technologies. This is what most people start with: http://www.opengl.org/resources/tutorials/sig99/advanced99/notes/node91.html You will find a zillion papers by googling. A neat collection: http://www.vision.ee.ethz.ch/~rpaget/links.htm There's also specialized software. It isn't always labelled as "texture synthesis" but also as a "procedural texture" or even a "pixel shader": http://www.threedgraphics.com/texsynth/ http://www.artofillusion.org/docs/texedtut/index Aleks -- mag. Aleks Jakulin http://ai.fri.uni-lj.si/aleks/ Artificial Intelligence Laboratory, Faculty of Computer and Information Science, University of Ljubljana.
This page started 1997 Mar 29 by David Cary and has backlinks
David Cary
Return to index // end http://david.carybros.com/html/computer_graphics_tools.html