<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.roberttwomey.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=K2lu</id>
		<title>Robert-Depot - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.roberttwomey.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=K2lu"/>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/Special:Contributions/K2lu"/>
		<updated>2026-09-30T15:54:16Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.27.1</generator>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=UMV&amp;diff=4027</id>
		<title>UMV</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=UMV&amp;diff=4027"/>
				<updated>2010-06-04T20:56:52Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: /* Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Title==&lt;br /&gt;
You Music Video (uMV)&lt;br /&gt;
==Description==&lt;br /&gt;
* Motivation&lt;br /&gt;
&lt;br /&gt;
I&amp;#039;ve had interest in rotoscoping and animation in videos and dance for a while - and I&amp;#039;m interesting in mixing them, live.&lt;br /&gt;
&lt;br /&gt;
* Interactive paradigm&lt;br /&gt;
&lt;br /&gt;
As the person dances/moves, animation or other features will react to their movement, enhancing it on video, and basically creating a music video on the spot.&lt;br /&gt;
&lt;br /&gt;
* Technical Description&lt;br /&gt;
&lt;br /&gt;
The person would be caught and tracked on camera, and we could use frame differencing to track the magnitude of his or her movements and the pre-coded/drawn animations would react accordingly.&lt;br /&gt;
Background images can be added and changed over time to improve the effect.&lt;br /&gt;
&lt;br /&gt;
==Visual Concept==&lt;br /&gt;
&lt;br /&gt;
* Reference: &lt;br /&gt;
http://www.motiontheory.com/work/nike_presto-04&lt;br /&gt;
&lt;br /&gt;
View video &amp;#039;Urban Canvas&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
http://www.motiontheory.com/work/nike_flow&lt;br /&gt;
&lt;br /&gt;
View video &amp;#039;Flow&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
*Screenshots:&lt;br /&gt;
&lt;br /&gt;
uMV_windmills:&lt;br /&gt;
&lt;br /&gt;
[[Image:Umv_shot.jpg]]&lt;br /&gt;
&lt;br /&gt;
uMV_street:&lt;br /&gt;
&lt;br /&gt;
[[Image:Umv_street_shot.jpg]]&lt;br /&gt;
&lt;br /&gt;
uMV_black:&lt;br /&gt;
&lt;br /&gt;
[[Image:Umv_black_shot.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Source Code:&lt;br /&gt;
&lt;br /&gt;
-coding consists of initialization of camera, bitmap manipulating to create motion-detecting/color/background editing effects, and some animating code.&lt;br /&gt;
&lt;br /&gt;
-camera code and motion detecting code is adapted from http://drawlogic.com/2007/10/17/motion-detection-in-flash-as2-and-as3-and-c/, with some changes for color and background editing effects.&lt;br /&gt;
&lt;br /&gt;
CAMERA:&lt;br /&gt;
-sets up webcam and shows security panel&lt;br /&gt;
&lt;br /&gt;
[[Image:Cam_code.jpg]]&lt;br /&gt;
&lt;br /&gt;
BITMAP:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bitmap_initialize.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Bitmap_snap.jpg]]&lt;br /&gt;
&lt;br /&gt;
ANIMATIONS:&lt;br /&gt;
&lt;br /&gt;
-code needed for animating windmills and shadows, the animations are based on camera activity level; the more movement the faster they go.&lt;br /&gt;
&lt;br /&gt;
--windmills in uMV&lt;br /&gt;
&lt;br /&gt;
[[Image:Windmill_code.jpg]]&lt;br /&gt;
&lt;br /&gt;
--shadows in uMV_black and uMV_city&lt;br /&gt;
&lt;br /&gt;
[[Image:Shadows_code.jpg]]&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=File:Umv_black_shot.jpg&amp;diff=4026</id>
		<title>File:Umv black shot.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=File:Umv_black_shot.jpg&amp;diff=4026"/>
				<updated>2010-06-04T20:56:47Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=File:Umv_street_shot.jpg&amp;diff=4025</id>
		<title>File:Umv street shot.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=File:Umv_street_shot.jpg&amp;diff=4025"/>
				<updated>2010-06-04T20:55:45Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=File:Umv_shot.jpg&amp;diff=4024</id>
		<title>File:Umv shot.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=File:Umv_shot.jpg&amp;diff=4024"/>
				<updated>2010-06-04T20:55:05Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=UMV&amp;diff=4023</id>
		<title>UMV</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=UMV&amp;diff=4023"/>
				<updated>2010-06-04T20:38:03Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: /* Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Title==&lt;br /&gt;
You Music Video (uMV)&lt;br /&gt;
==Description==&lt;br /&gt;
* Motivation&lt;br /&gt;
&lt;br /&gt;
I&amp;#039;ve had interest in rotoscoping and animation in videos and dance for a while - and I&amp;#039;m interesting in mixing them, live.&lt;br /&gt;
&lt;br /&gt;
* Interactive paradigm&lt;br /&gt;
&lt;br /&gt;
As the person dances/moves, animation or other features will react to their movement, enhancing it on video, and basically creating a music video on the spot.&lt;br /&gt;
&lt;br /&gt;
* Technical Description&lt;br /&gt;
&lt;br /&gt;
The person would be caught and tracked on camera, and we could use frame differencing to track the magnitude of his or her movements and the pre-coded/drawn animations would react accordingly.&lt;br /&gt;
Background images can be added and changed over time to improve the effect.&lt;br /&gt;
&lt;br /&gt;
==Visual Concept==&lt;br /&gt;
&lt;br /&gt;
* Reference: &lt;br /&gt;
http://www.motiontheory.com/work/nike_presto-04&lt;br /&gt;
&lt;br /&gt;
View video &amp;#039;Urban Canvas&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
http://www.motiontheory.com/work/nike_flow&lt;br /&gt;
&lt;br /&gt;
View video &amp;#039;Flow&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
&lt;br /&gt;
* Source Code:&lt;br /&gt;
&lt;br /&gt;
-coding consists of initialization of camera, bitmap manipulating to create motion-detecting/color/background editing effects, and some animating code.&lt;br /&gt;
&lt;br /&gt;
-camera code and motion detecting code is adapted from http://drawlogic.com/2007/10/17/motion-detection-in-flash-as2-and-as3-and-c/, with some changes for color and background editing effects.&lt;br /&gt;
&lt;br /&gt;
CAMERA:&lt;br /&gt;
-sets up webcam and shows security panel&lt;br /&gt;
&lt;br /&gt;
[[Image:Cam_code.jpg]]&lt;br /&gt;
&lt;br /&gt;
BITMAP:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bitmap_initialize.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Bitmap_snap.jpg]]&lt;br /&gt;
&lt;br /&gt;
ANIMATIONS:&lt;br /&gt;
&lt;br /&gt;
-code needed for animating windmills and shadows, the animations are based on camera activity level; the more movement the faster they go.&lt;br /&gt;
&lt;br /&gt;
--windmills in uMV&lt;br /&gt;
&lt;br /&gt;
[[Image:Windmill_code.jpg]]&lt;br /&gt;
&lt;br /&gt;
--shadows in uMV_black and uMV_city&lt;br /&gt;
&lt;br /&gt;
[[Image:Shadows_code.jpg]]&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=UMV&amp;diff=4022</id>
		<title>UMV</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=UMV&amp;diff=4022"/>
				<updated>2010-06-04T20:32:22Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: /* Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Title==&lt;br /&gt;
You Music Video (uMV)&lt;br /&gt;
==Description==&lt;br /&gt;
* Motivation&lt;br /&gt;
&lt;br /&gt;
I&amp;#039;ve had interest in rotoscoping and animation in videos and dance for a while - and I&amp;#039;m interesting in mixing them, live.&lt;br /&gt;
&lt;br /&gt;
* Interactive paradigm&lt;br /&gt;
&lt;br /&gt;
As the person dances/moves, animation or other features will react to their movement, enhancing it on video, and basically creating a music video on the spot.&lt;br /&gt;
&lt;br /&gt;
* Technical Description&lt;br /&gt;
&lt;br /&gt;
The person would be caught and tracked on camera, and we could use frame differencing to track the magnitude of his or her movements and the pre-coded/drawn animations would react accordingly.&lt;br /&gt;
Background images can be added and changed over time to improve the effect.&lt;br /&gt;
&lt;br /&gt;
==Visual Concept==&lt;br /&gt;
&lt;br /&gt;
* Reference: &lt;br /&gt;
http://www.motiontheory.com/work/nike_presto-04&lt;br /&gt;
&lt;br /&gt;
View video &amp;#039;Urban Canvas&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
http://www.motiontheory.com/work/nike_flow&lt;br /&gt;
&lt;br /&gt;
View video &amp;#039;Flow&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
&lt;br /&gt;
* Source Code:&lt;br /&gt;
&lt;br /&gt;
-coding consists of initialization of camera, bitmap manipulating to create motion-detecting/color/background editing effects, and some animating code.&lt;br /&gt;
&lt;br /&gt;
-camera code and motion detecting code is adapted from http://drawlogic.com/2007/10/17/motion-detection-in-flash-as2-and-as3-and-c/, with some changes for color and background editing effects.&lt;br /&gt;
&lt;br /&gt;
CAMERA:&lt;br /&gt;
-sets up webcam and shows security panel&lt;br /&gt;
&lt;br /&gt;
[[Image:Cam_code.jpg]]&lt;br /&gt;
&lt;br /&gt;
BITMAP:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bitmap_initialize.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Bitmap_snap.jpg]]&lt;br /&gt;
&lt;br /&gt;
ANIMATIONS:&lt;br /&gt;
&lt;br /&gt;
-code needed for animating windmills and shadows&lt;br /&gt;
&lt;br /&gt;
--windmills in uMV&lt;br /&gt;
&lt;br /&gt;
[[Image:Windmill_code.jpg]]&lt;br /&gt;
&lt;br /&gt;
--shadows in uMV_black and uMV_city&lt;br /&gt;
&lt;br /&gt;
[[Image:Shadows_code.jpg]]&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=UMV&amp;diff=4021</id>
		<title>UMV</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=UMV&amp;diff=4021"/>
				<updated>2010-06-04T20:31:14Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: /* Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Title==&lt;br /&gt;
You Music Video (uMV)&lt;br /&gt;
==Description==&lt;br /&gt;
* Motivation&lt;br /&gt;
&lt;br /&gt;
I&amp;#039;ve had interest in rotoscoping and animation in videos and dance for a while - and I&amp;#039;m interesting in mixing them, live.&lt;br /&gt;
&lt;br /&gt;
* Interactive paradigm&lt;br /&gt;
&lt;br /&gt;
As the person dances/moves, animation or other features will react to their movement, enhancing it on video, and basically creating a music video on the spot.&lt;br /&gt;
&lt;br /&gt;
* Technical Description&lt;br /&gt;
&lt;br /&gt;
The person would be caught and tracked on camera, and we could use frame differencing to track the magnitude of his or her movements and the pre-coded/drawn animations would react accordingly.&lt;br /&gt;
Background images can be added and changed over time to improve the effect.&lt;br /&gt;
&lt;br /&gt;
==Visual Concept==&lt;br /&gt;
&lt;br /&gt;
* Reference: &lt;br /&gt;
http://www.motiontheory.com/work/nike_presto-04&lt;br /&gt;
&lt;br /&gt;
View video &amp;#039;Urban Canvas&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
http://www.motiontheory.com/work/nike_flow&lt;br /&gt;
&lt;br /&gt;
View video &amp;#039;Flow&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
&lt;br /&gt;
* Source Code:&lt;br /&gt;
-coding consists of initialization of camera, bitmap manipulating to create motion-detecting/color/background editing effects, and some animating code.&lt;br /&gt;
&lt;br /&gt;
-camera code and motion detecting code is adapted from http://drawlogic.com/2007/10/17/motion-detection-in-flash-as2-and-as3-and-c/, with some changes for color and background editing effects.&lt;br /&gt;
&lt;br /&gt;
CAMERA:&lt;br /&gt;
-sets up webcam and shows security panel&lt;br /&gt;
&lt;br /&gt;
[[Image:Cam_code.jpg]]&lt;br /&gt;
&lt;br /&gt;
BITMAP:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bitmap_initialize.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Bitmap_snap.jpg]]&lt;br /&gt;
&lt;br /&gt;
ANIMATIONS:&lt;br /&gt;
-code needed for animating windmills and shadows&lt;br /&gt;
&lt;br /&gt;
--windmills:&lt;br /&gt;
&lt;br /&gt;
[[Image:Windmill_code.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Shadows_code.jpg]]&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=File:Shadows_code.jpg&amp;diff=4020</id>
		<title>File:Shadows code.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=File:Shadows_code.jpg&amp;diff=4020"/>
				<updated>2010-06-04T20:30:54Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=File:Windmill_code.jpg&amp;diff=4019</id>
		<title>File:Windmill code.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=File:Windmill_code.jpg&amp;diff=4019"/>
				<updated>2010-06-04T20:29:11Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=UMV&amp;diff=4018</id>
		<title>UMV</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=UMV&amp;diff=4018"/>
				<updated>2010-06-04T20:26:48Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: /* Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Title==&lt;br /&gt;
You Music Video (uMV)&lt;br /&gt;
==Description==&lt;br /&gt;
* Motivation&lt;br /&gt;
&lt;br /&gt;
I&amp;#039;ve had interest in rotoscoping and animation in videos and dance for a while - and I&amp;#039;m interesting in mixing them, live.&lt;br /&gt;
&lt;br /&gt;
* Interactive paradigm&lt;br /&gt;
&lt;br /&gt;
As the person dances/moves, animation or other features will react to their movement, enhancing it on video, and basically creating a music video on the spot.&lt;br /&gt;
&lt;br /&gt;
* Technical Description&lt;br /&gt;
&lt;br /&gt;
The person would be caught and tracked on camera, and we could use frame differencing to track the magnitude of his or her movements and the pre-coded/drawn animations would react accordingly.&lt;br /&gt;
Background images can be added and changed over time to improve the effect.&lt;br /&gt;
&lt;br /&gt;
==Visual Concept==&lt;br /&gt;
&lt;br /&gt;
* Reference: &lt;br /&gt;
http://www.motiontheory.com/work/nike_presto-04&lt;br /&gt;
&lt;br /&gt;
View video &amp;#039;Urban Canvas&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
http://www.motiontheory.com/work/nike_flow&lt;br /&gt;
&lt;br /&gt;
View video &amp;#039;Flow&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
&lt;br /&gt;
* Source Code:&lt;br /&gt;
-coding consists of initialization of camera, bitmap manipulating to create motion-detecting/color/background editing effects, and some animating code.&lt;br /&gt;
&lt;br /&gt;
-camera code and motion detecting code is adapted from http://drawlogic.com/2007/10/17/motion-detection-in-flash-as2-and-as3-and-c/, with some changes for color and background editing effects.&lt;br /&gt;
&lt;br /&gt;
CAMERA:&lt;br /&gt;
-sets up webcam and shows security panel&lt;br /&gt;
&lt;br /&gt;
[[Image:Cam_code.jpg]]&lt;br /&gt;
&lt;br /&gt;
BITMAP:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bitmap_initialize.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Bitmap_snap.jpg]]&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=UMV&amp;diff=4017</id>
		<title>UMV</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=UMV&amp;diff=4017"/>
				<updated>2010-06-04T20:26:02Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: /* Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Title==&lt;br /&gt;
You Music Video (uMV)&lt;br /&gt;
==Description==&lt;br /&gt;
* Motivation&lt;br /&gt;
&lt;br /&gt;
I&amp;#039;ve had interest in rotoscoping and animation in videos and dance for a while - and I&amp;#039;m interesting in mixing them, live.&lt;br /&gt;
&lt;br /&gt;
* Interactive paradigm&lt;br /&gt;
&lt;br /&gt;
As the person dances/moves, animation or other features will react to their movement, enhancing it on video, and basically creating a music video on the spot.&lt;br /&gt;
&lt;br /&gt;
* Technical Description&lt;br /&gt;
&lt;br /&gt;
The person would be caught and tracked on camera, and we could use frame differencing to track the magnitude of his or her movements and the pre-coded/drawn animations would react accordingly.&lt;br /&gt;
Background images can be added and changed over time to improve the effect.&lt;br /&gt;
&lt;br /&gt;
==Visual Concept==&lt;br /&gt;
&lt;br /&gt;
* Reference: &lt;br /&gt;
http://www.motiontheory.com/work/nike_presto-04&lt;br /&gt;
&lt;br /&gt;
View video &amp;#039;Urban Canvas&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
http://www.motiontheory.com/work/nike_flow&lt;br /&gt;
&lt;br /&gt;
View video &amp;#039;Flow&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
&lt;br /&gt;
* Source Code:&lt;br /&gt;
-coding consists of initialization of camera, bitmap manipulating to create motion-detecting/color/background editing effects, and some animating code.&lt;br /&gt;
-camera code and motion detecting code is adapted from [[http://drawlogic.com/2007/10/17/motion-detection-in-flash-as2-and-as3-and-c/]], with some changes for color and background editing effects.&lt;br /&gt;
&lt;br /&gt;
CAMERA:&lt;br /&gt;
-sets up webcam and shows security panel&lt;br /&gt;
&lt;br /&gt;
[[Image:Cam_code.jpg]]&lt;br /&gt;
&lt;br /&gt;
BITMAP:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bitmap_initialize.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Bitmap_snap.jpg]]&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=File:Bitmap_snap.jpg&amp;diff=4016</id>
		<title>File:Bitmap snap.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=File:Bitmap_snap.jpg&amp;diff=4016"/>
				<updated>2010-06-04T20:25:47Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=File:Bitmap_initialize.jpg&amp;diff=4015</id>
		<title>File:Bitmap initialize.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=File:Bitmap_initialize.jpg&amp;diff=4015"/>
				<updated>2010-06-04T20:24:30Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=UMV&amp;diff=4014</id>
		<title>UMV</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=UMV&amp;diff=4014"/>
				<updated>2010-06-04T20:22:58Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: /* Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Title==&lt;br /&gt;
You Music Video (uMV)&lt;br /&gt;
==Description==&lt;br /&gt;
* Motivation&lt;br /&gt;
&lt;br /&gt;
I&amp;#039;ve had interest in rotoscoping and animation in videos and dance for a while - and I&amp;#039;m interesting in mixing them, live.&lt;br /&gt;
&lt;br /&gt;
* Interactive paradigm&lt;br /&gt;
&lt;br /&gt;
As the person dances/moves, animation or other features will react to their movement, enhancing it on video, and basically creating a music video on the spot.&lt;br /&gt;
&lt;br /&gt;
* Technical Description&lt;br /&gt;
&lt;br /&gt;
The person would be caught and tracked on camera, and we could use frame differencing to track the magnitude of his or her movements and the pre-coded/drawn animations would react accordingly.&lt;br /&gt;
Background images can be added and changed over time to improve the effect.&lt;br /&gt;
&lt;br /&gt;
==Visual Concept==&lt;br /&gt;
&lt;br /&gt;
* Reference: &lt;br /&gt;
http://www.motiontheory.com/work/nike_presto-04&lt;br /&gt;
&lt;br /&gt;
View video &amp;#039;Urban Canvas&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
http://www.motiontheory.com/work/nike_flow&lt;br /&gt;
&lt;br /&gt;
View video &amp;#039;Flow&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
&lt;br /&gt;
* Source Code:&lt;br /&gt;
-coding consists of initialization of camera, bitmap manipulating to create motion-detecting/color/background editing effects, and some animating code.&lt;br /&gt;
-camera code and motion detecting code is adapted from [[http://drawlogic.com/2007/10/17/motion-detection-in-flash-as2-and-as3-and-c/]], with some changes for color and background editing effects.&lt;br /&gt;
&lt;br /&gt;
CAMERA:&lt;br /&gt;
-sets up webcam and shows security panel&lt;br /&gt;
&lt;br /&gt;
[[Image:Cam_code.jpg]]&lt;br /&gt;
&lt;br /&gt;
BITMAP:&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=File:Cam_code.jpg&amp;diff=4013</id>
		<title>File:Cam code.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=File:Cam_code.jpg&amp;diff=4013"/>
				<updated>2010-06-04T20:22:49Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=UMV&amp;diff=4012</id>
		<title>UMV</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=UMV&amp;diff=4012"/>
				<updated>2010-06-04T20:16:53Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: /* Visual Concept */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Title==&lt;br /&gt;
You Music Video (uMV)&lt;br /&gt;
==Description==&lt;br /&gt;
* Motivation&lt;br /&gt;
&lt;br /&gt;
I&amp;#039;ve had interest in rotoscoping and animation in videos and dance for a while - and I&amp;#039;m interesting in mixing them, live.&lt;br /&gt;
&lt;br /&gt;
* Interactive paradigm&lt;br /&gt;
&lt;br /&gt;
As the person dances/moves, animation or other features will react to their movement, enhancing it on video, and basically creating a music video on the spot.&lt;br /&gt;
&lt;br /&gt;
* Technical Description&lt;br /&gt;
&lt;br /&gt;
The person would be caught and tracked on camera, and we could use frame differencing to track the magnitude of his or her movements and the pre-coded/drawn animations would react accordingly.&lt;br /&gt;
Background images can be added and changed over time to improve the effect.&lt;br /&gt;
&lt;br /&gt;
==Visual Concept==&lt;br /&gt;
&lt;br /&gt;
* Reference: &lt;br /&gt;
http://www.motiontheory.com/work/nike_presto-04&lt;br /&gt;
&lt;br /&gt;
View video &amp;#039;Urban Canvas&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
http://www.motiontheory.com/work/nike_flow&lt;br /&gt;
&lt;br /&gt;
View video &amp;#039;Flow&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
&lt;br /&gt;
* Source Code:&lt;br /&gt;
-coding consists of initialization of camera, bitmap manipulating to create motion-detecting/color/background editing effects, and some animating code.&lt;br /&gt;
-camera code and motion detecting code is adapted from [[http://drawlogic.com/2007/10/17/motion-detection-in-flash-as2-and-as3-and-c/]], with some changes for color and background editing effects.&lt;br /&gt;
&lt;br /&gt;
CAMERA:&lt;br /&gt;
-sets up webcam and shows security panel&lt;br /&gt;
&lt;br /&gt;
import flash.media.Camera;&lt;br /&gt;
import flash.system.Security;&lt;br /&gt;
import flash.system.SecurityPanel;&lt;br /&gt;
import flash.events.*;&lt;br /&gt;
&lt;br /&gt;
var cam:Camera = Camera.getCamera(); &lt;br /&gt;
if(cam != null){&lt;br /&gt;
	cam.setMode(video1.width, video1.height, 12, true);&lt;br /&gt;
	video1.attachCamera(cam);&lt;br /&gt;
	cam.addEventListener(ActivityEvent.ACTIVITY, activityHandler);&lt;br /&gt;
}else{&lt;br /&gt;
	Security.showSettings(SecurityPanel.CAMERA)&lt;br /&gt;
}&lt;br /&gt;
var inited:Boolean=false;&lt;br /&gt;
function activityHandler(event:ActivityEvent):void {&lt;br /&gt;
	if(cam.muted){&lt;br /&gt;
		Security.showSettings(SecurityPanel.CAMERA)&lt;br /&gt;
	}else if(!inited){&lt;br /&gt;
		initialize();&lt;br /&gt;
		inited=true;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
     //trace(&amp;quot;activityHandler: &amp;quot; + event);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
BITMAP:&lt;br /&gt;
import flash.display.Bitmap;&lt;br /&gt;
import flash.display.BitmapData;&lt;br /&gt;
import flash.geom.Matrix;&lt;br /&gt;
import flash.utils.Timer;&lt;br /&gt;
import flash.events.TimerEvent;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
var now:BitmapData;&lt;br /&gt;
var out:BitmapData;&lt;br /&gt;
var before:BitmapData;&lt;br /&gt;
var bitmap:Bitmap;&lt;br /&gt;
var timer:Timer;&lt;br /&gt;
var m:Matrix;&lt;br /&gt;
var max:int = 7;&lt;br /&gt;
function initialize(){&lt;br /&gt;
	//create an array that will be the fading image cue&lt;br /&gt;
	list=new Array()&lt;br /&gt;
	//create an identity matrix&lt;br /&gt;
	m=new Matrix()&lt;br /&gt;
	//scale the transformation matrix to match the scale of the Video object on stage&lt;br /&gt;
	m.scale((video1.scaleX),(video1.scaleY))&lt;br /&gt;
	//create a bitmap object in memory that is the same size as the Video object on stage&lt;br /&gt;
	now=new BitmapData(video1.width, video1.height, true, 0x00000000);&lt;br /&gt;
	//create a bitmap object in memory to hold a layered bitmap from the fading image cue&lt;br /&gt;
	out=new BitmapData(video1.width, video1.height, true, 0x00000000);&lt;br /&gt;
	//out.draw(video1,m);&lt;br /&gt;
	before = out.clone();&lt;br /&gt;
	bitmap=new Bitmap();&lt;br /&gt;
	//create a bitmap to display the bitmapdata&lt;br /&gt;
	this.addChild(bitmap);&lt;br /&gt;
	//position it to the right of the live Webcam feed&lt;br /&gt;
	//bitmap.x=video1.x+video1.width;&lt;br /&gt;
	bitmap.x=video1.x;&lt;br /&gt;
	bitmap.y=video1.y;&lt;br /&gt;
	//call the snap function every 1/10th of a second&lt;br /&gt;
	timer = new Timer(100);&lt;br /&gt;
    timer.addEventListener(TimerEvent.TIMER, snap);&lt;br /&gt;
    timer.start();&lt;br /&gt;
}&lt;br /&gt;
//capture a freezeframe from the webcam and copy it, called regularly do detect movement&lt;br /&gt;
function snap(event:TimerEvent){&lt;br /&gt;
	&lt;br /&gt;
	bitmap.bitmapData=out;&lt;br /&gt;
	//draw the video into the bitmapdata object object with the scaled transformation matrix&lt;br /&gt;
	now.draw(video1,m)&lt;br /&gt;
	//copy the current freezeframe&lt;br /&gt;
	done=now.clone()&lt;br /&gt;
	//now draw the previous freezeframe (&amp;quot;BEFORE&amp;quot;!) on top of the current frameframe and apply the &amp;#039;difference&amp;#039; blendmode&lt;br /&gt;
	done.draw(before,m,null,&amp;quot;difference&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
        //filter out all pixels in the differenced bitmap that are greater than just over black (0xFF111111) and make them green (0xFF00FF00)&lt;br /&gt;
	//over-write the previous contents of the bitmap&lt;br /&gt;
	done.threshold(done,done.rect,done.rect.topLeft,&amp;quot;&amp;gt;&amp;quot;,0xFF707070,0xFF00FF00,0xFFFFFFFF,true) //important line, used to set threshold of colors and change background to black while movement/people to green&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	//add the finished bitmap to a fading image cue&lt;br /&gt;
	list.push(done.clone())&lt;br /&gt;
	//if the cue is now greater than the maximum length we specified&lt;br /&gt;
	if(list.length &amp;gt; max)&lt;br /&gt;
	{&lt;br /&gt;
		//then remove the bitmap at the very front of the cue&lt;br /&gt;
		//and free the memory it was using&lt;br /&gt;
		list.shift().dispose()&lt;br /&gt;
	}&lt;br /&gt;
	//how many items in the fading cue&lt;br /&gt;
	var l=list.length&lt;br /&gt;
	//how much should the green channel deteriate on each degradation&lt;br /&gt;
	var each=255/l&lt;br /&gt;
	//declare local var to speed up the loop&lt;br /&gt;
	var g&lt;br /&gt;
	//var changed:uint&lt;br /&gt;
	//clear the out bitmap object so we can start a fresh&lt;br /&gt;
	out.fillRect(out.rect,0xFF000000)&lt;br /&gt;
	//copy the current bitmap and save it for the next time this function is called&lt;br /&gt;
	before=now.clone()&lt;br /&gt;
	//loop through each bitmap in the fading image cue&lt;br /&gt;
	for(var i=0;i&amp;lt;l;++i)&lt;br /&gt;
	{&lt;br /&gt;
		//determine the current degradation&lt;br /&gt;
		g=each*i	&lt;br /&gt;
&lt;br /&gt;
		out.threshold(list[i], out.rect, out.rect.topLeft, &amp;quot;&amp;lt;=&amp;quot;, 0xFF707070, 0x00000000, 0xFF000000, true);&lt;br /&gt;
		//this line was added to make unimportant pixels transparent - used for background changing&lt;br /&gt;
&lt;br /&gt;
                //copy all the pixels that are green in the current item in the fading image cue and make them into the degradated green color&lt;br /&gt;
		//add those pixels on top of the bitmap that will displayed to the user&lt;br /&gt;
		out.threshold(list[i],out.rect,out.rect.topLeft,&amp;quot;==&amp;quot;,0xFF00FF00,(255&amp;lt;&amp;lt;24 | 0&amp;lt;&amp;lt;16 | g&amp;lt;&amp;lt;8 | 0),0x00FFFFFF,false)&lt;br /&gt;
		&lt;br /&gt;
	}&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=UMV&amp;diff=3935</id>
		<title>UMV</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=UMV&amp;diff=3935"/>
				<updated>2010-05-21T21:11:01Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: /* Visual Concept */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Title==&lt;br /&gt;
You Music Video (uMV)&lt;br /&gt;
==Description==&lt;br /&gt;
* Motivation&lt;br /&gt;
&lt;br /&gt;
I&amp;#039;ve had interest in rotoscoping and animation in videos and dance for a while - and I&amp;#039;m interesting in mixing them, live.&lt;br /&gt;
&lt;br /&gt;
* Interactive paradigm&lt;br /&gt;
&lt;br /&gt;
As the person dances/moves, animation or other features will react to their movement, enhancing it on video, and basically creating a music video on the spot.&lt;br /&gt;
&lt;br /&gt;
* Technical Description&lt;br /&gt;
&lt;br /&gt;
The person would be caught and tracked on camera, and we could use frame differencing to track the magnitude of his or her movements and the pre-coded/drawn animations would react accordingly.&lt;br /&gt;
Background images can be added and changed over time to improve the effect.&lt;br /&gt;
&lt;br /&gt;
==Visual Concept==&lt;br /&gt;
&lt;br /&gt;
* Reference: &lt;br /&gt;
http://www.motiontheory.com/work/nike_presto-04&lt;br /&gt;
&lt;br /&gt;
View video &amp;#039;Urban Canvas&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
http://www.motiontheory.com/work/nike_flow&lt;br /&gt;
&lt;br /&gt;
View video &amp;#039;Flow&amp;#039;.&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=UMV&amp;diff=3934</id>
		<title>UMV</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=UMV&amp;diff=3934"/>
				<updated>2010-05-21T21:10:49Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: /* Visual Concept */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Title==&lt;br /&gt;
You Music Video (uMV)&lt;br /&gt;
==Description==&lt;br /&gt;
* Motivation&lt;br /&gt;
&lt;br /&gt;
I&amp;#039;ve had interest in rotoscoping and animation in videos and dance for a while - and I&amp;#039;m interesting in mixing them, live.&lt;br /&gt;
&lt;br /&gt;
* Interactive paradigm&lt;br /&gt;
&lt;br /&gt;
As the person dances/moves, animation or other features will react to their movement, enhancing it on video, and basically creating a music video on the spot.&lt;br /&gt;
&lt;br /&gt;
* Technical Description&lt;br /&gt;
&lt;br /&gt;
The person would be caught and tracked on camera, and we could use frame differencing to track the magnitude of his or her movements and the pre-coded/drawn animations would react accordingly.&lt;br /&gt;
Background images can be added and changed over time to improve the effect.&lt;br /&gt;
&lt;br /&gt;
==Visual Concept==&lt;br /&gt;
&lt;br /&gt;
* Reference: &lt;br /&gt;
http://www.motiontheory.com/work/nike_presto-04&lt;br /&gt;
View video &amp;#039;Urban Canvas&amp;#039;.&lt;br /&gt;
http://www.motiontheory.com/work/nike_flow&lt;br /&gt;
View video &amp;#039;Flow&amp;#039;.&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=UMV&amp;diff=3931</id>
		<title>UMV</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=UMV&amp;diff=3931"/>
				<updated>2010-05-21T01:13:21Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: New page: ==Title== You Music Video (uMV) ==Description== * Motivation  I&amp;#039;ve had interest in rotoscoping and animation in videos and dance for a while - and I&amp;#039;m interesting in mixing them, live.  * ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Title==&lt;br /&gt;
You Music Video (uMV)&lt;br /&gt;
==Description==&lt;br /&gt;
* Motivation&lt;br /&gt;
&lt;br /&gt;
I&amp;#039;ve had interest in rotoscoping and animation in videos and dance for a while - and I&amp;#039;m interesting in mixing them, live.&lt;br /&gt;
&lt;br /&gt;
* Interactive paradigm&lt;br /&gt;
&lt;br /&gt;
As the person dances/moves, animation or other features will react to their movement, enhancing it on video, and basically creating a music video on the spot.&lt;br /&gt;
&lt;br /&gt;
* Technical Description&lt;br /&gt;
&lt;br /&gt;
The person would be caught and tracked on camera, and we could use frame differencing to track the magnitude of his or her movements and the pre-coded/drawn animations would react accordingly.&lt;br /&gt;
Background images can be added and changed over time to improve the effect.&lt;br /&gt;
&lt;br /&gt;
==Visual Concept==&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=Classes/2010/VIS145B&amp;diff=3930</id>
		<title>Classes/2010/VIS145B</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=Classes/2010/VIS145B&amp;diff=3930"/>
				<updated>2010-05-21T01:07:47Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: /* Final Projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Related Links:==&lt;br /&gt;
&lt;br /&gt;
[http://www.bodybuildingrevealed.com/&amp;#039;&amp;#039;&amp;#039;body building&amp;#039;&amp;#039;&amp;#039;]&lt;br /&gt;
&lt;br /&gt;
== Time and Process Based Digital Media II ==&lt;br /&gt;
Time: Thursdays 3:30-6:20pm, VAF 228&lt;br /&gt;
&lt;br /&gt;
This class is an advanced study and portfolio project course centered on the use of hardware and software to create interactive and time-based art.  These projects can take many forms—interactive installations, dynamic visualizations/sonifications, printed renderings—chosen by the students.  This will not be a course of technical instruction—rather we will consider technical and conceptual issues in tandem, supplementing discussions and activities with specific technical instruction where necessary.  There is a strong emphasis on the development and articulation of personal directions of research by the students in the course. &lt;br /&gt;
&lt;br /&gt;
I would like to split the reading/homework responsibility for two parts of the class.  In the first half of the term I will present a series of works and readings covering my particular interests--the intersections of social performance, embodied experience, and cognition.  In the latter half of the class (after the midterm) you all will do the presentations on topics of your choosing.  Working individually or in small groups, you will provide us with some conceptual provocation (reading material) covering topics you intend to engage with your final, and you will lead a discussion on technical and conceptual issues.  Reading and critical writing, in response to text and works you present and those I present, are integral to this course.&lt;br /&gt;
&lt;br /&gt;
The schedule is a living document and will be revised over the period of the course.&lt;br /&gt;
&lt;br /&gt;
== Instructor ==&lt;br /&gt;
Robert Twomey&lt;br /&gt;
&lt;br /&gt;
rtwomey@ucsd.edu&lt;br /&gt;
*http://roberttwomey.com&lt;br /&gt;
*http://experimentalgamelab.net&lt;br /&gt;
*http://crca.ucsd.edu&lt;br /&gt;
&lt;br /&gt;
Office Hours: Wednesday 3-4pm, Atkinson Hall Rm 1601 (CRCA research neighborhood).  Please e-mail me if you plan to attend.&lt;br /&gt;
&lt;br /&gt;
== Grading ==&lt;br /&gt;
*Midterm Project - 30%&lt;br /&gt;
*Final Project - 40%&lt;br /&gt;
*Presentations - 10%&lt;br /&gt;
*Readings - 10%&lt;br /&gt;
*Participation - 10%&lt;br /&gt;
&lt;br /&gt;
=== Presentations ===&lt;br /&gt;
(1) Short presentation on your work in the second week of class.  This should be a statement of your interests, direction, goals with media art.  Present examples from your own work which you feel strongly about, and which best represent your interests and trajectory.  Present examples of other artist&amp;#039;s work that serve as models for the kind of work you would like to make. (5-10 minutes each)&lt;br /&gt;
&lt;br /&gt;
(2) Medium presentation on final projects in the second semester of the course (weeks 7-9).  This is the portion of the class where you dictate the reading and the discussion.  If you are presenting on a given week, you need to provide us with a reading 1 week in advance.  We will sign up for those time slots in week 6, just after the midterm. (10-15 minutes)&lt;br /&gt;
&lt;br /&gt;
=== Reading Responses ===&lt;br /&gt;
These are written summaries and critical responses to materials assigned for out of class viewing.  Things to consider: What points does the author make?  Do you buy their assumptions or agree with their conclusions?  Reading responses will be printed and turned in to the instructor at the beginning of class.  Generally these should be 1 page long.&lt;br /&gt;
&lt;br /&gt;
=== Projects ===&lt;br /&gt;
Midterm and final projects will be graded on concept, effort, and realization. Formal proposals are a necessary component of the process so take them seriously.  Make the effort to get started early and seek the help you need--we want to see finished, well-considered pieces for the midterm and final. Additionally, you will need to submit documentation of the project after completion which includes images, video, and source code where applicable.  These materials (proposals and documentation) will all be posted to the wiki.&lt;br /&gt;
=== Documentation Policy ===&lt;br /&gt;
*section on your project&lt;br /&gt;
*source code&lt;br /&gt;
*image/video documentation.  5 images or 5 videos.&lt;br /&gt;
*descriptive writing (on intent, motivation, context)&lt;br /&gt;
&lt;br /&gt;
=== Attendance ===&lt;br /&gt;
Attendance is mandatory. Each unexcused absence will drop your final grade one letter.  There are only 10 weeks of class, please come to them all.&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
=== Week 1 - Intro ===&lt;br /&gt;
*Introductions&lt;br /&gt;
*Scope of course, interests, technical possibilities.&lt;br /&gt;
*My work.&lt;br /&gt;
*Watch: We Live In Public.  2009. (excerpts)&lt;br /&gt;
*In class: personal page on wiki. [http://www.trsp.net/teaching/gamemod/ game-mod exercise]. [http://www.trsp.net/teaching/gamemod/gamemod_breakout_source_en.zip download link]&lt;br /&gt;
*Read: [http://www.nyu.edu/projects/xdesign/mainmenu/archive_tangible.html Against Virtualized Information], [http://www.nyu.edu/projects/xdesign/mainmenu/archive_analtictech.html Novel Analytic Techniques], and [http://www.nyu.edu/projects/xdesign/mainmenu/archive_infocounts.html What Information Counts?] by [http://www.environmentalhealthclinic.net/people/natalie-jeremijenko/ Natalie Jeremijenko]. &lt;br /&gt;
*Read: [http://www.yalealumnimagazine.com/issues/2004_03/jeremijenko.html An Engineer for the Avante Garde]&lt;br /&gt;
*Read: [http://www.worldchanging.com/archives/001450.html Natalie Jeremijenko The WorldChanging Interview]&lt;br /&gt;
*Read: [http://tech90s.walkerart.org/nj/transcript/nj_01.html Database Politics and Social Simulations], good background on her earlier artwork.&lt;br /&gt;
&lt;br /&gt;
=== Week 2 - Student Research Interests ===&lt;br /&gt;
*Due: 1 page on Jeremijenko. &lt;br /&gt;
*Presentations on your work.&lt;br /&gt;
*Read: [http://www.flong.com/texts/essays/essay_cvad/ Computer Vision for Artists and Designers: Pedagogic Tools and Techniques for Novice Programmers] Golan Levin. &amp;#039;&amp;#039;pay particular attention to part II. ELEMENTARY COMPUTER VISION TECHNIQUES.  we are going to try these in class next week.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Week 3 - Computer Vision / Human Perception ===&lt;br /&gt;
*Due: Nothing. Read the Golan Levin piece, but no written response.&lt;br /&gt;
*Discuss:&lt;br /&gt;
**Myron Kreuger. Video Place. 1989 [http://www.youtube.com/watch?v=dqZyZrN3Pl0]&lt;br /&gt;
**Text Rain. Camille Utterback &amp;amp; Romy Achituv. 1999. [http://www.youtube.com/watch?v=toWFvXHghDk] [http://www.camilleutterback.com/]&lt;br /&gt;
**Very Nervous System.  1982-1991. [http://vimeo.com/8120954]&lt;br /&gt;
**Suicide Box.  Bureau of Inverse Technology.  1996. (13:00)&lt;br /&gt;
**Marie Sester. ACCESS.  2003. [http://accessproject.net]&lt;br /&gt;
**Messa di Voce. Golan Levin and Zach Lieberman with Jaap Blonk and Joan La Barbara. 2003.  [http://www.flong.com/projects/messa/] [http://www.tmema.org/messa/messa.html]&lt;br /&gt;
**Seen.  David Rokeby.  2002.  [http://vimeo.com/6012986]&lt;br /&gt;
**Sorting Daemon. David Rokeby. 2003. [http://homepage.mac.com/davidrokeby/sorting.html]&lt;br /&gt;
**Cheese.  Christian Moller. 2003. [http://www.christian-moeller.com/display.php?project_id=36] made in collaboration with UCSD  [http://mplab.ucsd.edu/wordpress/ Machine Perception Lab]&lt;br /&gt;
**Eyewriter. 2009 [http://www.eyewriter.org/]&lt;br /&gt;
**Saccade. 2010 [http://roberttwomey.com/saccade] (in progress)&lt;br /&gt;
*Discuss: &lt;br /&gt;
**thresholding&lt;br /&gt;
**frame difference&lt;br /&gt;
**OpenCV - [http://ubaa.net/shared/processing/opencv/ download] [http://www.cs.unc.edu/Research/stc/FAQs/OpenCV/OpenCVReferenceManual.pdf reference manual].  If you are getting this for your computer, be sure to get OpenCV, the OpenCV Processing Library, and the OpenCV Processing Examples (three separate downloads).&lt;br /&gt;
**face recognition&lt;br /&gt;
*In Class:&lt;br /&gt;
**Working alone or in small groups, do experiments with video processing and computer vision.&lt;br /&gt;
&lt;br /&gt;
=== Week 4 - Computer Vision Work ===&lt;br /&gt;
* In Class:&lt;br /&gt;
** Work on computer vision projects&lt;br /&gt;
** Talk about midterm projects.&lt;br /&gt;
&lt;br /&gt;
=== Week 5 - Midterm Workshop ===&lt;br /&gt;
*Due: Midterm project proposal.&lt;br /&gt;
**Working individually or in small groups (2-3 people), produce an interactive piece that bridges the gap between screen space and physical space.  There are many ways to do this--using image-based computer vision techniques, game controllers, audio input, or other physical hardware (Arduino?).  Think about the parameters of interaction--are you documenting viewer&amp;#039;s behavior (unknown to them), are you taking a familiar form (such as a video game) and tweaking it in some way, are you intervening in social space?  Think about what form the output will take.  In your one page proposal, describe the input(s), output(s), and dynamic of interaction, as well as some statement of your motivation.  Why is this a valuable or interesting project?  In addition to the written description, produce supporting visual materials.  These should be two functional diagram images and two visual/aesthetic images.  The functional diagrams should show the necessary software and hardware components and explain how the interaction will occur.  The aesthetic diagrams will give us a sense of what it will look like, how the output will appear.  Make a page for your project (including a title) in the Midterm Projects section at the bottom of this page, upload the necessary materials and embed them in that page.  This proposal is due in class next week where we will critique and workshop the ideas.&lt;br /&gt;
*In class:&lt;br /&gt;
**Workshop midterm project ideas. (45 minutes)&lt;br /&gt;
**Work on midterm projects. &lt;br /&gt;
*NOTE: Best of ICAM from Candy Harris.  There will be an install in the annex here at Mandeville and presentations at the Experimental Theater in the CPMC (music building). They should come see what they are going to have to live up to for their final projects. Plus the keynote speakers (ICAM alumns) always have great info about career paths after graduation.&lt;br /&gt;
&lt;br /&gt;
=== Week 6 ===&lt;br /&gt;
In class work on midterms.&lt;br /&gt;
&lt;br /&gt;
=== Week 7 - Midterm Critiques ===&lt;br /&gt;
In class critique of midterms.&lt;br /&gt;
&lt;br /&gt;
=== Week 8 ===&lt;br /&gt;
&lt;br /&gt;
Due: Written response (1 page) to one of your classmate&amp;#039;s projects.&lt;br /&gt;
&lt;br /&gt;
In Class: Draft final project proposal and post to wiki by the end of class.  In class discussion as needed.&lt;br /&gt;
&lt;br /&gt;
=== Week 9 ===&lt;br /&gt;
work on finals&lt;br /&gt;
&lt;br /&gt;
=== Week 10 - Final Critiques ===&lt;br /&gt;
In-class critiques of finals.&lt;br /&gt;
&lt;br /&gt;
=== Finals Week ===&lt;br /&gt;
Final documentation due.&lt;br /&gt;
&lt;br /&gt;
== Topics ==&lt;br /&gt;
To Be Scheduled&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Performance for the camera, for the web&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Discuss Chatroulette. Facebook, Twitter, Youtube.  Attention in the social net.&lt;br /&gt;
*ManyCam [http://www.manycam.com/]&lt;br /&gt;
*PS3 eye&lt;br /&gt;
*jennicam [http://www.wired.com/thisdayintech/2010/04/0414jennicam-launches wired]&lt;br /&gt;
*Lonelygirl15 [http://www.youtube.com/watch?v=-goXKtd6cPo youtube] [http://www.wired.com/wired/archive/14.12/lonelygirl.html article]&lt;br /&gt;
*Discuss telematic perfromance. &lt;br /&gt;
* Justin.tv [http://www.justin.tv/#r=s7RVqBU~]&lt;br /&gt;
*Read: The Presentation of Self in Everyday Life (excerpt).  Erving Goffman. 1959.&lt;br /&gt;
*Read: Performance: A Critical Introduction (excerpt).  Richard Carlson. 2004.&lt;br /&gt;
*Do: Intervention in social circuits.  Chatroulette/Facebook/Youtube exercise.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Social Networks/Web 2.0&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Read: Protocol, Control, and Networks by Alexander Galloway and Eugene Thacker.  Grey Room 17, Fall 2004 p 6-29.  &lt;br /&gt;
*Read: DIGITAL MAOISM: The Hazards of the New Online Collectivism.  Jaron Lanier.  2006.&lt;br /&gt;
*Watch: MediatedCultures @ Kansas State http://mediatedcultures.net/mediatedculture.htm&lt;br /&gt;
*Datamining/Complex Networks, node-edge graphing.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Digital Memory/Personal Media: Where do we exist and how do we remember?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Read: Mediated Memories in the Digital Age (excerpt). Jose van Dijck. 2007.&lt;br /&gt;
*Read: Are you sure you want to do this?  Matthias Fuchs 1994.&lt;br /&gt;
*Read: Delete: The Virtue of Forgetting in the Digital Age (excerpt). Viktor Mayer-Schonberger. 2009.&lt;br /&gt;
*Flickr.com, Facebook&lt;br /&gt;
*Discuss: My Pocket. Burak Arikan. 2008. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Cognition + Creativity&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Generative Art vs. Computational Creativity&lt;br /&gt;
*Casy Reas&lt;br /&gt;
*Processing.org&lt;br /&gt;
*Tom Shannon. [http://www.wired.com/magazine/2010/03/pl_arts_pendulum/all/1]&lt;br /&gt;
*Read: Triumph of the Cyborg Composer. &lt;br /&gt;
*Read: How to draw three people in a garden.  1988.&lt;br /&gt;
*Read: Shades of Computational Evocation and Meaning: The GRIOT System and Improvisational Poetry Generation. 2006.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Artificial Intelligence&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Read: Expressive Processing (excerpt), Noah Wardrip Fruin, 2009. &lt;br /&gt;
*Read: Elephants Don&amp;#039;t Play Chess, Rodney Brooks, 1990. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Appropriation and Remix&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Read: The Fiction of Memory.  New York Times, March 12, 2010.  Luc Sante&lt;br /&gt;
*Read: Jonatham Lethem.  The Ecstasy of Influence. Harpers Magazine.  2007. &lt;br /&gt;
*Remix Culture.  Lev.&lt;br /&gt;
*God&amp;#039;s Little Toys: Confessions of a cut &amp;amp; paste artist.  William Gibson. 2005. *http://www.wired.com/wired/archive/13.07/gibson.html&lt;br /&gt;
*Reality Hunger: A Manifesto.  David Shields. 2010.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Materiality in the information age.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Tangible interfaces, haptic feedback. &lt;br /&gt;
*Read: Evocative Objects: Things We Think With (excerpt). Sherry Turkle, 2007. &lt;br /&gt;
*Read: New Media and the Forensic Imagination (excerpt). Matthew Kirschenbaum. 2008.&lt;br /&gt;
*View: BIT Plane.  &lt;br /&gt;
*View: Garbage Cubes&lt;br /&gt;
*Discuss techniques of markerless tracking, augmented reality, QR codes, etc.  *Online/Offline Space.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Embodiment&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Computing with bodies, engineered bodies&lt;br /&gt;
*tactile media, haptic interface&lt;br /&gt;
*embodied perception&lt;br /&gt;
*Read: Stelarc. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Self-Image&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Read: Self/Image: Technology, Representation, and the Contemporary Subject (excerpt).  Amelia Jones, 2006.&lt;br /&gt;
*Do: Forensic Photoshop Exercise.&lt;br /&gt;
*http://www.flickr.com/photos/dryponder/sets/72157623726710218/&lt;br /&gt;
*http://nymag.com/daily/intel/2010/02/obama_being_forced_to_look_at.html#photo=1&lt;br /&gt;
*http://niccageaseveryone.blogspot.com/&lt;br /&gt;
*http://bubleraptor.tumblr.com/&lt;br /&gt;
*photoshop free Marie Claire issue: http://jezebel.com/5511507/so-long-as-your-face-looks-alright-everything-else-can-be-photoshopped&lt;br /&gt;
&lt;br /&gt;
== Places to Find Art ==&lt;br /&gt;
* http://we-make-money-not-art.com/&lt;br /&gt;
* http://www.isea-web.org/, http://www.isea2010ruhr.org/&lt;br /&gt;
* http://www.transmediale.de/en&lt;br /&gt;
* http://01sj.org/&lt;br /&gt;
* http://www.file.org.br/&lt;br /&gt;
* http://www.aec.at/festival_about_en.php&lt;br /&gt;
* http://www.sciencegallery.com/lightwave09&lt;br /&gt;
* Institutions that Sponsor/Show Media Art&lt;br /&gt;
** Eyebeam New York City&lt;br /&gt;
** New Museum/Rhizome.org http://rhizome.org&lt;br /&gt;
** HarvestWorks&lt;br /&gt;
** Machine Project, Los Angeles.&lt;br /&gt;
&lt;br /&gt;
== Midterm Projects ==&lt;br /&gt;
Make pages here. &lt;br /&gt;
* [[DummyProject | Dummy Project]]&lt;br /&gt;
* [[MidtermProject| MotionDJ - Leilani Martin]]&lt;br /&gt;
* [[What&amp;#039;s For Lunch, Kids? by Kelley Kim| &amp;#039;&amp;#039;What&amp;#039;s For Lunch, Kids?&amp;#039;&amp;#039;   - Kelley Kim]]&lt;br /&gt;
* [[Virtual Walk? - Joeny Thipsidakhom]]&lt;br /&gt;
* [[Untitled Midterm| Untitled - Jezreel Callejas]]&lt;br /&gt;
* [[Midterm Project - Tony Lu | Virtual Maze - Tony Lu]]&lt;br /&gt;
* [[Midterm Project  | SayCHEESE - Joel and Jenny Chang]]&lt;br /&gt;
* [[Carnival Ride| Carnival Ride - Christina Sanchez and Jennifer Sunga]]&lt;br /&gt;
* [[Hunted - Anna Lin, Jenny Wang, and Ellen Huang]]&lt;br /&gt;
* [[Wii - remote composer - Javi Lee]]&lt;br /&gt;
* [[Social Creature | Boo (formerly Social Creature) - Jet Antonio]]&lt;br /&gt;
* [[Sound Sketch - Emilio Marcelino, Greg Parsons, and Ben Brickley]]&lt;br /&gt;
&lt;br /&gt;
== Final Projects ==&lt;br /&gt;
* [[Aquarium| Aquarium - Jezreel Callejas]]&lt;br /&gt;
* [[Not So Lost| Not So Lost - Ben Brickely, Emilio Marcelino and Greg Parsons]]&lt;br /&gt;
* [[Dance in the Dark - Anna Lin, Jenny Wang and Ellen Huang]]&lt;br /&gt;
* [[Inkling One | Inkling One - Jet Antonio]]&lt;br /&gt;
* [[Untitled (for now) - Joeny Thipsidakhom]]&lt;br /&gt;
* [[uMV | uMV - Tony Lu]]&lt;br /&gt;
&lt;br /&gt;
== Student Pages ==&lt;br /&gt;
Click &amp;quot;edit&amp;quot; on the right to add your own page below. &lt;br /&gt;
* [[Students/RobertTwomey | RobertTwomey]]&lt;br /&gt;
* [[Students/Javier Lee | Javier Lee]]&lt;br /&gt;
* [[Students/Jenny Wang | Jenny Wang]]&lt;br /&gt;
* [[Students/Joeny Thipsidakhom | Joeny Thipsidakhom]]&lt;br /&gt;
* [[Students/Kuan-Ting Lu | Tony Lu]]&lt;br /&gt;
* [[Students/Jezreel Callejas| Jezreel Callejas]]&lt;br /&gt;
* [[Students/ChristinaSanchez| Christina Sanchez]]&lt;br /&gt;
* [[Students/BenBrickley | BenBrickley]]&lt;br /&gt;
* [[Students/Ellen Huang | Ellen Huang]]&lt;br /&gt;
* [[Students/Kelley Kim | Kelley Kim]]&lt;br /&gt;
* [[Students/EmilioMarcelino | EmilioMarcelino]]&lt;br /&gt;
* [[Students/Anna Lin | Anna Lin]]&lt;br /&gt;
* [[Student/Jenny Chang | Jenny Chang]]&lt;br /&gt;
* [[Student/Jet Antonio | Jet Antonio]]&lt;br /&gt;
* [[Students/GregoryParsons | Gregory Parsons]]&lt;br /&gt;
* [[Students/Jennifer Sunga | Jennifer Sunga]]&lt;br /&gt;
* [[Students/LeilaniMartin | Leilani Martin]]&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=Classes/2010/VIS145B&amp;diff=3929</id>
		<title>Classes/2010/VIS145B</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=Classes/2010/VIS145B&amp;diff=3929"/>
				<updated>2010-05-21T01:07:25Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: /* Final Projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Related Links:==&lt;br /&gt;
&lt;br /&gt;
[http://www.bodybuildingrevealed.com/&amp;#039;&amp;#039;&amp;#039;body building&amp;#039;&amp;#039;&amp;#039;]&lt;br /&gt;
&lt;br /&gt;
== Time and Process Based Digital Media II ==&lt;br /&gt;
Time: Thursdays 3:30-6:20pm, VAF 228&lt;br /&gt;
&lt;br /&gt;
This class is an advanced study and portfolio project course centered on the use of hardware and software to create interactive and time-based art.  These projects can take many forms—interactive installations, dynamic visualizations/sonifications, printed renderings—chosen by the students.  This will not be a course of technical instruction—rather we will consider technical and conceptual issues in tandem, supplementing discussions and activities with specific technical instruction where necessary.  There is a strong emphasis on the development and articulation of personal directions of research by the students in the course. &lt;br /&gt;
&lt;br /&gt;
I would like to split the reading/homework responsibility for two parts of the class.  In the first half of the term I will present a series of works and readings covering my particular interests--the intersections of social performance, embodied experience, and cognition.  In the latter half of the class (after the midterm) you all will do the presentations on topics of your choosing.  Working individually or in small groups, you will provide us with some conceptual provocation (reading material) covering topics you intend to engage with your final, and you will lead a discussion on technical and conceptual issues.  Reading and critical writing, in response to text and works you present and those I present, are integral to this course.&lt;br /&gt;
&lt;br /&gt;
The schedule is a living document and will be revised over the period of the course.&lt;br /&gt;
&lt;br /&gt;
== Instructor ==&lt;br /&gt;
Robert Twomey&lt;br /&gt;
&lt;br /&gt;
rtwomey@ucsd.edu&lt;br /&gt;
*http://roberttwomey.com&lt;br /&gt;
*http://experimentalgamelab.net&lt;br /&gt;
*http://crca.ucsd.edu&lt;br /&gt;
&lt;br /&gt;
Office Hours: Wednesday 3-4pm, Atkinson Hall Rm 1601 (CRCA research neighborhood).  Please e-mail me if you plan to attend.&lt;br /&gt;
&lt;br /&gt;
== Grading ==&lt;br /&gt;
*Midterm Project - 30%&lt;br /&gt;
*Final Project - 40%&lt;br /&gt;
*Presentations - 10%&lt;br /&gt;
*Readings - 10%&lt;br /&gt;
*Participation - 10%&lt;br /&gt;
&lt;br /&gt;
=== Presentations ===&lt;br /&gt;
(1) Short presentation on your work in the second week of class.  This should be a statement of your interests, direction, goals with media art.  Present examples from your own work which you feel strongly about, and which best represent your interests and trajectory.  Present examples of other artist&amp;#039;s work that serve as models for the kind of work you would like to make. (5-10 minutes each)&lt;br /&gt;
&lt;br /&gt;
(2) Medium presentation on final projects in the second semester of the course (weeks 7-9).  This is the portion of the class where you dictate the reading and the discussion.  If you are presenting on a given week, you need to provide us with a reading 1 week in advance.  We will sign up for those time slots in week 6, just after the midterm. (10-15 minutes)&lt;br /&gt;
&lt;br /&gt;
=== Reading Responses ===&lt;br /&gt;
These are written summaries and critical responses to materials assigned for out of class viewing.  Things to consider: What points does the author make?  Do you buy their assumptions or agree with their conclusions?  Reading responses will be printed and turned in to the instructor at the beginning of class.  Generally these should be 1 page long.&lt;br /&gt;
&lt;br /&gt;
=== Projects ===&lt;br /&gt;
Midterm and final projects will be graded on concept, effort, and realization. Formal proposals are a necessary component of the process so take them seriously.  Make the effort to get started early and seek the help you need--we want to see finished, well-considered pieces for the midterm and final. Additionally, you will need to submit documentation of the project after completion which includes images, video, and source code where applicable.  These materials (proposals and documentation) will all be posted to the wiki.&lt;br /&gt;
=== Documentation Policy ===&lt;br /&gt;
*section on your project&lt;br /&gt;
*source code&lt;br /&gt;
*image/video documentation.  5 images or 5 videos.&lt;br /&gt;
*descriptive writing (on intent, motivation, context)&lt;br /&gt;
&lt;br /&gt;
=== Attendance ===&lt;br /&gt;
Attendance is mandatory. Each unexcused absence will drop your final grade one letter.  There are only 10 weeks of class, please come to them all.&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
=== Week 1 - Intro ===&lt;br /&gt;
*Introductions&lt;br /&gt;
*Scope of course, interests, technical possibilities.&lt;br /&gt;
*My work.&lt;br /&gt;
*Watch: We Live In Public.  2009. (excerpts)&lt;br /&gt;
*In class: personal page on wiki. [http://www.trsp.net/teaching/gamemod/ game-mod exercise]. [http://www.trsp.net/teaching/gamemod/gamemod_breakout_source_en.zip download link]&lt;br /&gt;
*Read: [http://www.nyu.edu/projects/xdesign/mainmenu/archive_tangible.html Against Virtualized Information], [http://www.nyu.edu/projects/xdesign/mainmenu/archive_analtictech.html Novel Analytic Techniques], and [http://www.nyu.edu/projects/xdesign/mainmenu/archive_infocounts.html What Information Counts?] by [http://www.environmentalhealthclinic.net/people/natalie-jeremijenko/ Natalie Jeremijenko]. &lt;br /&gt;
*Read: [http://www.yalealumnimagazine.com/issues/2004_03/jeremijenko.html An Engineer for the Avante Garde]&lt;br /&gt;
*Read: [http://www.worldchanging.com/archives/001450.html Natalie Jeremijenko The WorldChanging Interview]&lt;br /&gt;
*Read: [http://tech90s.walkerart.org/nj/transcript/nj_01.html Database Politics and Social Simulations], good background on her earlier artwork.&lt;br /&gt;
&lt;br /&gt;
=== Week 2 - Student Research Interests ===&lt;br /&gt;
*Due: 1 page on Jeremijenko. &lt;br /&gt;
*Presentations on your work.&lt;br /&gt;
*Read: [http://www.flong.com/texts/essays/essay_cvad/ Computer Vision for Artists and Designers: Pedagogic Tools and Techniques for Novice Programmers] Golan Levin. &amp;#039;&amp;#039;pay particular attention to part II. ELEMENTARY COMPUTER VISION TECHNIQUES.  we are going to try these in class next week.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Week 3 - Computer Vision / Human Perception ===&lt;br /&gt;
*Due: Nothing. Read the Golan Levin piece, but no written response.&lt;br /&gt;
*Discuss:&lt;br /&gt;
**Myron Kreuger. Video Place. 1989 [http://www.youtube.com/watch?v=dqZyZrN3Pl0]&lt;br /&gt;
**Text Rain. Camille Utterback &amp;amp; Romy Achituv. 1999. [http://www.youtube.com/watch?v=toWFvXHghDk] [http://www.camilleutterback.com/]&lt;br /&gt;
**Very Nervous System.  1982-1991. [http://vimeo.com/8120954]&lt;br /&gt;
**Suicide Box.  Bureau of Inverse Technology.  1996. (13:00)&lt;br /&gt;
**Marie Sester. ACCESS.  2003. [http://accessproject.net]&lt;br /&gt;
**Messa di Voce. Golan Levin and Zach Lieberman with Jaap Blonk and Joan La Barbara. 2003.  [http://www.flong.com/projects/messa/] [http://www.tmema.org/messa/messa.html]&lt;br /&gt;
**Seen.  David Rokeby.  2002.  [http://vimeo.com/6012986]&lt;br /&gt;
**Sorting Daemon. David Rokeby. 2003. [http://homepage.mac.com/davidrokeby/sorting.html]&lt;br /&gt;
**Cheese.  Christian Moller. 2003. [http://www.christian-moeller.com/display.php?project_id=36] made in collaboration with UCSD  [http://mplab.ucsd.edu/wordpress/ Machine Perception Lab]&lt;br /&gt;
**Eyewriter. 2009 [http://www.eyewriter.org/]&lt;br /&gt;
**Saccade. 2010 [http://roberttwomey.com/saccade] (in progress)&lt;br /&gt;
*Discuss: &lt;br /&gt;
**thresholding&lt;br /&gt;
**frame difference&lt;br /&gt;
**OpenCV - [http://ubaa.net/shared/processing/opencv/ download] [http://www.cs.unc.edu/Research/stc/FAQs/OpenCV/OpenCVReferenceManual.pdf reference manual].  If you are getting this for your computer, be sure to get OpenCV, the OpenCV Processing Library, and the OpenCV Processing Examples (three separate downloads).&lt;br /&gt;
**face recognition&lt;br /&gt;
*In Class:&lt;br /&gt;
**Working alone or in small groups, do experiments with video processing and computer vision.&lt;br /&gt;
&lt;br /&gt;
=== Week 4 - Computer Vision Work ===&lt;br /&gt;
* In Class:&lt;br /&gt;
** Work on computer vision projects&lt;br /&gt;
** Talk about midterm projects.&lt;br /&gt;
&lt;br /&gt;
=== Week 5 - Midterm Workshop ===&lt;br /&gt;
*Due: Midterm project proposal.&lt;br /&gt;
**Working individually or in small groups (2-3 people), produce an interactive piece that bridges the gap between screen space and physical space.  There are many ways to do this--using image-based computer vision techniques, game controllers, audio input, or other physical hardware (Arduino?).  Think about the parameters of interaction--are you documenting viewer&amp;#039;s behavior (unknown to them), are you taking a familiar form (such as a video game) and tweaking it in some way, are you intervening in social space?  Think about what form the output will take.  In your one page proposal, describe the input(s), output(s), and dynamic of interaction, as well as some statement of your motivation.  Why is this a valuable or interesting project?  In addition to the written description, produce supporting visual materials.  These should be two functional diagram images and two visual/aesthetic images.  The functional diagrams should show the necessary software and hardware components and explain how the interaction will occur.  The aesthetic diagrams will give us a sense of what it will look like, how the output will appear.  Make a page for your project (including a title) in the Midterm Projects section at the bottom of this page, upload the necessary materials and embed them in that page.  This proposal is due in class next week where we will critique and workshop the ideas.&lt;br /&gt;
*In class:&lt;br /&gt;
**Workshop midterm project ideas. (45 minutes)&lt;br /&gt;
**Work on midterm projects. &lt;br /&gt;
*NOTE: Best of ICAM from Candy Harris.  There will be an install in the annex here at Mandeville and presentations at the Experimental Theater in the CPMC (music building). They should come see what they are going to have to live up to for their final projects. Plus the keynote speakers (ICAM alumns) always have great info about career paths after graduation.&lt;br /&gt;
&lt;br /&gt;
=== Week 6 ===&lt;br /&gt;
In class work on midterms.&lt;br /&gt;
&lt;br /&gt;
=== Week 7 - Midterm Critiques ===&lt;br /&gt;
In class critique of midterms.&lt;br /&gt;
&lt;br /&gt;
=== Week 8 ===&lt;br /&gt;
&lt;br /&gt;
Due: Written response (1 page) to one of your classmate&amp;#039;s projects.&lt;br /&gt;
&lt;br /&gt;
In Class: Draft final project proposal and post to wiki by the end of class.  In class discussion as needed.&lt;br /&gt;
&lt;br /&gt;
=== Week 9 ===&lt;br /&gt;
work on finals&lt;br /&gt;
&lt;br /&gt;
=== Week 10 - Final Critiques ===&lt;br /&gt;
In-class critiques of finals.&lt;br /&gt;
&lt;br /&gt;
=== Finals Week ===&lt;br /&gt;
Final documentation due.&lt;br /&gt;
&lt;br /&gt;
== Topics ==&lt;br /&gt;
To Be Scheduled&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Performance for the camera, for the web&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Discuss Chatroulette. Facebook, Twitter, Youtube.  Attention in the social net.&lt;br /&gt;
*ManyCam [http://www.manycam.com/]&lt;br /&gt;
*PS3 eye&lt;br /&gt;
*jennicam [http://www.wired.com/thisdayintech/2010/04/0414jennicam-launches wired]&lt;br /&gt;
*Lonelygirl15 [http://www.youtube.com/watch?v=-goXKtd6cPo youtube] [http://www.wired.com/wired/archive/14.12/lonelygirl.html article]&lt;br /&gt;
*Discuss telematic perfromance. &lt;br /&gt;
* Justin.tv [http://www.justin.tv/#r=s7RVqBU~]&lt;br /&gt;
*Read: The Presentation of Self in Everyday Life (excerpt).  Erving Goffman. 1959.&lt;br /&gt;
*Read: Performance: A Critical Introduction (excerpt).  Richard Carlson. 2004.&lt;br /&gt;
*Do: Intervention in social circuits.  Chatroulette/Facebook/Youtube exercise.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Social Networks/Web 2.0&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Read: Protocol, Control, and Networks by Alexander Galloway and Eugene Thacker.  Grey Room 17, Fall 2004 p 6-29.  &lt;br /&gt;
*Read: DIGITAL MAOISM: The Hazards of the New Online Collectivism.  Jaron Lanier.  2006.&lt;br /&gt;
*Watch: MediatedCultures @ Kansas State http://mediatedcultures.net/mediatedculture.htm&lt;br /&gt;
*Datamining/Complex Networks, node-edge graphing.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Digital Memory/Personal Media: Where do we exist and how do we remember?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Read: Mediated Memories in the Digital Age (excerpt). Jose van Dijck. 2007.&lt;br /&gt;
*Read: Are you sure you want to do this?  Matthias Fuchs 1994.&lt;br /&gt;
*Read: Delete: The Virtue of Forgetting in the Digital Age (excerpt). Viktor Mayer-Schonberger. 2009.&lt;br /&gt;
*Flickr.com, Facebook&lt;br /&gt;
*Discuss: My Pocket. Burak Arikan. 2008. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Cognition + Creativity&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Generative Art vs. Computational Creativity&lt;br /&gt;
*Casy Reas&lt;br /&gt;
*Processing.org&lt;br /&gt;
*Tom Shannon. [http://www.wired.com/magazine/2010/03/pl_arts_pendulum/all/1]&lt;br /&gt;
*Read: Triumph of the Cyborg Composer. &lt;br /&gt;
*Read: How to draw three people in a garden.  1988.&lt;br /&gt;
*Read: Shades of Computational Evocation and Meaning: The GRIOT System and Improvisational Poetry Generation. 2006.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Artificial Intelligence&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Read: Expressive Processing (excerpt), Noah Wardrip Fruin, 2009. &lt;br /&gt;
*Read: Elephants Don&amp;#039;t Play Chess, Rodney Brooks, 1990. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Appropriation and Remix&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Read: The Fiction of Memory.  New York Times, March 12, 2010.  Luc Sante&lt;br /&gt;
*Read: Jonatham Lethem.  The Ecstasy of Influence. Harpers Magazine.  2007. &lt;br /&gt;
*Remix Culture.  Lev.&lt;br /&gt;
*God&amp;#039;s Little Toys: Confessions of a cut &amp;amp; paste artist.  William Gibson. 2005. *http://www.wired.com/wired/archive/13.07/gibson.html&lt;br /&gt;
*Reality Hunger: A Manifesto.  David Shields. 2010.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Materiality in the information age.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Tangible interfaces, haptic feedback. &lt;br /&gt;
*Read: Evocative Objects: Things We Think With (excerpt). Sherry Turkle, 2007. &lt;br /&gt;
*Read: New Media and the Forensic Imagination (excerpt). Matthew Kirschenbaum. 2008.&lt;br /&gt;
*View: BIT Plane.  &lt;br /&gt;
*View: Garbage Cubes&lt;br /&gt;
*Discuss techniques of markerless tracking, augmented reality, QR codes, etc.  *Online/Offline Space.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Embodiment&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Computing with bodies, engineered bodies&lt;br /&gt;
*tactile media, haptic interface&lt;br /&gt;
*embodied perception&lt;br /&gt;
*Read: Stelarc. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Self-Image&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Read: Self/Image: Technology, Representation, and the Contemporary Subject (excerpt).  Amelia Jones, 2006.&lt;br /&gt;
*Do: Forensic Photoshop Exercise.&lt;br /&gt;
*http://www.flickr.com/photos/dryponder/sets/72157623726710218/&lt;br /&gt;
*http://nymag.com/daily/intel/2010/02/obama_being_forced_to_look_at.html#photo=1&lt;br /&gt;
*http://niccageaseveryone.blogspot.com/&lt;br /&gt;
*http://bubleraptor.tumblr.com/&lt;br /&gt;
*photoshop free Marie Claire issue: http://jezebel.com/5511507/so-long-as-your-face-looks-alright-everything-else-can-be-photoshopped&lt;br /&gt;
&lt;br /&gt;
== Places to Find Art ==&lt;br /&gt;
* http://we-make-money-not-art.com/&lt;br /&gt;
* http://www.isea-web.org/, http://www.isea2010ruhr.org/&lt;br /&gt;
* http://www.transmediale.de/en&lt;br /&gt;
* http://01sj.org/&lt;br /&gt;
* http://www.file.org.br/&lt;br /&gt;
* http://www.aec.at/festival_about_en.php&lt;br /&gt;
* http://www.sciencegallery.com/lightwave09&lt;br /&gt;
* Institutions that Sponsor/Show Media Art&lt;br /&gt;
** Eyebeam New York City&lt;br /&gt;
** New Museum/Rhizome.org http://rhizome.org&lt;br /&gt;
** HarvestWorks&lt;br /&gt;
** Machine Project, Los Angeles.&lt;br /&gt;
&lt;br /&gt;
== Midterm Projects ==&lt;br /&gt;
Make pages here. &lt;br /&gt;
* [[DummyProject | Dummy Project]]&lt;br /&gt;
* [[MidtermProject| MotionDJ - Leilani Martin]]&lt;br /&gt;
* [[What&amp;#039;s For Lunch, Kids? by Kelley Kim| &amp;#039;&amp;#039;What&amp;#039;s For Lunch, Kids?&amp;#039;&amp;#039;   - Kelley Kim]]&lt;br /&gt;
* [[Virtual Walk? - Joeny Thipsidakhom]]&lt;br /&gt;
* [[Untitled Midterm| Untitled - Jezreel Callejas]]&lt;br /&gt;
* [[Midterm Project - Tony Lu | Virtual Maze - Tony Lu]]&lt;br /&gt;
* [[Midterm Project  | SayCHEESE - Joel and Jenny Chang]]&lt;br /&gt;
* [[Carnival Ride| Carnival Ride - Christina Sanchez and Jennifer Sunga]]&lt;br /&gt;
* [[Hunted - Anna Lin, Jenny Wang, and Ellen Huang]]&lt;br /&gt;
* [[Wii - remote composer - Javi Lee]]&lt;br /&gt;
* [[Social Creature | Boo (formerly Social Creature) - Jet Antonio]]&lt;br /&gt;
* [[Sound Sketch - Emilio Marcelino, Greg Parsons, and Ben Brickley]]&lt;br /&gt;
&lt;br /&gt;
== Final Projects ==&lt;br /&gt;
* [[Aquarium| Aquarium - Jezreel Callejas]]&lt;br /&gt;
* [[Not So Lost| Not So Lost - Ben Brickely, Emilio Marcelino and Greg Parsons]]&lt;br /&gt;
* [[Dance in the Dark - Anna Lin, Jenny Wang and Ellen Huang]]&lt;br /&gt;
* [[Inkling One | Inkling One - Jet Antonio]]&lt;br /&gt;
* [[Untitled (for now) - Joeny Thipsidakhom]]&lt;br /&gt;
* [[YOU MV | YOU MV - Tony Lu]]&lt;br /&gt;
&lt;br /&gt;
== Student Pages ==&lt;br /&gt;
Click &amp;quot;edit&amp;quot; on the right to add your own page below. &lt;br /&gt;
* [[Students/RobertTwomey | RobertTwomey]]&lt;br /&gt;
* [[Students/Javier Lee | Javier Lee]]&lt;br /&gt;
* [[Students/Jenny Wang | Jenny Wang]]&lt;br /&gt;
* [[Students/Joeny Thipsidakhom | Joeny Thipsidakhom]]&lt;br /&gt;
* [[Students/Kuan-Ting Lu | Tony Lu]]&lt;br /&gt;
* [[Students/Jezreel Callejas| Jezreel Callejas]]&lt;br /&gt;
* [[Students/ChristinaSanchez| Christina Sanchez]]&lt;br /&gt;
* [[Students/BenBrickley | BenBrickley]]&lt;br /&gt;
* [[Students/Ellen Huang | Ellen Huang]]&lt;br /&gt;
* [[Students/Kelley Kim | Kelley Kim]]&lt;br /&gt;
* [[Students/EmilioMarcelino | EmilioMarcelino]]&lt;br /&gt;
* [[Students/Anna Lin | Anna Lin]]&lt;br /&gt;
* [[Student/Jenny Chang | Jenny Chang]]&lt;br /&gt;
* [[Student/Jet Antonio | Jet Antonio]]&lt;br /&gt;
* [[Students/GregoryParsons | Gregory Parsons]]&lt;br /&gt;
* [[Students/Jennifer Sunga | Jennifer Sunga]]&lt;br /&gt;
* [[Students/LeilaniMartin | Leilani Martin]]&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=IDance&amp;diff=3927</id>
		<title>IDance</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=IDance&amp;diff=3927"/>
				<updated>2010-05-21T01:06:23Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: New page: ==Title==  ==Description==&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Title==&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=Classes/2010/VIS145B&amp;diff=3926</id>
		<title>Classes/2010/VIS145B</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=Classes/2010/VIS145B&amp;diff=3926"/>
				<updated>2010-05-21T01:05:47Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: /* Final Projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Related Links:==&lt;br /&gt;
&lt;br /&gt;
[http://www.bodybuildingrevealed.com/&amp;#039;&amp;#039;&amp;#039;body building&amp;#039;&amp;#039;&amp;#039;]&lt;br /&gt;
&lt;br /&gt;
== Time and Process Based Digital Media II ==&lt;br /&gt;
Time: Thursdays 3:30-6:20pm, VAF 228&lt;br /&gt;
&lt;br /&gt;
This class is an advanced study and portfolio project course centered on the use of hardware and software to create interactive and time-based art.  These projects can take many forms—interactive installations, dynamic visualizations/sonifications, printed renderings—chosen by the students.  This will not be a course of technical instruction—rather we will consider technical and conceptual issues in tandem, supplementing discussions and activities with specific technical instruction where necessary.  There is a strong emphasis on the development and articulation of personal directions of research by the students in the course. &lt;br /&gt;
&lt;br /&gt;
I would like to split the reading/homework responsibility for two parts of the class.  In the first half of the term I will present a series of works and readings covering my particular interests--the intersections of social performance, embodied experience, and cognition.  In the latter half of the class (after the midterm) you all will do the presentations on topics of your choosing.  Working individually or in small groups, you will provide us with some conceptual provocation (reading material) covering topics you intend to engage with your final, and you will lead a discussion on technical and conceptual issues.  Reading and critical writing, in response to text and works you present and those I present, are integral to this course.&lt;br /&gt;
&lt;br /&gt;
The schedule is a living document and will be revised over the period of the course.&lt;br /&gt;
&lt;br /&gt;
== Instructor ==&lt;br /&gt;
Robert Twomey&lt;br /&gt;
&lt;br /&gt;
rtwomey@ucsd.edu&lt;br /&gt;
*http://roberttwomey.com&lt;br /&gt;
*http://experimentalgamelab.net&lt;br /&gt;
*http://crca.ucsd.edu&lt;br /&gt;
&lt;br /&gt;
Office Hours: Wednesday 3-4pm, Atkinson Hall Rm 1601 (CRCA research neighborhood).  Please e-mail me if you plan to attend.&lt;br /&gt;
&lt;br /&gt;
== Grading ==&lt;br /&gt;
*Midterm Project - 30%&lt;br /&gt;
*Final Project - 40%&lt;br /&gt;
*Presentations - 10%&lt;br /&gt;
*Readings - 10%&lt;br /&gt;
*Participation - 10%&lt;br /&gt;
&lt;br /&gt;
=== Presentations ===&lt;br /&gt;
(1) Short presentation on your work in the second week of class.  This should be a statement of your interests, direction, goals with media art.  Present examples from your own work which you feel strongly about, and which best represent your interests and trajectory.  Present examples of other artist&amp;#039;s work that serve as models for the kind of work you would like to make. (5-10 minutes each)&lt;br /&gt;
&lt;br /&gt;
(2) Medium presentation on final projects in the second semester of the course (weeks 7-9).  This is the portion of the class where you dictate the reading and the discussion.  If you are presenting on a given week, you need to provide us with a reading 1 week in advance.  We will sign up for those time slots in week 6, just after the midterm. (10-15 minutes)&lt;br /&gt;
&lt;br /&gt;
=== Reading Responses ===&lt;br /&gt;
These are written summaries and critical responses to materials assigned for out of class viewing.  Things to consider: What points does the author make?  Do you buy their assumptions or agree with their conclusions?  Reading responses will be printed and turned in to the instructor at the beginning of class.  Generally these should be 1 page long.&lt;br /&gt;
&lt;br /&gt;
=== Projects ===&lt;br /&gt;
Midterm and final projects will be graded on concept, effort, and realization. Formal proposals are a necessary component of the process so take them seriously.  Make the effort to get started early and seek the help you need--we want to see finished, well-considered pieces for the midterm and final. Additionally, you will need to submit documentation of the project after completion which includes images, video, and source code where applicable.  These materials (proposals and documentation) will all be posted to the wiki.&lt;br /&gt;
=== Documentation Policy ===&lt;br /&gt;
*section on your project&lt;br /&gt;
*source code&lt;br /&gt;
*image/video documentation.  5 images or 5 videos.&lt;br /&gt;
*descriptive writing (on intent, motivation, context)&lt;br /&gt;
&lt;br /&gt;
=== Attendance ===&lt;br /&gt;
Attendance is mandatory. Each unexcused absence will drop your final grade one letter.  There are only 10 weeks of class, please come to them all.&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
=== Week 1 - Intro ===&lt;br /&gt;
*Introductions&lt;br /&gt;
*Scope of course, interests, technical possibilities.&lt;br /&gt;
*My work.&lt;br /&gt;
*Watch: We Live In Public.  2009. (excerpts)&lt;br /&gt;
*In class: personal page on wiki. [http://www.trsp.net/teaching/gamemod/ game-mod exercise]. [http://www.trsp.net/teaching/gamemod/gamemod_breakout_source_en.zip download link]&lt;br /&gt;
*Read: [http://www.nyu.edu/projects/xdesign/mainmenu/archive_tangible.html Against Virtualized Information], [http://www.nyu.edu/projects/xdesign/mainmenu/archive_analtictech.html Novel Analytic Techniques], and [http://www.nyu.edu/projects/xdesign/mainmenu/archive_infocounts.html What Information Counts?] by [http://www.environmentalhealthclinic.net/people/natalie-jeremijenko/ Natalie Jeremijenko]. &lt;br /&gt;
*Read: [http://www.yalealumnimagazine.com/issues/2004_03/jeremijenko.html An Engineer for the Avante Garde]&lt;br /&gt;
*Read: [http://www.worldchanging.com/archives/001450.html Natalie Jeremijenko The WorldChanging Interview]&lt;br /&gt;
*Read: [http://tech90s.walkerart.org/nj/transcript/nj_01.html Database Politics and Social Simulations], good background on her earlier artwork.&lt;br /&gt;
&lt;br /&gt;
=== Week 2 - Student Research Interests ===&lt;br /&gt;
*Due: 1 page on Jeremijenko. &lt;br /&gt;
*Presentations on your work.&lt;br /&gt;
*Read: [http://www.flong.com/texts/essays/essay_cvad/ Computer Vision for Artists and Designers: Pedagogic Tools and Techniques for Novice Programmers] Golan Levin. &amp;#039;&amp;#039;pay particular attention to part II. ELEMENTARY COMPUTER VISION TECHNIQUES.  we are going to try these in class next week.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Week 3 - Computer Vision / Human Perception ===&lt;br /&gt;
*Due: Nothing. Read the Golan Levin piece, but no written response.&lt;br /&gt;
*Discuss:&lt;br /&gt;
**Myron Kreuger. Video Place. 1989 [http://www.youtube.com/watch?v=dqZyZrN3Pl0]&lt;br /&gt;
**Text Rain. Camille Utterback &amp;amp; Romy Achituv. 1999. [http://www.youtube.com/watch?v=toWFvXHghDk] [http://www.camilleutterback.com/]&lt;br /&gt;
**Very Nervous System.  1982-1991. [http://vimeo.com/8120954]&lt;br /&gt;
**Suicide Box.  Bureau of Inverse Technology.  1996. (13:00)&lt;br /&gt;
**Marie Sester. ACCESS.  2003. [http://accessproject.net]&lt;br /&gt;
**Messa di Voce. Golan Levin and Zach Lieberman with Jaap Blonk and Joan La Barbara. 2003.  [http://www.flong.com/projects/messa/] [http://www.tmema.org/messa/messa.html]&lt;br /&gt;
**Seen.  David Rokeby.  2002.  [http://vimeo.com/6012986]&lt;br /&gt;
**Sorting Daemon. David Rokeby. 2003. [http://homepage.mac.com/davidrokeby/sorting.html]&lt;br /&gt;
**Cheese.  Christian Moller. 2003. [http://www.christian-moeller.com/display.php?project_id=36] made in collaboration with UCSD  [http://mplab.ucsd.edu/wordpress/ Machine Perception Lab]&lt;br /&gt;
**Eyewriter. 2009 [http://www.eyewriter.org/]&lt;br /&gt;
**Saccade. 2010 [http://roberttwomey.com/saccade] (in progress)&lt;br /&gt;
*Discuss: &lt;br /&gt;
**thresholding&lt;br /&gt;
**frame difference&lt;br /&gt;
**OpenCV - [http://ubaa.net/shared/processing/opencv/ download] [http://www.cs.unc.edu/Research/stc/FAQs/OpenCV/OpenCVReferenceManual.pdf reference manual].  If you are getting this for your computer, be sure to get OpenCV, the OpenCV Processing Library, and the OpenCV Processing Examples (three separate downloads).&lt;br /&gt;
**face recognition&lt;br /&gt;
*In Class:&lt;br /&gt;
**Working alone or in small groups, do experiments with video processing and computer vision.&lt;br /&gt;
&lt;br /&gt;
=== Week 4 - Computer Vision Work ===&lt;br /&gt;
* In Class:&lt;br /&gt;
** Work on computer vision projects&lt;br /&gt;
** Talk about midterm projects.&lt;br /&gt;
&lt;br /&gt;
=== Week 5 - Midterm Workshop ===&lt;br /&gt;
*Due: Midterm project proposal.&lt;br /&gt;
**Working individually or in small groups (2-3 people), produce an interactive piece that bridges the gap between screen space and physical space.  There are many ways to do this--using image-based computer vision techniques, game controllers, audio input, or other physical hardware (Arduino?).  Think about the parameters of interaction--are you documenting viewer&amp;#039;s behavior (unknown to them), are you taking a familiar form (such as a video game) and tweaking it in some way, are you intervening in social space?  Think about what form the output will take.  In your one page proposal, describe the input(s), output(s), and dynamic of interaction, as well as some statement of your motivation.  Why is this a valuable or interesting project?  In addition to the written description, produce supporting visual materials.  These should be two functional diagram images and two visual/aesthetic images.  The functional diagrams should show the necessary software and hardware components and explain how the interaction will occur.  The aesthetic diagrams will give us a sense of what it will look like, how the output will appear.  Make a page for your project (including a title) in the Midterm Projects section at the bottom of this page, upload the necessary materials and embed them in that page.  This proposal is due in class next week where we will critique and workshop the ideas.&lt;br /&gt;
*In class:&lt;br /&gt;
**Workshop midterm project ideas. (45 minutes)&lt;br /&gt;
**Work on midterm projects. &lt;br /&gt;
*NOTE: Best of ICAM from Candy Harris.  There will be an install in the annex here at Mandeville and presentations at the Experimental Theater in the CPMC (music building). They should come see what they are going to have to live up to for their final projects. Plus the keynote speakers (ICAM alumns) always have great info about career paths after graduation.&lt;br /&gt;
&lt;br /&gt;
=== Week 6 ===&lt;br /&gt;
In class work on midterms.&lt;br /&gt;
&lt;br /&gt;
=== Week 7 - Midterm Critiques ===&lt;br /&gt;
In class critique of midterms.&lt;br /&gt;
&lt;br /&gt;
=== Week 8 ===&lt;br /&gt;
&lt;br /&gt;
Due: Written response (1 page) to one of your classmate&amp;#039;s projects.&lt;br /&gt;
&lt;br /&gt;
In Class: Draft final project proposal and post to wiki by the end of class.  In class discussion as needed.&lt;br /&gt;
&lt;br /&gt;
=== Week 9 ===&lt;br /&gt;
work on finals&lt;br /&gt;
&lt;br /&gt;
=== Week 10 - Final Critiques ===&lt;br /&gt;
In-class critiques of finals.&lt;br /&gt;
&lt;br /&gt;
=== Finals Week ===&lt;br /&gt;
Final documentation due.&lt;br /&gt;
&lt;br /&gt;
== Topics ==&lt;br /&gt;
To Be Scheduled&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Performance for the camera, for the web&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Discuss Chatroulette. Facebook, Twitter, Youtube.  Attention in the social net.&lt;br /&gt;
*ManyCam [http://www.manycam.com/]&lt;br /&gt;
*PS3 eye&lt;br /&gt;
*jennicam [http://www.wired.com/thisdayintech/2010/04/0414jennicam-launches wired]&lt;br /&gt;
*Lonelygirl15 [http://www.youtube.com/watch?v=-goXKtd6cPo youtube] [http://www.wired.com/wired/archive/14.12/lonelygirl.html article]&lt;br /&gt;
*Discuss telematic perfromance. &lt;br /&gt;
* Justin.tv [http://www.justin.tv/#r=s7RVqBU~]&lt;br /&gt;
*Read: The Presentation of Self in Everyday Life (excerpt).  Erving Goffman. 1959.&lt;br /&gt;
*Read: Performance: A Critical Introduction (excerpt).  Richard Carlson. 2004.&lt;br /&gt;
*Do: Intervention in social circuits.  Chatroulette/Facebook/Youtube exercise.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Social Networks/Web 2.0&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Read: Protocol, Control, and Networks by Alexander Galloway and Eugene Thacker.  Grey Room 17, Fall 2004 p 6-29.  &lt;br /&gt;
*Read: DIGITAL MAOISM: The Hazards of the New Online Collectivism.  Jaron Lanier.  2006.&lt;br /&gt;
*Watch: MediatedCultures @ Kansas State http://mediatedcultures.net/mediatedculture.htm&lt;br /&gt;
*Datamining/Complex Networks, node-edge graphing.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Digital Memory/Personal Media: Where do we exist and how do we remember?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Read: Mediated Memories in the Digital Age (excerpt). Jose van Dijck. 2007.&lt;br /&gt;
*Read: Are you sure you want to do this?  Matthias Fuchs 1994.&lt;br /&gt;
*Read: Delete: The Virtue of Forgetting in the Digital Age (excerpt). Viktor Mayer-Schonberger. 2009.&lt;br /&gt;
*Flickr.com, Facebook&lt;br /&gt;
*Discuss: My Pocket. Burak Arikan. 2008. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Cognition + Creativity&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Generative Art vs. Computational Creativity&lt;br /&gt;
*Casy Reas&lt;br /&gt;
*Processing.org&lt;br /&gt;
*Tom Shannon. [http://www.wired.com/magazine/2010/03/pl_arts_pendulum/all/1]&lt;br /&gt;
*Read: Triumph of the Cyborg Composer. &lt;br /&gt;
*Read: How to draw three people in a garden.  1988.&lt;br /&gt;
*Read: Shades of Computational Evocation and Meaning: The GRIOT System and Improvisational Poetry Generation. 2006.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Artificial Intelligence&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Read: Expressive Processing (excerpt), Noah Wardrip Fruin, 2009. &lt;br /&gt;
*Read: Elephants Don&amp;#039;t Play Chess, Rodney Brooks, 1990. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Appropriation and Remix&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Read: The Fiction of Memory.  New York Times, March 12, 2010.  Luc Sante&lt;br /&gt;
*Read: Jonatham Lethem.  The Ecstasy of Influence. Harpers Magazine.  2007. &lt;br /&gt;
*Remix Culture.  Lev.&lt;br /&gt;
*God&amp;#039;s Little Toys: Confessions of a cut &amp;amp; paste artist.  William Gibson. 2005. *http://www.wired.com/wired/archive/13.07/gibson.html&lt;br /&gt;
*Reality Hunger: A Manifesto.  David Shields. 2010.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Materiality in the information age.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Tangible interfaces, haptic feedback. &lt;br /&gt;
*Read: Evocative Objects: Things We Think With (excerpt). Sherry Turkle, 2007. &lt;br /&gt;
*Read: New Media and the Forensic Imagination (excerpt). Matthew Kirschenbaum. 2008.&lt;br /&gt;
*View: BIT Plane.  &lt;br /&gt;
*View: Garbage Cubes&lt;br /&gt;
*Discuss techniques of markerless tracking, augmented reality, QR codes, etc.  *Online/Offline Space.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Embodiment&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Computing with bodies, engineered bodies&lt;br /&gt;
*tactile media, haptic interface&lt;br /&gt;
*embodied perception&lt;br /&gt;
*Read: Stelarc. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Self-Image&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Read: Self/Image: Technology, Representation, and the Contemporary Subject (excerpt).  Amelia Jones, 2006.&lt;br /&gt;
*Do: Forensic Photoshop Exercise.&lt;br /&gt;
*http://www.flickr.com/photos/dryponder/sets/72157623726710218/&lt;br /&gt;
*http://nymag.com/daily/intel/2010/02/obama_being_forced_to_look_at.html#photo=1&lt;br /&gt;
*http://niccageaseveryone.blogspot.com/&lt;br /&gt;
*http://bubleraptor.tumblr.com/&lt;br /&gt;
*photoshop free Marie Claire issue: http://jezebel.com/5511507/so-long-as-your-face-looks-alright-everything-else-can-be-photoshopped&lt;br /&gt;
&lt;br /&gt;
== Places to Find Art ==&lt;br /&gt;
* http://we-make-money-not-art.com/&lt;br /&gt;
* http://www.isea-web.org/, http://www.isea2010ruhr.org/&lt;br /&gt;
* http://www.transmediale.de/en&lt;br /&gt;
* http://01sj.org/&lt;br /&gt;
* http://www.file.org.br/&lt;br /&gt;
* http://www.aec.at/festival_about_en.php&lt;br /&gt;
* http://www.sciencegallery.com/lightwave09&lt;br /&gt;
* Institutions that Sponsor/Show Media Art&lt;br /&gt;
** Eyebeam New York City&lt;br /&gt;
** New Museum/Rhizome.org http://rhizome.org&lt;br /&gt;
** HarvestWorks&lt;br /&gt;
** Machine Project, Los Angeles.&lt;br /&gt;
&lt;br /&gt;
== Midterm Projects ==&lt;br /&gt;
Make pages here. &lt;br /&gt;
* [[DummyProject | Dummy Project]]&lt;br /&gt;
* [[MidtermProject| MotionDJ - Leilani Martin]]&lt;br /&gt;
* [[What&amp;#039;s For Lunch, Kids? by Kelley Kim| &amp;#039;&amp;#039;What&amp;#039;s For Lunch, Kids?&amp;#039;&amp;#039;   - Kelley Kim]]&lt;br /&gt;
* [[Virtual Walk? - Joeny Thipsidakhom]]&lt;br /&gt;
* [[Untitled Midterm| Untitled - Jezreel Callejas]]&lt;br /&gt;
* [[Midterm Project - Tony Lu | Virtual Maze - Tony Lu]]&lt;br /&gt;
* [[Midterm Project  | SayCHEESE - Joel and Jenny Chang]]&lt;br /&gt;
* [[Carnival Ride| Carnival Ride - Christina Sanchez and Jennifer Sunga]]&lt;br /&gt;
* [[Hunted - Anna Lin, Jenny Wang, and Ellen Huang]]&lt;br /&gt;
* [[Wii - remote composer - Javi Lee]]&lt;br /&gt;
* [[Social Creature | Boo (formerly Social Creature) - Jet Antonio]]&lt;br /&gt;
* [[Sound Sketch - Emilio Marcelino, Greg Parsons, and Ben Brickley]]&lt;br /&gt;
&lt;br /&gt;
== Final Projects ==&lt;br /&gt;
* [[Aquarium| Aquarium - Jezreel Callejas]]&lt;br /&gt;
* [[Not So Lost| Not So Lost - Ben Brickely, Emilio Marcelino and Greg Parsons]]&lt;br /&gt;
* [[Dance in the Dark - Anna Lin, Jenny Wang and Ellen Huang]]&lt;br /&gt;
* [[Inkling One | Inkling One - Jet Antonio]]&lt;br /&gt;
* [[Untitled (for now) - Joeny Thipsidakhom]]&lt;br /&gt;
* [[iDance | iDance - Tony Lu]]&lt;br /&gt;
&lt;br /&gt;
== Student Pages ==&lt;br /&gt;
Click &amp;quot;edit&amp;quot; on the right to add your own page below. &lt;br /&gt;
* [[Students/RobertTwomey | RobertTwomey]]&lt;br /&gt;
* [[Students/Javier Lee | Javier Lee]]&lt;br /&gt;
* [[Students/Jenny Wang | Jenny Wang]]&lt;br /&gt;
* [[Students/Joeny Thipsidakhom | Joeny Thipsidakhom]]&lt;br /&gt;
* [[Students/Kuan-Ting Lu | Tony Lu]]&lt;br /&gt;
* [[Students/Jezreel Callejas| Jezreel Callejas]]&lt;br /&gt;
* [[Students/ChristinaSanchez| Christina Sanchez]]&lt;br /&gt;
* [[Students/BenBrickley | BenBrickley]]&lt;br /&gt;
* [[Students/Ellen Huang | Ellen Huang]]&lt;br /&gt;
* [[Students/Kelley Kim | Kelley Kim]]&lt;br /&gt;
* [[Students/EmilioMarcelino | EmilioMarcelino]]&lt;br /&gt;
* [[Students/Anna Lin | Anna Lin]]&lt;br /&gt;
* [[Student/Jenny Chang | Jenny Chang]]&lt;br /&gt;
* [[Student/Jet Antonio | Jet Antonio]]&lt;br /&gt;
* [[Students/GregoryParsons | Gregory Parsons]]&lt;br /&gt;
* [[Students/Jennifer Sunga | Jennifer Sunga]]&lt;br /&gt;
* [[Students/LeilaniMartin | Leilani Martin]]&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=Midterm_Project_-_Tony_Lu&amp;diff=3827</id>
		<title>Midterm Project - Tony Lu</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=Midterm_Project_-_Tony_Lu&amp;diff=3827"/>
				<updated>2010-05-20T06:23:30Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: /* Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Title==&lt;br /&gt;
VIRTUAL MAZE&lt;br /&gt;
==Description==&lt;br /&gt;
* Motivation&lt;br /&gt;
I&amp;#039;d like my projects to have amusement values and possibly practical applications, much like a game. Along side that, it should also involve an emphasis on physical activity, while definitely showing feedback on the virtual world. I&amp;#039;m pretty fascinated with the blurring of physical and virtual realms. Hopefully it&amp;#039;ll be pretty technically advanced too.&lt;br /&gt;
* Interactive Paradigm&lt;br /&gt;
I&amp;#039;m thinking of tracking a person in physical space, and then have that person walk through a maze in virtual space. He would be able to move in real life unobstructed, of course, but if his virtual representation hits a wall it would be &amp;quot;stuck.&amp;quot; I&amp;#039;m also considering putting in aspects of Pac man or Mario, or incorporating some kind of importance on movements such as dancing or jumping... depending on if my technical ability would allow it.&lt;br /&gt;
* Technical Description&lt;br /&gt;
If possible I&amp;#039;d like Processing to track the person through webcam, possibly using brightness thresholding with a plain background and singling out the blob of black that is the person. If that doesn&amp;#039;t work I could attach LED&amp;#039;s to the person and use brightness tracking instead. The maze should be able to be drawn in Processing, and finally I&amp;#039;d have to find the way to code the limiting of the virtual entity&amp;#039;s movements.&lt;br /&gt;
&lt;br /&gt;
==Visualization==&lt;br /&gt;
* Functional Diagrams and Visual Concept&lt;br /&gt;
[[Image:Vis145b midterm.jpg|800px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
* Source Code &lt;br /&gt;
The coding contains two files, the main coding and the Cell object&lt;br /&gt;
&lt;br /&gt;
Main file: &lt;br /&gt;
&lt;br /&gt;
-adapts OpenCV&amp;#039;s face tracking code and creates the maze (composed of Cell objects), along with movement system&lt;br /&gt;
&lt;br /&gt;
[[Media:Physical_pacman.pde]]&lt;br /&gt;
&lt;br /&gt;
Cell object:&lt;br /&gt;
&lt;br /&gt;
-composes the maze, draws out pacman, kills white dot when &amp;quot;eaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Media:Cell.pde]]&lt;br /&gt;
&lt;br /&gt;
* In Action:&lt;br /&gt;
&lt;br /&gt;
-Pacman follows your face (specifically your forehead)&lt;br /&gt;
&lt;br /&gt;
[[Image:pacman_inplay_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
-It grays out when it can&amp;#039;t detect a face or if you&amp;#039;re walking the wrong way&lt;br /&gt;
&lt;br /&gt;
[[Image:pacman_inplay_2.jpg]]&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=Midterm_Project_-_Tony_Lu&amp;diff=3826</id>
		<title>Midterm Project - Tony Lu</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=Midterm_Project_-_Tony_Lu&amp;diff=3826"/>
				<updated>2010-05-20T06:23:09Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: /* Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Title==&lt;br /&gt;
VIRTUAL MAZE&lt;br /&gt;
==Description==&lt;br /&gt;
* Motivation&lt;br /&gt;
I&amp;#039;d like my projects to have amusement values and possibly practical applications, much like a game. Along side that, it should also involve an emphasis on physical activity, while definitely showing feedback on the virtual world. I&amp;#039;m pretty fascinated with the blurring of physical and virtual realms. Hopefully it&amp;#039;ll be pretty technically advanced too.&lt;br /&gt;
* Interactive Paradigm&lt;br /&gt;
I&amp;#039;m thinking of tracking a person in physical space, and then have that person walk through a maze in virtual space. He would be able to move in real life unobstructed, of course, but if his virtual representation hits a wall it would be &amp;quot;stuck.&amp;quot; I&amp;#039;m also considering putting in aspects of Pac man or Mario, or incorporating some kind of importance on movements such as dancing or jumping... depending on if my technical ability would allow it.&lt;br /&gt;
* Technical Description&lt;br /&gt;
If possible I&amp;#039;d like Processing to track the person through webcam, possibly using brightness thresholding with a plain background and singling out the blob of black that is the person. If that doesn&amp;#039;t work I could attach LED&amp;#039;s to the person and use brightness tracking instead. The maze should be able to be drawn in Processing, and finally I&amp;#039;d have to find the way to code the limiting of the virtual entity&amp;#039;s movements.&lt;br /&gt;
&lt;br /&gt;
==Visualization==&lt;br /&gt;
* Functional Diagrams and Visual Concept&lt;br /&gt;
[[Image:Vis145b midterm.jpg|800px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
* Source Code &lt;br /&gt;
The coding contains two files, the main coding and the Cell object&lt;br /&gt;
&lt;br /&gt;
Main file: &lt;br /&gt;
&lt;br /&gt;
-adapts OpenCV&amp;#039;s face tracking code and creates the maze (composed of Cell objects), along with movement system&lt;br /&gt;
&lt;br /&gt;
[[Media:Physical_pacman.pde]]&lt;br /&gt;
&lt;br /&gt;
Cell object:&lt;br /&gt;
&lt;br /&gt;
-composes the maze, draws out pacman, kills white dot when &amp;quot;eaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Media:Cell.pde]]&lt;br /&gt;
&lt;br /&gt;
* In Action:&lt;br /&gt;
&lt;br /&gt;
-Pacman follows your face (specifically your forehead)&lt;br /&gt;
[[Image:pacman_inplay_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
-It grays out when it can&amp;#039;t detect a face or if you&amp;#039;re walking the wrong way&lt;br /&gt;
[[Image:pacman_inplay_2.jpg]]&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=File:Pacman_inplay_2.jpg&amp;diff=3825</id>
		<title>File:Pacman inplay 2.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=File:Pacman_inplay_2.jpg&amp;diff=3825"/>
				<updated>2010-05-20T06:22:55Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=File:Pacman_inplay_1.jpg&amp;diff=3824</id>
		<title>File:Pacman inplay 1.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=File:Pacman_inplay_1.jpg&amp;diff=3824"/>
				<updated>2010-05-20T06:21:48Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=Midterm_Project_-_Tony_Lu&amp;diff=3819</id>
		<title>Midterm Project - Tony Lu</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=Midterm_Project_-_Tony_Lu&amp;diff=3819"/>
				<updated>2010-05-19T20:20:02Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: /* Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Title==&lt;br /&gt;
VIRTUAL MAZE&lt;br /&gt;
==Description==&lt;br /&gt;
* Motivation&lt;br /&gt;
I&amp;#039;d like my projects to have amusement values and possibly practical applications, much like a game. Along side that, it should also involve an emphasis on physical activity, while definitely showing feedback on the virtual world. I&amp;#039;m pretty fascinated with the blurring of physical and virtual realms. Hopefully it&amp;#039;ll be pretty technically advanced too.&lt;br /&gt;
* Interactive Paradigm&lt;br /&gt;
I&amp;#039;m thinking of tracking a person in physical space, and then have that person walk through a maze in virtual space. He would be able to move in real life unobstructed, of course, but if his virtual representation hits a wall it would be &amp;quot;stuck.&amp;quot; I&amp;#039;m also considering putting in aspects of Pac man or Mario, or incorporating some kind of importance on movements such as dancing or jumping... depending on if my technical ability would allow it.&lt;br /&gt;
* Technical Description&lt;br /&gt;
If possible I&amp;#039;d like Processing to track the person through webcam, possibly using brightness thresholding with a plain background and singling out the blob of black that is the person. If that doesn&amp;#039;t work I could attach LED&amp;#039;s to the person and use brightness tracking instead. The maze should be able to be drawn in Processing, and finally I&amp;#039;d have to find the way to code the limiting of the virtual entity&amp;#039;s movements.&lt;br /&gt;
&lt;br /&gt;
==Visualization==&lt;br /&gt;
* Functional Diagrams and Visual Concept&lt;br /&gt;
[[Image:Vis145b midterm.jpg|800px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
* Source Code &lt;br /&gt;
The coding contains two files, the main coding and the Cell object&lt;br /&gt;
&lt;br /&gt;
Main file: &lt;br /&gt;
&lt;br /&gt;
-adapts OpenCV&amp;#039;s face tracking code and creates the maze (composed of Cell objects), along with movement system&lt;br /&gt;
&lt;br /&gt;
[[Media:Physical_pacman.pde]]&lt;br /&gt;
&lt;br /&gt;
Cell object:&lt;br /&gt;
&lt;br /&gt;
-composes the maze, draws out pacman, kills white dot when &amp;quot;eaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Media:Cell.pde]]&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=File:Cell.pde&amp;diff=3818</id>
		<title>File:Cell.pde</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=File:Cell.pde&amp;diff=3818"/>
				<updated>2010-05-19T20:16:49Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=Midterm_Project_-_Tony_Lu&amp;diff=3817</id>
		<title>Midterm Project - Tony Lu</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=Midterm_Project_-_Tony_Lu&amp;diff=3817"/>
				<updated>2010-05-19T20:16:06Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: /* Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Title==&lt;br /&gt;
VIRTUAL MAZE&lt;br /&gt;
==Description==&lt;br /&gt;
* Motivation&lt;br /&gt;
I&amp;#039;d like my projects to have amusement values and possibly practical applications, much like a game. Along side that, it should also involve an emphasis on physical activity, while definitely showing feedback on the virtual world. I&amp;#039;m pretty fascinated with the blurring of physical and virtual realms. Hopefully it&amp;#039;ll be pretty technically advanced too.&lt;br /&gt;
* Interactive Paradigm&lt;br /&gt;
I&amp;#039;m thinking of tracking a person in physical space, and then have that person walk through a maze in virtual space. He would be able to move in real life unobstructed, of course, but if his virtual representation hits a wall it would be &amp;quot;stuck.&amp;quot; I&amp;#039;m also considering putting in aspects of Pac man or Mario, or incorporating some kind of importance on movements such as dancing or jumping... depending on if my technical ability would allow it.&lt;br /&gt;
* Technical Description&lt;br /&gt;
If possible I&amp;#039;d like Processing to track the person through webcam, possibly using brightness thresholding with a plain background and singling out the blob of black that is the person. If that doesn&amp;#039;t work I could attach LED&amp;#039;s to the person and use brightness tracking instead. The maze should be able to be drawn in Processing, and finally I&amp;#039;d have to find the way to code the limiting of the virtual entity&amp;#039;s movements.&lt;br /&gt;
&lt;br /&gt;
==Visualization==&lt;br /&gt;
* Functional Diagrams and Visual Concept&lt;br /&gt;
[[Image:Vis145b midterm.jpg|800px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
* Source Code &lt;br /&gt;
The coding contains two files, the main coding and the Cell object&lt;br /&gt;
&lt;br /&gt;
Main file: &lt;br /&gt;
&lt;br /&gt;
-adapts OpenCV&amp;#039;s face tracking code and creates the maze (composed of Cell objects) &lt;br /&gt;
&lt;br /&gt;
[[Media:Physical_pacman.pde]]&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=File:Physical_pacman.pde&amp;diff=3816</id>
		<title>File:Physical pacman.pde</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=File:Physical_pacman.pde&amp;diff=3816"/>
				<updated>2010-05-19T20:15:26Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=Midterm_Project_-_Tony_Lu&amp;diff=3815</id>
		<title>Midterm Project - Tony Lu</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=Midterm_Project_-_Tony_Lu&amp;diff=3815"/>
				<updated>2010-05-19T20:11:12Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: /* Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Title==&lt;br /&gt;
VIRTUAL MAZE&lt;br /&gt;
==Description==&lt;br /&gt;
* Motivation&lt;br /&gt;
I&amp;#039;d like my projects to have amusement values and possibly practical applications, much like a game. Along side that, it should also involve an emphasis on physical activity, while definitely showing feedback on the virtual world. I&amp;#039;m pretty fascinated with the blurring of physical and virtual realms. Hopefully it&amp;#039;ll be pretty technically advanced too.&lt;br /&gt;
* Interactive Paradigm&lt;br /&gt;
I&amp;#039;m thinking of tracking a person in physical space, and then have that person walk through a maze in virtual space. He would be able to move in real life unobstructed, of course, but if his virtual representation hits a wall it would be &amp;quot;stuck.&amp;quot; I&amp;#039;m also considering putting in aspects of Pac man or Mario, or incorporating some kind of importance on movements such as dancing or jumping... depending on if my technical ability would allow it.&lt;br /&gt;
* Technical Description&lt;br /&gt;
If possible I&amp;#039;d like Processing to track the person through webcam, possibly using brightness thresholding with a plain background and singling out the blob of black that is the person. If that doesn&amp;#039;t work I could attach LED&amp;#039;s to the person and use brightness tracking instead. The maze should be able to be drawn in Processing, and finally I&amp;#039;d have to find the way to code the limiting of the virtual entity&amp;#039;s movements.&lt;br /&gt;
&lt;br /&gt;
==Visualization==&lt;br /&gt;
* Functional Diagrams and Visual Concept&lt;br /&gt;
[[Image:Vis145b midterm.jpg|800px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
* Source Code &lt;br /&gt;
The coding contains two files, the main coding and the Cell object&lt;br /&gt;
&lt;br /&gt;
Main file: &lt;br /&gt;
&lt;br /&gt;
-adapts OpenCV&amp;#039;s face tracking code and creates the maze (composed of Cell objects) &lt;br /&gt;
&lt;br /&gt;
import hypermedia.video.*;&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
&lt;br /&gt;
OpenCV opencv;&lt;br /&gt;
&lt;br /&gt;
// contrast/brightness values&lt;br /&gt;
&lt;br /&gt;
int contrast_value    = 0;&lt;br /&gt;
int brightness_value  = 0;&lt;br /&gt;
int cellsize = 100;&lt;br /&gt;
int cellnum = 42;&lt;br /&gt;
boolean start = true;&lt;br /&gt;
int currentcell = 0;&lt;br /&gt;
int in_cell = 0;&lt;br /&gt;
boolean move = false;&lt;br /&gt;
Cell[] cells = new Cell[cellnum];&lt;br /&gt;
PImage pacman;&lt;br /&gt;
PImage pacmanAlpha;&lt;br /&gt;
AudioPlayer player;&lt;br /&gt;
Minim minim;&lt;br /&gt;
int playercounter = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
&lt;br /&gt;
    size( 700, 600 );&lt;br /&gt;
    minim = new Minim(this);&lt;br /&gt;
    player = minim.loadFile(&amp;quot;StartGame.mp3&amp;quot;);&lt;br /&gt;
    player.loop();&lt;br /&gt;
      &lt;br /&gt;
    pacman = loadImage(&amp;quot;pacman.png&amp;quot;);&lt;br /&gt;
    pacmanAlpha = loadImage(&amp;quot;pacmanalpha3.png&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    opencv = new OpenCV( this );&lt;br /&gt;
    opencv.capture( width, height );                   // open video stream&lt;br /&gt;
    opencv.cascade( OpenCV.CASCADE_FRONTALFACE_ALT );  // load detection description, here-&amp;gt; front face detection : &amp;quot;haarcascade_frontalface_alt.xml&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
    int k = -cellsize;&lt;br /&gt;
     &lt;br /&gt;
     //int[] temp = { -1, -2, -3, -4, -5 };&lt;br /&gt;
    for(int i = 0; i &amp;lt; cellnum; i++) {&lt;br /&gt;
      if(i%(width/cellsize) == 0) { k+= cellsize; }&lt;br /&gt;
      cells[i] = new Cell(i, (i%(width/cellsize))*cellsize, k, cellsize);&lt;br /&gt;
      &lt;br /&gt;
      &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    setupAllNeighbors();&lt;br /&gt;
    &lt;br /&gt;
 &lt;br /&gt;
     &lt;br /&gt;
 &lt;br /&gt;
    // print usage&lt;br /&gt;
    println( &amp;quot;Drag mouse on X-axis inside this sketch window to change contrast&amp;quot; );&lt;br /&gt;
    println( &amp;quot;Drag mouse on Y-axis inside this sketch window to change brightness&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public void stop() {&lt;br /&gt;
    opencv.stop();&lt;br /&gt;
    super.stop();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void draw() {&lt;br /&gt;
  &lt;br /&gt;
    // grab a new frame&lt;br /&gt;
    // and convert to gray&lt;br /&gt;
    opencv.read();&lt;br /&gt;
    opencv.flip( OpenCV.FLIP_HORIZONTAL );&lt;br /&gt;
    //opencv.convert( GRAY );&lt;br /&gt;
    opencv.contrast( contrast_value );&lt;br /&gt;
    opencv.brightness( brightness_value );&lt;br /&gt;
&lt;br /&gt;
    // proceed detection&lt;br /&gt;
    Rectangle[] faces = opencv.detect( 1.2, 2, OpenCV.HAAR_DO_CANNY_PRUNING, 40, 40 );&lt;br /&gt;
&lt;br /&gt;
    // display the image&lt;br /&gt;
    image( opencv.image(), 0, 0 );&lt;br /&gt;
    noStroke();&lt;br /&gt;
    fill(255);&lt;br /&gt;
  // rect(0, 0, width, height);&lt;br /&gt;
     boolean r;&lt;br /&gt;
    &lt;br /&gt;
    drawMaze();&lt;br /&gt;
    &lt;br /&gt;
    if(start == false) { cells[currentcell].cellOn(true); }&lt;br /&gt;
     &lt;br /&gt;
       for(int l = 0; l&amp;lt;cellnum; l++) {&lt;br /&gt;
              r = false;&lt;br /&gt;
              if(cells[l].stepped == true) { r = true; }&lt;br /&gt;
              cells[l].circleOn(r);&lt;br /&gt;
           }&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
    // draw face area(s)&lt;br /&gt;
&lt;br /&gt;
    for( int i=0; i&amp;lt;faces.length; i++ ) {&lt;br /&gt;
       &lt;br /&gt;
        noFill();&lt;br /&gt;
        stroke(255,0,0);&lt;br /&gt;
        strokeWeight(5);&lt;br /&gt;
        //rect( faces[i].x, faces[i].y, faces[i].width, faces[i].height ); &lt;br /&gt;
        noStroke();&lt;br /&gt;
        fill(0, 0, 200, 80);&lt;br /&gt;
        in_cell = findClosestCell(faces[i].x + (faces[i].width)/2, faces[i].y);&lt;br /&gt;
        //ellipse(faces[i].x + (faces[i].width)/2, faces[i].y + (faces[i].height)/2, 100, 100);&lt;br /&gt;
        //ellipse(faces[i].x + (faces[i].width)/2, faces[i].y, 100, 100);&lt;br /&gt;
        //ellipse(cells[in_cell].x, cells[in_cell].y, 100, 100);&lt;br /&gt;
        &lt;br /&gt;
        if(start == true) { cells[in_cell].cellOn(); currentcell = in_cell; start = false; }&lt;br /&gt;
        &lt;br /&gt;
  &lt;br /&gt;
        &lt;br /&gt;
       &lt;br /&gt;
        for(int j = 0; j &amp;lt; 4; j++) {&lt;br /&gt;
          &lt;br /&gt;
          if(cells[currentcell].neighbors[j] == in_cell) { move = true; }&lt;br /&gt;
          &lt;br /&gt;
        }&lt;br /&gt;
        if(move == true) {&lt;br /&gt;
        &lt;br /&gt;
        cells[in_cell].cellOn();&lt;br /&gt;
      &lt;br /&gt;
        currentcell = in_cell;&lt;br /&gt;
        } &lt;br /&gt;
        &lt;br /&gt;
        move = false;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Changes contrast/brigthness values&lt;br /&gt;
 */&lt;br /&gt;
void mouseDragged() {&lt;br /&gt;
    contrast_value   = (int) map( mouseX, 0, width, -128, 128 );&lt;br /&gt;
    brightness_value = (int) map( mouseY, 0, width, -128, 128 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int findClosestCell(int face_x, int face_y) {&lt;br /&gt;
  int cellx; int celly;&lt;br /&gt;
  int xhundred = (face_x / 100) * 100; &lt;br /&gt;
  int xten = face_x % 100;&lt;br /&gt;
  int yhundred = (face_y / 100) * 100;&lt;br /&gt;
  int yten = face_y % 100;&lt;br /&gt;
  &lt;br /&gt;
  if(xten &amp;gt; 85) { if(xhundred &amp;lt; 600) { cellx = xhundred + 100; } else { cellx = xhundred; } }&lt;br /&gt;
  else if(xten &amp;lt; 15) { if(xhundred &amp;gt; 100) { cellx = xhundred - 100; } else { cellx = xhundred; } }&lt;br /&gt;
  else { cellx = xhundred; }&lt;br /&gt;
  if(yten &amp;gt; 85) { if(yhundred &amp;lt; 500) { celly = yhundred + 100; } else { celly = yhundred; } }&lt;br /&gt;
  else if(yten &amp;lt; 15) { if(yhundred &amp;gt; 100) { celly = yhundred - 100; } else { celly = yhundred; } }&lt;br /&gt;
  else { celly = yhundred; }&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  return (cellx/100) + (celly/100)*(width/cellsize);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setupNeighbors(int cell, int[] arrayOfNeighbors) {&lt;br /&gt;
 //cell neighbor set up&lt;br /&gt;
    //cells[0].neighbors[0] = 7;&lt;br /&gt;
   cells[cell].neighbors = arrayOfNeighbors;&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void setupAllNeighbors() {&lt;br /&gt;
  &lt;br /&gt;
  int[] cell0 = { 7, 1, 0, -1 };&lt;br /&gt;
  int[] cell1 = { 0, 1, 8, -1 };&lt;br /&gt;
  int[] cell2 = { 2, 3, -1, -2 };&lt;br /&gt;
  int[] cell3 = { 2, 3, 10, -1 };&lt;br /&gt;
  int[] cell4 = { 4, 11, 5, -1 };&lt;br /&gt;
  int[] cell5 = { 5, 4, 6, -2 };&lt;br /&gt;
  int[] cell6 = { 5, 6, 13, -2 };&lt;br /&gt;
  int[] cell7 = { 7, 0, 14, -1 };  &lt;br /&gt;
  int[] cell8 = { 8, 1, 15, -2 };&lt;br /&gt;
  int[] cell9 = { 9, 16, 10, -2 };&lt;br /&gt;
  int[] cell10 = { 3, 10, 17, 9 };&lt;br /&gt;
  int[] cell11 = { 4, 11, 12, -2 };&lt;br /&gt;
  int[] cell12 = { 12, 11, 19, -2 };  &lt;br /&gt;
  int[] cell13 = { 13, 20, 6, -2 };&lt;br /&gt;
  int[] cell14 = { 14, 7, 21, -2 };&lt;br /&gt;
  int[] cell15 = { 15, 16, 8, -2 };&lt;br /&gt;
  int[] cell16 = { 16, 15, 9, -2 };&lt;br /&gt;
  int[] cell17 = { 17, 10, 24, -2 };  &lt;br /&gt;
  int[] cell18 = { 18, 19, 25, -2 };&lt;br /&gt;
  int[] cell19 = { 19, 12, 18, -1 };&lt;br /&gt;
  int[] cell20 = { 20, 13, -2, -1 };&lt;br /&gt;
  int[] cell21 = { 21, 22, 14, -2 };&lt;br /&gt;
  int[] cell22 = { 22, 23, 21, -2 };  &lt;br /&gt;
  int[] cell23 = { 23, 22, 24, 30 };&lt;br /&gt;
  int[] cell24 = { 24, 31, 17, 23 };&lt;br /&gt;
  int[] cell25 = { 25, 32, 18, 26 };&lt;br /&gt;
  int[] cell26 = { 26, 27, 25, -2 };&lt;br /&gt;
  int[] cell27 = { 27, 26, 34, -2 };  &lt;br /&gt;
  int[] cell28 = { 28, 29, 35, -1 };&lt;br /&gt;
  int[] cell29 = { 29, 30, 28, -2 };&lt;br /&gt;
  int[] cell30 = { 30, 23, 29, -1 };&lt;br /&gt;
  int[] cell31 = { 31, 32, 24, -2 };&lt;br /&gt;
  int[] cell32 = { 31, 32, 33, 25 };  &lt;br /&gt;
  int[] cell33 = { 33, 32, 40, -1 };&lt;br /&gt;
  int[] cell34 = { 34, 41, 27, -2 };&lt;br /&gt;
  int[] cell35 = { 35, 36, 28, -2 };&lt;br /&gt;
  int[] cell36 = { 36, 35, 37, -2 };&lt;br /&gt;
  int[] cell37 = { 37, 36, -1, -2 };  &lt;br /&gt;
  int[] cell38 = { 38, 39, -2, -1 };&lt;br /&gt;
  int[] cell39 = { 39, 40, 38, -2 };&lt;br /&gt;
  int[] cell40 = { 40, 39, 33, -2 };&lt;br /&gt;
  int[] cell41 = { 41, 34, -2, -1 };&lt;br /&gt;
  &lt;br /&gt;
  setupNeighbors(0, cell0);&lt;br /&gt;
  setupNeighbors(1, cell1);&lt;br /&gt;
  setupNeighbors(2, cell2);&lt;br /&gt;
  setupNeighbors(3, cell3);&lt;br /&gt;
  setupNeighbors(4, cell4);&lt;br /&gt;
   setupNeighbors(5, cell5);&lt;br /&gt;
  setupNeighbors(6, cell6);&lt;br /&gt;
  setupNeighbors(7, cell7);&lt;br /&gt;
  setupNeighbors(8, cell8);&lt;br /&gt;
  setupNeighbors(9, cell9);&lt;br /&gt;
   setupNeighbors(10, cell10);&lt;br /&gt;
  setupNeighbors(11, cell11);&lt;br /&gt;
  setupNeighbors(12, cell12);&lt;br /&gt;
  setupNeighbors(13, cell13);&lt;br /&gt;
  setupNeighbors(14, cell14);&lt;br /&gt;
   setupNeighbors(15, cell15);&lt;br /&gt;
  setupNeighbors(16, cell16);&lt;br /&gt;
  setupNeighbors(17, cell17);&lt;br /&gt;
  setupNeighbors(18, cell18);&lt;br /&gt;
  setupNeighbors(19, cell19);&lt;br /&gt;
   setupNeighbors(20, cell20);&lt;br /&gt;
  setupNeighbors(21, cell21);&lt;br /&gt;
  setupNeighbors(22, cell22);&lt;br /&gt;
  setupNeighbors(23, cell23);&lt;br /&gt;
  setupNeighbors(24, cell24);&lt;br /&gt;
   setupNeighbors(25, cell25);&lt;br /&gt;
  setupNeighbors(26, cell26);&lt;br /&gt;
  setupNeighbors(27, cell27);&lt;br /&gt;
  setupNeighbors(28, cell28);&lt;br /&gt;
  setupNeighbors(29, cell29);&lt;br /&gt;
   setupNeighbors(30, cell30);&lt;br /&gt;
  setupNeighbors(31, cell31);&lt;br /&gt;
  setupNeighbors(32, cell32);&lt;br /&gt;
  setupNeighbors(33, cell33);&lt;br /&gt;
  setupNeighbors(34, cell34);&lt;br /&gt;
   setupNeighbors(35, cell35);&lt;br /&gt;
  setupNeighbors(36, cell36);&lt;br /&gt;
  setupNeighbors(37, cell37);&lt;br /&gt;
  setupNeighbors(38, cell38);&lt;br /&gt;
  setupNeighbors(39, cell39);&lt;br /&gt;
   setupNeighbors(40, cell40);&lt;br /&gt;
   setupNeighbors(41, cell41);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void drawMaze() {&lt;br /&gt;
   stroke(0, 0, 255);&lt;br /&gt;
   strokeWeight(4);&lt;br /&gt;
   line(0, 0, 0, height);&lt;br /&gt;
   line(0, 0, width, 0);&lt;br /&gt;
   line(width, 0, width, height);&lt;br /&gt;
   line(0, height, width, height);&lt;br /&gt;
   line(100, 100, 100, 300);&lt;br /&gt;
   line(100, 300, 300, 300);&lt;br /&gt;
   line(300, 300, 300, 200);&lt;br /&gt;
   line(200, 0, 200, 200);&lt;br /&gt;
   line(200, 100, 300, 100); &lt;br /&gt;
   line(0, 400, 200, 400);&lt;br /&gt;
   line(400, 0, 400, 400);&lt;br /&gt;
   line(100, 500, 500, 500);&lt;br /&gt;
   line(300, 400, 300, height);&lt;br /&gt;
   line(500, 400, 600, 400);&lt;br /&gt;
   line(400, 200, 500, 200);&lt;br /&gt;
   line(500, 300, width, 300);&lt;br /&gt;
   line(500, 100, 600, 100);&lt;br /&gt;
   line(600, 100, 600,300);&lt;br /&gt;
   line(600, 400, 600, height);&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=Midterm_Project_-_Tony_Lu&amp;diff=3814</id>
		<title>Midterm Project - Tony Lu</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=Midterm_Project_-_Tony_Lu&amp;diff=3814"/>
				<updated>2010-05-19T20:10:18Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: /* Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Title==&lt;br /&gt;
VIRTUAL MAZE&lt;br /&gt;
==Description==&lt;br /&gt;
* Motivation&lt;br /&gt;
I&amp;#039;d like my projects to have amusement values and possibly practical applications, much like a game. Along side that, it should also involve an emphasis on physical activity, while definitely showing feedback on the virtual world. I&amp;#039;m pretty fascinated with the blurring of physical and virtual realms. Hopefully it&amp;#039;ll be pretty technically advanced too.&lt;br /&gt;
* Interactive Paradigm&lt;br /&gt;
I&amp;#039;m thinking of tracking a person in physical space, and then have that person walk through a maze in virtual space. He would be able to move in real life unobstructed, of course, but if his virtual representation hits a wall it would be &amp;quot;stuck.&amp;quot; I&amp;#039;m also considering putting in aspects of Pac man or Mario, or incorporating some kind of importance on movements such as dancing or jumping... depending on if my technical ability would allow it.&lt;br /&gt;
* Technical Description&lt;br /&gt;
If possible I&amp;#039;d like Processing to track the person through webcam, possibly using brightness thresholding with a plain background and singling out the blob of black that is the person. If that doesn&amp;#039;t work I could attach LED&amp;#039;s to the person and use brightness tracking instead. The maze should be able to be drawn in Processing, and finally I&amp;#039;d have to find the way to code the limiting of the virtual entity&amp;#039;s movements.&lt;br /&gt;
&lt;br /&gt;
==Visualization==&lt;br /&gt;
* Functional Diagrams and Visual Concept&lt;br /&gt;
[[Image:Vis145b midterm.jpg|800px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
* Source Code &lt;br /&gt;
The coding contains two files, the main coding and the Cell object&lt;br /&gt;
&lt;br /&gt;
Main file: &lt;br /&gt;
&lt;br /&gt;
-adapts OpenCV&amp;#039;s face tracking code and creates the maze (composed of Cell objects) &lt;br /&gt;
{&lt;br /&gt;
import hypermedia.video.*;&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
&lt;br /&gt;
OpenCV opencv;&lt;br /&gt;
&lt;br /&gt;
// contrast/brightness values&lt;br /&gt;
&lt;br /&gt;
int contrast_value    = 0;&lt;br /&gt;
int brightness_value  = 0;&lt;br /&gt;
int cellsize = 100;&lt;br /&gt;
int cellnum = 42;&lt;br /&gt;
boolean start = true;&lt;br /&gt;
int currentcell = 0;&lt;br /&gt;
int in_cell = 0;&lt;br /&gt;
boolean move = false;&lt;br /&gt;
Cell[] cells = new Cell[cellnum];&lt;br /&gt;
PImage pacman;&lt;br /&gt;
PImage pacmanAlpha;&lt;br /&gt;
AudioPlayer player;&lt;br /&gt;
Minim minim;&lt;br /&gt;
int playercounter = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
&lt;br /&gt;
    size( 700, 600 );&lt;br /&gt;
    minim = new Minim(this);&lt;br /&gt;
    player = minim.loadFile(&amp;quot;StartGame.mp3&amp;quot;);&lt;br /&gt;
    player.loop();&lt;br /&gt;
      &lt;br /&gt;
    pacman = loadImage(&amp;quot;pacman.png&amp;quot;);&lt;br /&gt;
    pacmanAlpha = loadImage(&amp;quot;pacmanalpha3.png&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    opencv = new OpenCV( this );&lt;br /&gt;
    opencv.capture( width, height );                   // open video stream&lt;br /&gt;
    opencv.cascade( OpenCV.CASCADE_FRONTALFACE_ALT );  // load detection description, here-&amp;gt; front face detection : &amp;quot;haarcascade_frontalface_alt.xml&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
    int k = -cellsize;&lt;br /&gt;
     &lt;br /&gt;
     //int[] temp = { -1, -2, -3, -4, -5 };&lt;br /&gt;
    for(int i = 0; i &amp;lt; cellnum; i++) {&lt;br /&gt;
      if(i%(width/cellsize) == 0) { k+= cellsize; }&lt;br /&gt;
      cells[i] = new Cell(i, (i%(width/cellsize))*cellsize, k, cellsize);&lt;br /&gt;
      &lt;br /&gt;
      &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    setupAllNeighbors();&lt;br /&gt;
    &lt;br /&gt;
 &lt;br /&gt;
     &lt;br /&gt;
 &lt;br /&gt;
    // print usage&lt;br /&gt;
    println( &amp;quot;Drag mouse on X-axis inside this sketch window to change contrast&amp;quot; );&lt;br /&gt;
    println( &amp;quot;Drag mouse on Y-axis inside this sketch window to change brightness&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public void stop() {&lt;br /&gt;
    opencv.stop();&lt;br /&gt;
    super.stop();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void draw() {&lt;br /&gt;
  &lt;br /&gt;
    // grab a new frame&lt;br /&gt;
    // and convert to gray&lt;br /&gt;
    opencv.read();&lt;br /&gt;
    opencv.flip( OpenCV.FLIP_HORIZONTAL );&lt;br /&gt;
    //opencv.convert( GRAY );&lt;br /&gt;
    opencv.contrast( contrast_value );&lt;br /&gt;
    opencv.brightness( brightness_value );&lt;br /&gt;
&lt;br /&gt;
    // proceed detection&lt;br /&gt;
    Rectangle[] faces = opencv.detect( 1.2, 2, OpenCV.HAAR_DO_CANNY_PRUNING, 40, 40 );&lt;br /&gt;
&lt;br /&gt;
    // display the image&lt;br /&gt;
    image( opencv.image(), 0, 0 );&lt;br /&gt;
    noStroke();&lt;br /&gt;
    fill(255);&lt;br /&gt;
  // rect(0, 0, width, height);&lt;br /&gt;
     boolean r;&lt;br /&gt;
    &lt;br /&gt;
    drawMaze();&lt;br /&gt;
    &lt;br /&gt;
    if(start == false) { cells[currentcell].cellOn(true); }&lt;br /&gt;
     &lt;br /&gt;
       for(int l = 0; l&amp;lt;cellnum; l++) {&lt;br /&gt;
              r = false;&lt;br /&gt;
              if(cells[l].stepped == true) { r = true; }&lt;br /&gt;
              cells[l].circleOn(r);&lt;br /&gt;
           }&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
    // draw face area(s)&lt;br /&gt;
&lt;br /&gt;
    for( int i=0; i&amp;lt;faces.length; i++ ) {&lt;br /&gt;
       &lt;br /&gt;
        noFill();&lt;br /&gt;
        stroke(255,0,0);&lt;br /&gt;
        strokeWeight(5);&lt;br /&gt;
        //rect( faces[i].x, faces[i].y, faces[i].width, faces[i].height ); &lt;br /&gt;
        noStroke();&lt;br /&gt;
        fill(0, 0, 200, 80);&lt;br /&gt;
        in_cell = findClosestCell(faces[i].x + (faces[i].width)/2, faces[i].y);&lt;br /&gt;
        //ellipse(faces[i].x + (faces[i].width)/2, faces[i].y + (faces[i].height)/2, 100, 100);&lt;br /&gt;
        //ellipse(faces[i].x + (faces[i].width)/2, faces[i].y, 100, 100);&lt;br /&gt;
        //ellipse(cells[in_cell].x, cells[in_cell].y, 100, 100);&lt;br /&gt;
        &lt;br /&gt;
        if(start == true) { cells[in_cell].cellOn(); currentcell = in_cell; start = false; }&lt;br /&gt;
        &lt;br /&gt;
  &lt;br /&gt;
        &lt;br /&gt;
       &lt;br /&gt;
        for(int j = 0; j &amp;lt; 4; j++) {&lt;br /&gt;
          &lt;br /&gt;
          if(cells[currentcell].neighbors[j] == in_cell) { move = true; }&lt;br /&gt;
          &lt;br /&gt;
        }&lt;br /&gt;
        if(move == true) {&lt;br /&gt;
        &lt;br /&gt;
        cells[in_cell].cellOn();&lt;br /&gt;
      &lt;br /&gt;
        currentcell = in_cell;&lt;br /&gt;
        } &lt;br /&gt;
        &lt;br /&gt;
        move = false;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Changes contrast/brigthness values&lt;br /&gt;
 */&lt;br /&gt;
void mouseDragged() {&lt;br /&gt;
    contrast_value   = (int) map( mouseX, 0, width, -128, 128 );&lt;br /&gt;
    brightness_value = (int) map( mouseY, 0, width, -128, 128 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int findClosestCell(int face_x, int face_y) {&lt;br /&gt;
  int cellx; int celly;&lt;br /&gt;
  int xhundred = (face_x / 100) * 100; &lt;br /&gt;
  int xten = face_x % 100;&lt;br /&gt;
  int yhundred = (face_y / 100) * 100;&lt;br /&gt;
  int yten = face_y % 100;&lt;br /&gt;
  &lt;br /&gt;
  if(xten &amp;gt; 85) { if(xhundred &amp;lt; 600) { cellx = xhundred + 100; } else { cellx = xhundred; } }&lt;br /&gt;
  else if(xten &amp;lt; 15) { if(xhundred &amp;gt; 100) { cellx = xhundred - 100; } else { cellx = xhundred; } }&lt;br /&gt;
  else { cellx = xhundred; }&lt;br /&gt;
  if(yten &amp;gt; 85) { if(yhundred &amp;lt; 500) { celly = yhundred + 100; } else { celly = yhundred; } }&lt;br /&gt;
  else if(yten &amp;lt; 15) { if(yhundred &amp;gt; 100) { celly = yhundred - 100; } else { celly = yhundred; } }&lt;br /&gt;
  else { celly = yhundred; }&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  return (cellx/100) + (celly/100)*(width/cellsize);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setupNeighbors(int cell, int[] arrayOfNeighbors) {&lt;br /&gt;
 //cell neighbor set up&lt;br /&gt;
    //cells[0].neighbors[0] = 7;&lt;br /&gt;
   cells[cell].neighbors = arrayOfNeighbors;&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void setupAllNeighbors() {&lt;br /&gt;
  &lt;br /&gt;
  int[] cell0 = { 7, 1, 0, -1 };&lt;br /&gt;
  int[] cell1 = { 0, 1, 8, -1 };&lt;br /&gt;
  int[] cell2 = { 2, 3, -1, -2 };&lt;br /&gt;
  int[] cell3 = { 2, 3, 10, -1 };&lt;br /&gt;
  int[] cell4 = { 4, 11, 5, -1 };&lt;br /&gt;
  int[] cell5 = { 5, 4, 6, -2 };&lt;br /&gt;
  int[] cell6 = { 5, 6, 13, -2 };&lt;br /&gt;
  int[] cell7 = { 7, 0, 14, -1 };  &lt;br /&gt;
  int[] cell8 = { 8, 1, 15, -2 };&lt;br /&gt;
  int[] cell9 = { 9, 16, 10, -2 };&lt;br /&gt;
  int[] cell10 = { 3, 10, 17, 9 };&lt;br /&gt;
  int[] cell11 = { 4, 11, 12, -2 };&lt;br /&gt;
  int[] cell12 = { 12, 11, 19, -2 };  &lt;br /&gt;
  int[] cell13 = { 13, 20, 6, -2 };&lt;br /&gt;
  int[] cell14 = { 14, 7, 21, -2 };&lt;br /&gt;
  int[] cell15 = { 15, 16, 8, -2 };&lt;br /&gt;
  int[] cell16 = { 16, 15, 9, -2 };&lt;br /&gt;
  int[] cell17 = { 17, 10, 24, -2 };  &lt;br /&gt;
  int[] cell18 = { 18, 19, 25, -2 };&lt;br /&gt;
  int[] cell19 = { 19, 12, 18, -1 };&lt;br /&gt;
  int[] cell20 = { 20, 13, -2, -1 };&lt;br /&gt;
  int[] cell21 = { 21, 22, 14, -2 };&lt;br /&gt;
  int[] cell22 = { 22, 23, 21, -2 };  &lt;br /&gt;
  int[] cell23 = { 23, 22, 24, 30 };&lt;br /&gt;
  int[] cell24 = { 24, 31, 17, 23 };&lt;br /&gt;
  int[] cell25 = { 25, 32, 18, 26 };&lt;br /&gt;
  int[] cell26 = { 26, 27, 25, -2 };&lt;br /&gt;
  int[] cell27 = { 27, 26, 34, -2 };  &lt;br /&gt;
  int[] cell28 = { 28, 29, 35, -1 };&lt;br /&gt;
  int[] cell29 = { 29, 30, 28, -2 };&lt;br /&gt;
  int[] cell30 = { 30, 23, 29, -1 };&lt;br /&gt;
  int[] cell31 = { 31, 32, 24, -2 };&lt;br /&gt;
  int[] cell32 = { 31, 32, 33, 25 };  &lt;br /&gt;
  int[] cell33 = { 33, 32, 40, -1 };&lt;br /&gt;
  int[] cell34 = { 34, 41, 27, -2 };&lt;br /&gt;
  int[] cell35 = { 35, 36, 28, -2 };&lt;br /&gt;
  int[] cell36 = { 36, 35, 37, -2 };&lt;br /&gt;
  int[] cell37 = { 37, 36, -1, -2 };  &lt;br /&gt;
  int[] cell38 = { 38, 39, -2, -1 };&lt;br /&gt;
  int[] cell39 = { 39, 40, 38, -2 };&lt;br /&gt;
  int[] cell40 = { 40, 39, 33, -2 };&lt;br /&gt;
  int[] cell41 = { 41, 34, -2, -1 };&lt;br /&gt;
  &lt;br /&gt;
  setupNeighbors(0, cell0);&lt;br /&gt;
  setupNeighbors(1, cell1);&lt;br /&gt;
  setupNeighbors(2, cell2);&lt;br /&gt;
  setupNeighbors(3, cell3);&lt;br /&gt;
  setupNeighbors(4, cell4);&lt;br /&gt;
   setupNeighbors(5, cell5);&lt;br /&gt;
  setupNeighbors(6, cell6);&lt;br /&gt;
  setupNeighbors(7, cell7);&lt;br /&gt;
  setupNeighbors(8, cell8);&lt;br /&gt;
  setupNeighbors(9, cell9);&lt;br /&gt;
   setupNeighbors(10, cell10);&lt;br /&gt;
  setupNeighbors(11, cell11);&lt;br /&gt;
  setupNeighbors(12, cell12);&lt;br /&gt;
  setupNeighbors(13, cell13);&lt;br /&gt;
  setupNeighbors(14, cell14);&lt;br /&gt;
   setupNeighbors(15, cell15);&lt;br /&gt;
  setupNeighbors(16, cell16);&lt;br /&gt;
  setupNeighbors(17, cell17);&lt;br /&gt;
  setupNeighbors(18, cell18);&lt;br /&gt;
  setupNeighbors(19, cell19);&lt;br /&gt;
   setupNeighbors(20, cell20);&lt;br /&gt;
  setupNeighbors(21, cell21);&lt;br /&gt;
  setupNeighbors(22, cell22);&lt;br /&gt;
  setupNeighbors(23, cell23);&lt;br /&gt;
  setupNeighbors(24, cell24);&lt;br /&gt;
   setupNeighbors(25, cell25);&lt;br /&gt;
  setupNeighbors(26, cell26);&lt;br /&gt;
  setupNeighbors(27, cell27);&lt;br /&gt;
  setupNeighbors(28, cell28);&lt;br /&gt;
  setupNeighbors(29, cell29);&lt;br /&gt;
   setupNeighbors(30, cell30);&lt;br /&gt;
  setupNeighbors(31, cell31);&lt;br /&gt;
  setupNeighbors(32, cell32);&lt;br /&gt;
  setupNeighbors(33, cell33);&lt;br /&gt;
  setupNeighbors(34, cell34);&lt;br /&gt;
   setupNeighbors(35, cell35);&lt;br /&gt;
  setupNeighbors(36, cell36);&lt;br /&gt;
  setupNeighbors(37, cell37);&lt;br /&gt;
  setupNeighbors(38, cell38);&lt;br /&gt;
  setupNeighbors(39, cell39);&lt;br /&gt;
   setupNeighbors(40, cell40);&lt;br /&gt;
   setupNeighbors(41, cell41);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void drawMaze() {&lt;br /&gt;
   stroke(0, 0, 255);&lt;br /&gt;
   strokeWeight(4);&lt;br /&gt;
   line(0, 0, 0, height);&lt;br /&gt;
   line(0, 0, width, 0);&lt;br /&gt;
   line(width, 0, width, height);&lt;br /&gt;
   line(0, height, width, height);&lt;br /&gt;
   line(100, 100, 100, 300);&lt;br /&gt;
   line(100, 300, 300, 300);&lt;br /&gt;
   line(300, 300, 300, 200);&lt;br /&gt;
   line(200, 0, 200, 200);&lt;br /&gt;
   line(200, 100, 300, 100); &lt;br /&gt;
   line(0, 400, 200, 400);&lt;br /&gt;
   line(400, 0, 400, 400);&lt;br /&gt;
   line(100, 500, 500, 500);&lt;br /&gt;
   line(300, 400, 300, height);&lt;br /&gt;
   line(500, 400, 600, 400);&lt;br /&gt;
   line(400, 200, 500, 200);&lt;br /&gt;
   line(500, 300, width, 300);&lt;br /&gt;
   line(500, 100, 600, 100);&lt;br /&gt;
   line(600, 100, 600,300);&lt;br /&gt;
   line(600, 400, 600, height);&lt;br /&gt;
}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=Midterm_Project_-_Tony_Lu&amp;diff=3813</id>
		<title>Midterm Project - Tony Lu</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=Midterm_Project_-_Tony_Lu&amp;diff=3813"/>
				<updated>2010-05-19T20:09:40Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: /* Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Title==&lt;br /&gt;
VIRTUAL MAZE&lt;br /&gt;
==Description==&lt;br /&gt;
* Motivation&lt;br /&gt;
I&amp;#039;d like my projects to have amusement values and possibly practical applications, much like a game. Along side that, it should also involve an emphasis on physical activity, while definitely showing feedback on the virtual world. I&amp;#039;m pretty fascinated with the blurring of physical and virtual realms. Hopefully it&amp;#039;ll be pretty technically advanced too.&lt;br /&gt;
* Interactive Paradigm&lt;br /&gt;
I&amp;#039;m thinking of tracking a person in physical space, and then have that person walk through a maze in virtual space. He would be able to move in real life unobstructed, of course, but if his virtual representation hits a wall it would be &amp;quot;stuck.&amp;quot; I&amp;#039;m also considering putting in aspects of Pac man or Mario, or incorporating some kind of importance on movements such as dancing or jumping... depending on if my technical ability would allow it.&lt;br /&gt;
* Technical Description&lt;br /&gt;
If possible I&amp;#039;d like Processing to track the person through webcam, possibly using brightness thresholding with a plain background and singling out the blob of black that is the person. If that doesn&amp;#039;t work I could attach LED&amp;#039;s to the person and use brightness tracking instead. The maze should be able to be drawn in Processing, and finally I&amp;#039;d have to find the way to code the limiting of the virtual entity&amp;#039;s movements.&lt;br /&gt;
&lt;br /&gt;
==Visualization==&lt;br /&gt;
* Functional Diagrams and Visual Concept&lt;br /&gt;
[[Image:Vis145b midterm.jpg|800px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
* Source Code &lt;br /&gt;
The coding contains two files, the main coding and the Cell object&lt;br /&gt;
&lt;br /&gt;
Main file: &lt;br /&gt;
&lt;br /&gt;
-adapts OpenCV&amp;#039;s face tracking code and creates the maze (composed of Cell objects) &lt;br /&gt;
&lt;br /&gt;
import hypermedia.video.*;&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
&lt;br /&gt;
OpenCV opencv;&lt;br /&gt;
&lt;br /&gt;
// contrast/brightness values&lt;br /&gt;
&lt;br /&gt;
int contrast_value    = 0;&lt;br /&gt;
int brightness_value  = 0;&lt;br /&gt;
int cellsize = 100;&lt;br /&gt;
int cellnum = 42;&lt;br /&gt;
boolean start = true;&lt;br /&gt;
int currentcell = 0;&lt;br /&gt;
int in_cell = 0;&lt;br /&gt;
boolean move = false;&lt;br /&gt;
Cell[] cells = new Cell[cellnum];&lt;br /&gt;
PImage pacman;&lt;br /&gt;
PImage pacmanAlpha;&lt;br /&gt;
AudioPlayer player;&lt;br /&gt;
Minim minim;&lt;br /&gt;
int playercounter = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
&lt;br /&gt;
    size( 700, 600 );&lt;br /&gt;
    minim = new Minim(this);&lt;br /&gt;
    player = minim.loadFile(&amp;quot;StartGame.mp3&amp;quot;);&lt;br /&gt;
    player.loop();&lt;br /&gt;
      &lt;br /&gt;
    pacman = loadImage(&amp;quot;pacman.png&amp;quot;);&lt;br /&gt;
    pacmanAlpha = loadImage(&amp;quot;pacmanalpha3.png&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    opencv = new OpenCV( this );&lt;br /&gt;
    opencv.capture( width, height );                   // open video stream&lt;br /&gt;
    opencv.cascade( OpenCV.CASCADE_FRONTALFACE_ALT );  // load detection description, here-&amp;gt; front face detection : &amp;quot;haarcascade_frontalface_alt.xml&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
    int k = -cellsize;&lt;br /&gt;
     &lt;br /&gt;
     //int[] temp = { -1, -2, -3, -4, -5 };&lt;br /&gt;
    for(int i = 0; i &amp;lt; cellnum; i++) {&lt;br /&gt;
      if(i%(width/cellsize) == 0) { k+= cellsize; }&lt;br /&gt;
      cells[i] = new Cell(i, (i%(width/cellsize))*cellsize, k, cellsize);&lt;br /&gt;
      &lt;br /&gt;
      &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    setupAllNeighbors();&lt;br /&gt;
    &lt;br /&gt;
 &lt;br /&gt;
     &lt;br /&gt;
 &lt;br /&gt;
    // print usage&lt;br /&gt;
    println( &amp;quot;Drag mouse on X-axis inside this sketch window to change contrast&amp;quot; );&lt;br /&gt;
    println( &amp;quot;Drag mouse on Y-axis inside this sketch window to change brightness&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public void stop() {&lt;br /&gt;
    opencv.stop();&lt;br /&gt;
    super.stop();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void draw() {&lt;br /&gt;
  &lt;br /&gt;
    // grab a new frame&lt;br /&gt;
    // and convert to gray&lt;br /&gt;
    opencv.read();&lt;br /&gt;
    opencv.flip( OpenCV.FLIP_HORIZONTAL );&lt;br /&gt;
    //opencv.convert( GRAY );&lt;br /&gt;
    opencv.contrast( contrast_value );&lt;br /&gt;
    opencv.brightness( brightness_value );&lt;br /&gt;
&lt;br /&gt;
    // proceed detection&lt;br /&gt;
    Rectangle[] faces = opencv.detect( 1.2, 2, OpenCV.HAAR_DO_CANNY_PRUNING, 40, 40 );&lt;br /&gt;
&lt;br /&gt;
    // display the image&lt;br /&gt;
    image( opencv.image(), 0, 0 );&lt;br /&gt;
    noStroke();&lt;br /&gt;
    fill(255);&lt;br /&gt;
  // rect(0, 0, width, height);&lt;br /&gt;
     boolean r;&lt;br /&gt;
    &lt;br /&gt;
    drawMaze();&lt;br /&gt;
    &lt;br /&gt;
    if(start == false) { cells[currentcell].cellOn(true); }&lt;br /&gt;
     &lt;br /&gt;
       for(int l = 0; l&amp;lt;cellnum; l++) {&lt;br /&gt;
              r = false;&lt;br /&gt;
              if(cells[l].stepped == true) { r = true; }&lt;br /&gt;
              cells[l].circleOn(r);&lt;br /&gt;
           }&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
    // draw face area(s)&lt;br /&gt;
&lt;br /&gt;
    for( int i=0; i&amp;lt;faces.length; i++ ) {&lt;br /&gt;
       &lt;br /&gt;
        noFill();&lt;br /&gt;
        stroke(255,0,0);&lt;br /&gt;
        strokeWeight(5);&lt;br /&gt;
        //rect( faces[i].x, faces[i].y, faces[i].width, faces[i].height ); &lt;br /&gt;
        noStroke();&lt;br /&gt;
        fill(0, 0, 200, 80);&lt;br /&gt;
        in_cell = findClosestCell(faces[i].x + (faces[i].width)/2, faces[i].y);&lt;br /&gt;
        //ellipse(faces[i].x + (faces[i].width)/2, faces[i].y + (faces[i].height)/2, 100, 100);&lt;br /&gt;
        //ellipse(faces[i].x + (faces[i].width)/2, faces[i].y, 100, 100);&lt;br /&gt;
        //ellipse(cells[in_cell].x, cells[in_cell].y, 100, 100);&lt;br /&gt;
        &lt;br /&gt;
        if(start == true) { cells[in_cell].cellOn(); currentcell = in_cell; start = false; }&lt;br /&gt;
        &lt;br /&gt;
  &lt;br /&gt;
        &lt;br /&gt;
       &lt;br /&gt;
        for(int j = 0; j &amp;lt; 4; j++) {&lt;br /&gt;
          &lt;br /&gt;
          if(cells[currentcell].neighbors[j] == in_cell) { move = true; }&lt;br /&gt;
          &lt;br /&gt;
        }&lt;br /&gt;
        if(move == true) {&lt;br /&gt;
        &lt;br /&gt;
        cells[in_cell].cellOn();&lt;br /&gt;
      &lt;br /&gt;
        currentcell = in_cell;&lt;br /&gt;
        } &lt;br /&gt;
        &lt;br /&gt;
        move = false;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Changes contrast/brigthness values&lt;br /&gt;
 */&lt;br /&gt;
void mouseDragged() {&lt;br /&gt;
    contrast_value   = (int) map( mouseX, 0, width, -128, 128 );&lt;br /&gt;
    brightness_value = (int) map( mouseY, 0, width, -128, 128 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int findClosestCell(int face_x, int face_y) {&lt;br /&gt;
  int cellx; int celly;&lt;br /&gt;
  int xhundred = (face_x / 100) * 100; &lt;br /&gt;
  int xten = face_x % 100;&lt;br /&gt;
  int yhundred = (face_y / 100) * 100;&lt;br /&gt;
  int yten = face_y % 100;&lt;br /&gt;
  &lt;br /&gt;
  if(xten &amp;gt; 85) { if(xhundred &amp;lt; 600) { cellx = xhundred + 100; } else { cellx = xhundred; } }&lt;br /&gt;
  else if(xten &amp;lt; 15) { if(xhundred &amp;gt; 100) { cellx = xhundred - 100; } else { cellx = xhundred; } }&lt;br /&gt;
  else { cellx = xhundred; }&lt;br /&gt;
  if(yten &amp;gt; 85) { if(yhundred &amp;lt; 500) { celly = yhundred + 100; } else { celly = yhundred; } }&lt;br /&gt;
  else if(yten &amp;lt; 15) { if(yhundred &amp;gt; 100) { celly = yhundred - 100; } else { celly = yhundred; } }&lt;br /&gt;
  else { celly = yhundred; }&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  return (cellx/100) + (celly/100)*(width/cellsize);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setupNeighbors(int cell, int[] arrayOfNeighbors) {&lt;br /&gt;
 //cell neighbor set up&lt;br /&gt;
    //cells[0].neighbors[0] = 7;&lt;br /&gt;
   cells[cell].neighbors = arrayOfNeighbors;&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void setupAllNeighbors() {&lt;br /&gt;
  &lt;br /&gt;
  int[] cell0 = { 7, 1, 0, -1 };&lt;br /&gt;
  int[] cell1 = { 0, 1, 8, -1 };&lt;br /&gt;
  int[] cell2 = { 2, 3, -1, -2 };&lt;br /&gt;
  int[] cell3 = { 2, 3, 10, -1 };&lt;br /&gt;
  int[] cell4 = { 4, 11, 5, -1 };&lt;br /&gt;
  int[] cell5 = { 5, 4, 6, -2 };&lt;br /&gt;
  int[] cell6 = { 5, 6, 13, -2 };&lt;br /&gt;
  int[] cell7 = { 7, 0, 14, -1 };  &lt;br /&gt;
  int[] cell8 = { 8, 1, 15, -2 };&lt;br /&gt;
  int[] cell9 = { 9, 16, 10, -2 };&lt;br /&gt;
  int[] cell10 = { 3, 10, 17, 9 };&lt;br /&gt;
  int[] cell11 = { 4, 11, 12, -2 };&lt;br /&gt;
  int[] cell12 = { 12, 11, 19, -2 };  &lt;br /&gt;
  int[] cell13 = { 13, 20, 6, -2 };&lt;br /&gt;
  int[] cell14 = { 14, 7, 21, -2 };&lt;br /&gt;
  int[] cell15 = { 15, 16, 8, -2 };&lt;br /&gt;
  int[] cell16 = { 16, 15, 9, -2 };&lt;br /&gt;
  int[] cell17 = { 17, 10, 24, -2 };  &lt;br /&gt;
  int[] cell18 = { 18, 19, 25, -2 };&lt;br /&gt;
  int[] cell19 = { 19, 12, 18, -1 };&lt;br /&gt;
  int[] cell20 = { 20, 13, -2, -1 };&lt;br /&gt;
  int[] cell21 = { 21, 22, 14, -2 };&lt;br /&gt;
  int[] cell22 = { 22, 23, 21, -2 };  &lt;br /&gt;
  int[] cell23 = { 23, 22, 24, 30 };&lt;br /&gt;
  int[] cell24 = { 24, 31, 17, 23 };&lt;br /&gt;
  int[] cell25 = { 25, 32, 18, 26 };&lt;br /&gt;
  int[] cell26 = { 26, 27, 25, -2 };&lt;br /&gt;
  int[] cell27 = { 27, 26, 34, -2 };  &lt;br /&gt;
  int[] cell28 = { 28, 29, 35, -1 };&lt;br /&gt;
  int[] cell29 = { 29, 30, 28, -2 };&lt;br /&gt;
  int[] cell30 = { 30, 23, 29, -1 };&lt;br /&gt;
  int[] cell31 = { 31, 32, 24, -2 };&lt;br /&gt;
  int[] cell32 = { 31, 32, 33, 25 };  &lt;br /&gt;
  int[] cell33 = { 33, 32, 40, -1 };&lt;br /&gt;
  int[] cell34 = { 34, 41, 27, -2 };&lt;br /&gt;
  int[] cell35 = { 35, 36, 28, -2 };&lt;br /&gt;
  int[] cell36 = { 36, 35, 37, -2 };&lt;br /&gt;
  int[] cell37 = { 37, 36, -1, -2 };  &lt;br /&gt;
  int[] cell38 = { 38, 39, -2, -1 };&lt;br /&gt;
  int[] cell39 = { 39, 40, 38, -2 };&lt;br /&gt;
  int[] cell40 = { 40, 39, 33, -2 };&lt;br /&gt;
  int[] cell41 = { 41, 34, -2, -1 };&lt;br /&gt;
  &lt;br /&gt;
  setupNeighbors(0, cell0);&lt;br /&gt;
  setupNeighbors(1, cell1);&lt;br /&gt;
  setupNeighbors(2, cell2);&lt;br /&gt;
  setupNeighbors(3, cell3);&lt;br /&gt;
  setupNeighbors(4, cell4);&lt;br /&gt;
   setupNeighbors(5, cell5);&lt;br /&gt;
  setupNeighbors(6, cell6);&lt;br /&gt;
  setupNeighbors(7, cell7);&lt;br /&gt;
  setupNeighbors(8, cell8);&lt;br /&gt;
  setupNeighbors(9, cell9);&lt;br /&gt;
   setupNeighbors(10, cell10);&lt;br /&gt;
  setupNeighbors(11, cell11);&lt;br /&gt;
  setupNeighbors(12, cell12);&lt;br /&gt;
  setupNeighbors(13, cell13);&lt;br /&gt;
  setupNeighbors(14, cell14);&lt;br /&gt;
   setupNeighbors(15, cell15);&lt;br /&gt;
  setupNeighbors(16, cell16);&lt;br /&gt;
  setupNeighbors(17, cell17);&lt;br /&gt;
  setupNeighbors(18, cell18);&lt;br /&gt;
  setupNeighbors(19, cell19);&lt;br /&gt;
   setupNeighbors(20, cell20);&lt;br /&gt;
  setupNeighbors(21, cell21);&lt;br /&gt;
  setupNeighbors(22, cell22);&lt;br /&gt;
  setupNeighbors(23, cell23);&lt;br /&gt;
  setupNeighbors(24, cell24);&lt;br /&gt;
   setupNeighbors(25, cell25);&lt;br /&gt;
  setupNeighbors(26, cell26);&lt;br /&gt;
  setupNeighbors(27, cell27);&lt;br /&gt;
  setupNeighbors(28, cell28);&lt;br /&gt;
  setupNeighbors(29, cell29);&lt;br /&gt;
   setupNeighbors(30, cell30);&lt;br /&gt;
  setupNeighbors(31, cell31);&lt;br /&gt;
  setupNeighbors(32, cell32);&lt;br /&gt;
  setupNeighbors(33, cell33);&lt;br /&gt;
  setupNeighbors(34, cell34);&lt;br /&gt;
   setupNeighbors(35, cell35);&lt;br /&gt;
  setupNeighbors(36, cell36);&lt;br /&gt;
  setupNeighbors(37, cell37);&lt;br /&gt;
  setupNeighbors(38, cell38);&lt;br /&gt;
  setupNeighbors(39, cell39);&lt;br /&gt;
   setupNeighbors(40, cell40);&lt;br /&gt;
   setupNeighbors(41, cell41);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void drawMaze() {&lt;br /&gt;
   stroke(0, 0, 255);&lt;br /&gt;
   strokeWeight(4);&lt;br /&gt;
   line(0, 0, 0, height);&lt;br /&gt;
   line(0, 0, width, 0);&lt;br /&gt;
   line(width, 0, width, height);&lt;br /&gt;
   line(0, height, width, height);&lt;br /&gt;
   line(100, 100, 100, 300);&lt;br /&gt;
   line(100, 300, 300, 300);&lt;br /&gt;
   line(300, 300, 300, 200);&lt;br /&gt;
   line(200, 0, 200, 200);&lt;br /&gt;
   line(200, 100, 300, 100); &lt;br /&gt;
   line(0, 400, 200, 400);&lt;br /&gt;
   line(400, 0, 400, 400);&lt;br /&gt;
   line(100, 500, 500, 500);&lt;br /&gt;
   line(300, 400, 300, height);&lt;br /&gt;
   line(500, 400, 600, 400);&lt;br /&gt;
   line(400, 200, 500, 200);&lt;br /&gt;
   line(500, 300, width, 300);&lt;br /&gt;
   line(500, 100, 600, 100);&lt;br /&gt;
   line(600, 100, 600,300);&lt;br /&gt;
   line(600, 400, 600, height);&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=Midterm_Project_-_Tony_Lu&amp;diff=3812</id>
		<title>Midterm Project - Tony Lu</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=Midterm_Project_-_Tony_Lu&amp;diff=3812"/>
				<updated>2010-05-19T20:09:26Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: /* Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Title==&lt;br /&gt;
VIRTUAL MAZE&lt;br /&gt;
==Description==&lt;br /&gt;
* Motivation&lt;br /&gt;
I&amp;#039;d like my projects to have amusement values and possibly practical applications, much like a game. Along side that, it should also involve an emphasis on physical activity, while definitely showing feedback on the virtual world. I&amp;#039;m pretty fascinated with the blurring of physical and virtual realms. Hopefully it&amp;#039;ll be pretty technically advanced too.&lt;br /&gt;
* Interactive Paradigm&lt;br /&gt;
I&amp;#039;m thinking of tracking a person in physical space, and then have that person walk through a maze in virtual space. He would be able to move in real life unobstructed, of course, but if his virtual representation hits a wall it would be &amp;quot;stuck.&amp;quot; I&amp;#039;m also considering putting in aspects of Pac man or Mario, or incorporating some kind of importance on movements such as dancing or jumping... depending on if my technical ability would allow it.&lt;br /&gt;
* Technical Description&lt;br /&gt;
If possible I&amp;#039;d like Processing to track the person through webcam, possibly using brightness thresholding with a plain background and singling out the blob of black that is the person. If that doesn&amp;#039;t work I could attach LED&amp;#039;s to the person and use brightness tracking instead. The maze should be able to be drawn in Processing, and finally I&amp;#039;d have to find the way to code the limiting of the virtual entity&amp;#039;s movements.&lt;br /&gt;
&lt;br /&gt;
==Visualization==&lt;br /&gt;
* Functional Diagrams and Visual Concept&lt;br /&gt;
[[Image:Vis145b midterm.jpg|800px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
* Source Code &lt;br /&gt;
The coding contains two files, the main coding and the Cell object&lt;br /&gt;
&lt;br /&gt;
Main file: &lt;br /&gt;
-adapts OpenCV&amp;#039;s face tracking code and creates the maze (composed of Cell objects) &lt;br /&gt;
&lt;br /&gt;
import hypermedia.video.*;&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
&lt;br /&gt;
OpenCV opencv;&lt;br /&gt;
&lt;br /&gt;
// contrast/brightness values&lt;br /&gt;
&lt;br /&gt;
int contrast_value    = 0;&lt;br /&gt;
int brightness_value  = 0;&lt;br /&gt;
int cellsize = 100;&lt;br /&gt;
int cellnum = 42;&lt;br /&gt;
boolean start = true;&lt;br /&gt;
int currentcell = 0;&lt;br /&gt;
int in_cell = 0;&lt;br /&gt;
boolean move = false;&lt;br /&gt;
Cell[] cells = new Cell[cellnum];&lt;br /&gt;
PImage pacman;&lt;br /&gt;
PImage pacmanAlpha;&lt;br /&gt;
AudioPlayer player;&lt;br /&gt;
Minim minim;&lt;br /&gt;
int playercounter = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
&lt;br /&gt;
    size( 700, 600 );&lt;br /&gt;
    minim = new Minim(this);&lt;br /&gt;
    player = minim.loadFile(&amp;quot;StartGame.mp3&amp;quot;);&lt;br /&gt;
    player.loop();&lt;br /&gt;
      &lt;br /&gt;
    pacman = loadImage(&amp;quot;pacman.png&amp;quot;);&lt;br /&gt;
    pacmanAlpha = loadImage(&amp;quot;pacmanalpha3.png&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    opencv = new OpenCV( this );&lt;br /&gt;
    opencv.capture( width, height );                   // open video stream&lt;br /&gt;
    opencv.cascade( OpenCV.CASCADE_FRONTALFACE_ALT );  // load detection description, here-&amp;gt; front face detection : &amp;quot;haarcascade_frontalface_alt.xml&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
    int k = -cellsize;&lt;br /&gt;
     &lt;br /&gt;
     //int[] temp = { -1, -2, -3, -4, -5 };&lt;br /&gt;
    for(int i = 0; i &amp;lt; cellnum; i++) {&lt;br /&gt;
      if(i%(width/cellsize) == 0) { k+= cellsize; }&lt;br /&gt;
      cells[i] = new Cell(i, (i%(width/cellsize))*cellsize, k, cellsize);&lt;br /&gt;
      &lt;br /&gt;
      &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    setupAllNeighbors();&lt;br /&gt;
    &lt;br /&gt;
 &lt;br /&gt;
     &lt;br /&gt;
 &lt;br /&gt;
    // print usage&lt;br /&gt;
    println( &amp;quot;Drag mouse on X-axis inside this sketch window to change contrast&amp;quot; );&lt;br /&gt;
    println( &amp;quot;Drag mouse on Y-axis inside this sketch window to change brightness&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public void stop() {&lt;br /&gt;
    opencv.stop();&lt;br /&gt;
    super.stop();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void draw() {&lt;br /&gt;
  &lt;br /&gt;
    // grab a new frame&lt;br /&gt;
    // and convert to gray&lt;br /&gt;
    opencv.read();&lt;br /&gt;
    opencv.flip( OpenCV.FLIP_HORIZONTAL );&lt;br /&gt;
    //opencv.convert( GRAY );&lt;br /&gt;
    opencv.contrast( contrast_value );&lt;br /&gt;
    opencv.brightness( brightness_value );&lt;br /&gt;
&lt;br /&gt;
    // proceed detection&lt;br /&gt;
    Rectangle[] faces = opencv.detect( 1.2, 2, OpenCV.HAAR_DO_CANNY_PRUNING, 40, 40 );&lt;br /&gt;
&lt;br /&gt;
    // display the image&lt;br /&gt;
    image( opencv.image(), 0, 0 );&lt;br /&gt;
    noStroke();&lt;br /&gt;
    fill(255);&lt;br /&gt;
  // rect(0, 0, width, height);&lt;br /&gt;
     boolean r;&lt;br /&gt;
    &lt;br /&gt;
    drawMaze();&lt;br /&gt;
    &lt;br /&gt;
    if(start == false) { cells[currentcell].cellOn(true); }&lt;br /&gt;
     &lt;br /&gt;
       for(int l = 0; l&amp;lt;cellnum; l++) {&lt;br /&gt;
              r = false;&lt;br /&gt;
              if(cells[l].stepped == true) { r = true; }&lt;br /&gt;
              cells[l].circleOn(r);&lt;br /&gt;
           }&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
    // draw face area(s)&lt;br /&gt;
&lt;br /&gt;
    for( int i=0; i&amp;lt;faces.length; i++ ) {&lt;br /&gt;
       &lt;br /&gt;
        noFill();&lt;br /&gt;
        stroke(255,0,0);&lt;br /&gt;
        strokeWeight(5);&lt;br /&gt;
        //rect( faces[i].x, faces[i].y, faces[i].width, faces[i].height ); &lt;br /&gt;
        noStroke();&lt;br /&gt;
        fill(0, 0, 200, 80);&lt;br /&gt;
        in_cell = findClosestCell(faces[i].x + (faces[i].width)/2, faces[i].y);&lt;br /&gt;
        //ellipse(faces[i].x + (faces[i].width)/2, faces[i].y + (faces[i].height)/2, 100, 100);&lt;br /&gt;
        //ellipse(faces[i].x + (faces[i].width)/2, faces[i].y, 100, 100);&lt;br /&gt;
        //ellipse(cells[in_cell].x, cells[in_cell].y, 100, 100);&lt;br /&gt;
        &lt;br /&gt;
        if(start == true) { cells[in_cell].cellOn(); currentcell = in_cell; start = false; }&lt;br /&gt;
        &lt;br /&gt;
  &lt;br /&gt;
        &lt;br /&gt;
       &lt;br /&gt;
        for(int j = 0; j &amp;lt; 4; j++) {&lt;br /&gt;
          &lt;br /&gt;
          if(cells[currentcell].neighbors[j] == in_cell) { move = true; }&lt;br /&gt;
          &lt;br /&gt;
        }&lt;br /&gt;
        if(move == true) {&lt;br /&gt;
        &lt;br /&gt;
        cells[in_cell].cellOn();&lt;br /&gt;
      &lt;br /&gt;
        currentcell = in_cell;&lt;br /&gt;
        } &lt;br /&gt;
        &lt;br /&gt;
        move = false;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Changes contrast/brigthness values&lt;br /&gt;
 */&lt;br /&gt;
void mouseDragged() {&lt;br /&gt;
    contrast_value   = (int) map( mouseX, 0, width, -128, 128 );&lt;br /&gt;
    brightness_value = (int) map( mouseY, 0, width, -128, 128 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int findClosestCell(int face_x, int face_y) {&lt;br /&gt;
  int cellx; int celly;&lt;br /&gt;
  int xhundred = (face_x / 100) * 100; &lt;br /&gt;
  int xten = face_x % 100;&lt;br /&gt;
  int yhundred = (face_y / 100) * 100;&lt;br /&gt;
  int yten = face_y % 100;&lt;br /&gt;
  &lt;br /&gt;
  if(xten &amp;gt; 85) { if(xhundred &amp;lt; 600) { cellx = xhundred + 100; } else { cellx = xhundred; } }&lt;br /&gt;
  else if(xten &amp;lt; 15) { if(xhundred &amp;gt; 100) { cellx = xhundred - 100; } else { cellx = xhundred; } }&lt;br /&gt;
  else { cellx = xhundred; }&lt;br /&gt;
  if(yten &amp;gt; 85) { if(yhundred &amp;lt; 500) { celly = yhundred + 100; } else { celly = yhundred; } }&lt;br /&gt;
  else if(yten &amp;lt; 15) { if(yhundred &amp;gt; 100) { celly = yhundred - 100; } else { celly = yhundred; } }&lt;br /&gt;
  else { celly = yhundred; }&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  return (cellx/100) + (celly/100)*(width/cellsize);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setupNeighbors(int cell, int[] arrayOfNeighbors) {&lt;br /&gt;
 //cell neighbor set up&lt;br /&gt;
    //cells[0].neighbors[0] = 7;&lt;br /&gt;
   cells[cell].neighbors = arrayOfNeighbors;&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void setupAllNeighbors() {&lt;br /&gt;
  &lt;br /&gt;
  int[] cell0 = { 7, 1, 0, -1 };&lt;br /&gt;
  int[] cell1 = { 0, 1, 8, -1 };&lt;br /&gt;
  int[] cell2 = { 2, 3, -1, -2 };&lt;br /&gt;
  int[] cell3 = { 2, 3, 10, -1 };&lt;br /&gt;
  int[] cell4 = { 4, 11, 5, -1 };&lt;br /&gt;
  int[] cell5 = { 5, 4, 6, -2 };&lt;br /&gt;
  int[] cell6 = { 5, 6, 13, -2 };&lt;br /&gt;
  int[] cell7 = { 7, 0, 14, -1 };  &lt;br /&gt;
  int[] cell8 = { 8, 1, 15, -2 };&lt;br /&gt;
  int[] cell9 = { 9, 16, 10, -2 };&lt;br /&gt;
  int[] cell10 = { 3, 10, 17, 9 };&lt;br /&gt;
  int[] cell11 = { 4, 11, 12, -2 };&lt;br /&gt;
  int[] cell12 = { 12, 11, 19, -2 };  &lt;br /&gt;
  int[] cell13 = { 13, 20, 6, -2 };&lt;br /&gt;
  int[] cell14 = { 14, 7, 21, -2 };&lt;br /&gt;
  int[] cell15 = { 15, 16, 8, -2 };&lt;br /&gt;
  int[] cell16 = { 16, 15, 9, -2 };&lt;br /&gt;
  int[] cell17 = { 17, 10, 24, -2 };  &lt;br /&gt;
  int[] cell18 = { 18, 19, 25, -2 };&lt;br /&gt;
  int[] cell19 = { 19, 12, 18, -1 };&lt;br /&gt;
  int[] cell20 = { 20, 13, -2, -1 };&lt;br /&gt;
  int[] cell21 = { 21, 22, 14, -2 };&lt;br /&gt;
  int[] cell22 = { 22, 23, 21, -2 };  &lt;br /&gt;
  int[] cell23 = { 23, 22, 24, 30 };&lt;br /&gt;
  int[] cell24 = { 24, 31, 17, 23 };&lt;br /&gt;
  int[] cell25 = { 25, 32, 18, 26 };&lt;br /&gt;
  int[] cell26 = { 26, 27, 25, -2 };&lt;br /&gt;
  int[] cell27 = { 27, 26, 34, -2 };  &lt;br /&gt;
  int[] cell28 = { 28, 29, 35, -1 };&lt;br /&gt;
  int[] cell29 = { 29, 30, 28, -2 };&lt;br /&gt;
  int[] cell30 = { 30, 23, 29, -1 };&lt;br /&gt;
  int[] cell31 = { 31, 32, 24, -2 };&lt;br /&gt;
  int[] cell32 = { 31, 32, 33, 25 };  &lt;br /&gt;
  int[] cell33 = { 33, 32, 40, -1 };&lt;br /&gt;
  int[] cell34 = { 34, 41, 27, -2 };&lt;br /&gt;
  int[] cell35 = { 35, 36, 28, -2 };&lt;br /&gt;
  int[] cell36 = { 36, 35, 37, -2 };&lt;br /&gt;
  int[] cell37 = { 37, 36, -1, -2 };  &lt;br /&gt;
  int[] cell38 = { 38, 39, -2, -1 };&lt;br /&gt;
  int[] cell39 = { 39, 40, 38, -2 };&lt;br /&gt;
  int[] cell40 = { 40, 39, 33, -2 };&lt;br /&gt;
  int[] cell41 = { 41, 34, -2, -1 };&lt;br /&gt;
  &lt;br /&gt;
  setupNeighbors(0, cell0);&lt;br /&gt;
  setupNeighbors(1, cell1);&lt;br /&gt;
  setupNeighbors(2, cell2);&lt;br /&gt;
  setupNeighbors(3, cell3);&lt;br /&gt;
  setupNeighbors(4, cell4);&lt;br /&gt;
   setupNeighbors(5, cell5);&lt;br /&gt;
  setupNeighbors(6, cell6);&lt;br /&gt;
  setupNeighbors(7, cell7);&lt;br /&gt;
  setupNeighbors(8, cell8);&lt;br /&gt;
  setupNeighbors(9, cell9);&lt;br /&gt;
   setupNeighbors(10, cell10);&lt;br /&gt;
  setupNeighbors(11, cell11);&lt;br /&gt;
  setupNeighbors(12, cell12);&lt;br /&gt;
  setupNeighbors(13, cell13);&lt;br /&gt;
  setupNeighbors(14, cell14);&lt;br /&gt;
   setupNeighbors(15, cell15);&lt;br /&gt;
  setupNeighbors(16, cell16);&lt;br /&gt;
  setupNeighbors(17, cell17);&lt;br /&gt;
  setupNeighbors(18, cell18);&lt;br /&gt;
  setupNeighbors(19, cell19);&lt;br /&gt;
   setupNeighbors(20, cell20);&lt;br /&gt;
  setupNeighbors(21, cell21);&lt;br /&gt;
  setupNeighbors(22, cell22);&lt;br /&gt;
  setupNeighbors(23, cell23);&lt;br /&gt;
  setupNeighbors(24, cell24);&lt;br /&gt;
   setupNeighbors(25, cell25);&lt;br /&gt;
  setupNeighbors(26, cell26);&lt;br /&gt;
  setupNeighbors(27, cell27);&lt;br /&gt;
  setupNeighbors(28, cell28);&lt;br /&gt;
  setupNeighbors(29, cell29);&lt;br /&gt;
   setupNeighbors(30, cell30);&lt;br /&gt;
  setupNeighbors(31, cell31);&lt;br /&gt;
  setupNeighbors(32, cell32);&lt;br /&gt;
  setupNeighbors(33, cell33);&lt;br /&gt;
  setupNeighbors(34, cell34);&lt;br /&gt;
   setupNeighbors(35, cell35);&lt;br /&gt;
  setupNeighbors(36, cell36);&lt;br /&gt;
  setupNeighbors(37, cell37);&lt;br /&gt;
  setupNeighbors(38, cell38);&lt;br /&gt;
  setupNeighbors(39, cell39);&lt;br /&gt;
   setupNeighbors(40, cell40);&lt;br /&gt;
   setupNeighbors(41, cell41);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void drawMaze() {&lt;br /&gt;
   stroke(0, 0, 255);&lt;br /&gt;
   strokeWeight(4);&lt;br /&gt;
   line(0, 0, 0, height);&lt;br /&gt;
   line(0, 0, width, 0);&lt;br /&gt;
   line(width, 0, width, height);&lt;br /&gt;
   line(0, height, width, height);&lt;br /&gt;
   line(100, 100, 100, 300);&lt;br /&gt;
   line(100, 300, 300, 300);&lt;br /&gt;
   line(300, 300, 300, 200);&lt;br /&gt;
   line(200, 0, 200, 200);&lt;br /&gt;
   line(200, 100, 300, 100); &lt;br /&gt;
   line(0, 400, 200, 400);&lt;br /&gt;
   line(400, 0, 400, 400);&lt;br /&gt;
   line(100, 500, 500, 500);&lt;br /&gt;
   line(300, 400, 300, height);&lt;br /&gt;
   line(500, 400, 600, 400);&lt;br /&gt;
   line(400, 200, 500, 200);&lt;br /&gt;
   line(500, 300, width, 300);&lt;br /&gt;
   line(500, 100, 600, 100);&lt;br /&gt;
   line(600, 100, 600,300);&lt;br /&gt;
   line(600, 400, 600, height);&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=Midterm_Project_-_Tony_Lu&amp;diff=3811</id>
		<title>Midterm Project - Tony Lu</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=Midterm_Project_-_Tony_Lu&amp;diff=3811"/>
				<updated>2010-05-19T20:08:38Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: /* Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Title==&lt;br /&gt;
VIRTUAL MAZE&lt;br /&gt;
==Description==&lt;br /&gt;
* Motivation&lt;br /&gt;
I&amp;#039;d like my projects to have amusement values and possibly practical applications, much like a game. Along side that, it should also involve an emphasis on physical activity, while definitely showing feedback on the virtual world. I&amp;#039;m pretty fascinated with the blurring of physical and virtual realms. Hopefully it&amp;#039;ll be pretty technically advanced too.&lt;br /&gt;
* Interactive Paradigm&lt;br /&gt;
I&amp;#039;m thinking of tracking a person in physical space, and then have that person walk through a maze in virtual space. He would be able to move in real life unobstructed, of course, but if his virtual representation hits a wall it would be &amp;quot;stuck.&amp;quot; I&amp;#039;m also considering putting in aspects of Pac man or Mario, or incorporating some kind of importance on movements such as dancing or jumping... depending on if my technical ability would allow it.&lt;br /&gt;
* Technical Description&lt;br /&gt;
If possible I&amp;#039;d like Processing to track the person through webcam, possibly using brightness thresholding with a plain background and singling out the blob of black that is the person. If that doesn&amp;#039;t work I could attach LED&amp;#039;s to the person and use brightness tracking instead. The maze should be able to be drawn in Processing, and finally I&amp;#039;d have to find the way to code the limiting of the virtual entity&amp;#039;s movements.&lt;br /&gt;
&lt;br /&gt;
==Visualization==&lt;br /&gt;
* Functional Diagrams and Visual Concept&lt;br /&gt;
[[Image:Vis145b midterm.jpg|800px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
* Source Code &lt;br /&gt;
The coding contains two files, the main coding and the Cell object&lt;br /&gt;
&lt;br /&gt;
Main file: &lt;br /&gt;
-adapts OpenCV&amp;#039;s face tracking code and creates the maze (composed of Cell objects) &lt;br /&gt;
&lt;br /&gt;
import hypermedia.video.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
&lt;br /&gt;
OpenCV opencv;&lt;br /&gt;
&lt;br /&gt;
// contrast/brightness values&lt;br /&gt;
&lt;br /&gt;
int contrast_value    = 0;&lt;br /&gt;
int brightness_value  = 0;&lt;br /&gt;
int cellsize = 100;&lt;br /&gt;
int cellnum = 42;&lt;br /&gt;
boolean start = true;&lt;br /&gt;
int currentcell = 0;&lt;br /&gt;
int in_cell = 0;&lt;br /&gt;
boolean move = false;&lt;br /&gt;
Cell[] cells = new Cell[cellnum];&lt;br /&gt;
PImage pacman;&lt;br /&gt;
PImage pacmanAlpha;&lt;br /&gt;
AudioPlayer player;&lt;br /&gt;
Minim minim;&lt;br /&gt;
int playercounter = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
&lt;br /&gt;
    size( 700, 600 );&lt;br /&gt;
    minim = new Minim(this);&lt;br /&gt;
    player = minim.loadFile(&amp;quot;StartGame.mp3&amp;quot;);&lt;br /&gt;
    player.loop();&lt;br /&gt;
      &lt;br /&gt;
    pacman = loadImage(&amp;quot;pacman.png&amp;quot;);&lt;br /&gt;
    pacmanAlpha = loadImage(&amp;quot;pacmanalpha3.png&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    opencv = new OpenCV( this );&lt;br /&gt;
    opencv.capture( width, height );                   // open video stream&lt;br /&gt;
    opencv.cascade( OpenCV.CASCADE_FRONTALFACE_ALT );  // load detection description, here-&amp;gt; front face detection : &amp;quot;haarcascade_frontalface_alt.xml&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
    int k = -cellsize;&lt;br /&gt;
     &lt;br /&gt;
     //int[] temp = { -1, -2, -3, -4, -5 };&lt;br /&gt;
    for(int i = 0; i &amp;lt; cellnum; i++) {&lt;br /&gt;
      if(i%(width/cellsize) == 0) { k+= cellsize; }&lt;br /&gt;
      cells[i] = new Cell(i, (i%(width/cellsize))*cellsize, k, cellsize);&lt;br /&gt;
      &lt;br /&gt;
      &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    setupAllNeighbors();&lt;br /&gt;
    &lt;br /&gt;
 &lt;br /&gt;
     &lt;br /&gt;
 &lt;br /&gt;
    // print usage&lt;br /&gt;
    println( &amp;quot;Drag mouse on X-axis inside this sketch window to change contrast&amp;quot; );&lt;br /&gt;
    println( &amp;quot;Drag mouse on Y-axis inside this sketch window to change brightness&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public void stop() {&lt;br /&gt;
    opencv.stop();&lt;br /&gt;
    super.stop();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void draw() {&lt;br /&gt;
  &lt;br /&gt;
    // grab a new frame&lt;br /&gt;
    // and convert to gray&lt;br /&gt;
    opencv.read();&lt;br /&gt;
    opencv.flip( OpenCV.FLIP_HORIZONTAL );&lt;br /&gt;
    //opencv.convert( GRAY );&lt;br /&gt;
    opencv.contrast( contrast_value );&lt;br /&gt;
    opencv.brightness( brightness_value );&lt;br /&gt;
&lt;br /&gt;
    // proceed detection&lt;br /&gt;
    Rectangle[] faces = opencv.detect( 1.2, 2, OpenCV.HAAR_DO_CANNY_PRUNING, 40, 40 );&lt;br /&gt;
&lt;br /&gt;
    // display the image&lt;br /&gt;
    image( opencv.image(), 0, 0 );&lt;br /&gt;
    noStroke();&lt;br /&gt;
    fill(255);&lt;br /&gt;
  // rect(0, 0, width, height);&lt;br /&gt;
     boolean r;&lt;br /&gt;
    &lt;br /&gt;
    drawMaze();&lt;br /&gt;
    &lt;br /&gt;
    if(start == false) { cells[currentcell].cellOn(true); }&lt;br /&gt;
     &lt;br /&gt;
       for(int l = 0; l&amp;lt;cellnum; l++) {&lt;br /&gt;
              r = false;&lt;br /&gt;
              if(cells[l].stepped == true) { r = true; }&lt;br /&gt;
              cells[l].circleOn(r);&lt;br /&gt;
           }&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
    // draw face area(s)&lt;br /&gt;
&lt;br /&gt;
    for( int i=0; i&amp;lt;faces.length; i++ ) {&lt;br /&gt;
       &lt;br /&gt;
        noFill();&lt;br /&gt;
        stroke(255,0,0);&lt;br /&gt;
        strokeWeight(5);&lt;br /&gt;
        //rect( faces[i].x, faces[i].y, faces[i].width, faces[i].height ); &lt;br /&gt;
        noStroke();&lt;br /&gt;
        fill(0, 0, 200, 80);&lt;br /&gt;
        in_cell = findClosestCell(faces[i].x + (faces[i].width)/2, faces[i].y);&lt;br /&gt;
        //ellipse(faces[i].x + (faces[i].width)/2, faces[i].y + (faces[i].height)/2, 100, 100);&lt;br /&gt;
        //ellipse(faces[i].x + (faces[i].width)/2, faces[i].y, 100, 100);&lt;br /&gt;
        //ellipse(cells[in_cell].x, cells[in_cell].y, 100, 100);&lt;br /&gt;
        &lt;br /&gt;
        if(start == true) { cells[in_cell].cellOn(); currentcell = in_cell; start = false; }&lt;br /&gt;
        &lt;br /&gt;
  &lt;br /&gt;
        &lt;br /&gt;
       &lt;br /&gt;
        for(int j = 0; j &amp;lt; 4; j++) {&lt;br /&gt;
          &lt;br /&gt;
          if(cells[currentcell].neighbors[j] == in_cell) { move = true; }&lt;br /&gt;
          &lt;br /&gt;
        }&lt;br /&gt;
        if(move == true) {&lt;br /&gt;
        &lt;br /&gt;
        cells[in_cell].cellOn();&lt;br /&gt;
      &lt;br /&gt;
        currentcell = in_cell;&lt;br /&gt;
        } &lt;br /&gt;
        &lt;br /&gt;
        move = false;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Changes contrast/brigthness values&lt;br /&gt;
 */&lt;br /&gt;
void mouseDragged() {&lt;br /&gt;
    contrast_value   = (int) map( mouseX, 0, width, -128, 128 );&lt;br /&gt;
    brightness_value = (int) map( mouseY, 0, width, -128, 128 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int findClosestCell(int face_x, int face_y) {&lt;br /&gt;
  int cellx; int celly;&lt;br /&gt;
  int xhundred = (face_x / 100) * 100; &lt;br /&gt;
  int xten = face_x % 100;&lt;br /&gt;
  int yhundred = (face_y / 100) * 100;&lt;br /&gt;
  int yten = face_y % 100;&lt;br /&gt;
  &lt;br /&gt;
  if(xten &amp;gt; 85) { if(xhundred &amp;lt; 600) { cellx = xhundred + 100; } else { cellx = xhundred; } }&lt;br /&gt;
  else if(xten &amp;lt; 15) { if(xhundred &amp;gt; 100) { cellx = xhundred - 100; } else { cellx = xhundred; } }&lt;br /&gt;
  else { cellx = xhundred; }&lt;br /&gt;
  if(yten &amp;gt; 85) { if(yhundred &amp;lt; 500) { celly = yhundred + 100; } else { celly = yhundred; } }&lt;br /&gt;
  else if(yten &amp;lt; 15) { if(yhundred &amp;gt; 100) { celly = yhundred - 100; } else { celly = yhundred; } }&lt;br /&gt;
  else { celly = yhundred; }&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  return (cellx/100) + (celly/100)*(width/cellsize);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setupNeighbors(int cell, int[] arrayOfNeighbors) {&lt;br /&gt;
 //cell neighbor set up&lt;br /&gt;
    //cells[0].neighbors[0] = 7;&lt;br /&gt;
   cells[cell].neighbors = arrayOfNeighbors;&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void setupAllNeighbors() {&lt;br /&gt;
  &lt;br /&gt;
  int[] cell0 = { 7, 1, 0, -1 };&lt;br /&gt;
  int[] cell1 = { 0, 1, 8, -1 };&lt;br /&gt;
  int[] cell2 = { 2, 3, -1, -2 };&lt;br /&gt;
  int[] cell3 = { 2, 3, 10, -1 };&lt;br /&gt;
  int[] cell4 = { 4, 11, 5, -1 };&lt;br /&gt;
  int[] cell5 = { 5, 4, 6, -2 };&lt;br /&gt;
  int[] cell6 = { 5, 6, 13, -2 };&lt;br /&gt;
  int[] cell7 = { 7, 0, 14, -1 };  &lt;br /&gt;
  int[] cell8 = { 8, 1, 15, -2 };&lt;br /&gt;
  int[] cell9 = { 9, 16, 10, -2 };&lt;br /&gt;
  int[] cell10 = { 3, 10, 17, 9 };&lt;br /&gt;
  int[] cell11 = { 4, 11, 12, -2 };&lt;br /&gt;
  int[] cell12 = { 12, 11, 19, -2 };  &lt;br /&gt;
  int[] cell13 = { 13, 20, 6, -2 };&lt;br /&gt;
  int[] cell14 = { 14, 7, 21, -2 };&lt;br /&gt;
  int[] cell15 = { 15, 16, 8, -2 };&lt;br /&gt;
  int[] cell16 = { 16, 15, 9, -2 };&lt;br /&gt;
  int[] cell17 = { 17, 10, 24, -2 };  &lt;br /&gt;
  int[] cell18 = { 18, 19, 25, -2 };&lt;br /&gt;
  int[] cell19 = { 19, 12, 18, -1 };&lt;br /&gt;
  int[] cell20 = { 20, 13, -2, -1 };&lt;br /&gt;
  int[] cell21 = { 21, 22, 14, -2 };&lt;br /&gt;
  int[] cell22 = { 22, 23, 21, -2 };  &lt;br /&gt;
  int[] cell23 = { 23, 22, 24, 30 };&lt;br /&gt;
  int[] cell24 = { 24, 31, 17, 23 };&lt;br /&gt;
  int[] cell25 = { 25, 32, 18, 26 };&lt;br /&gt;
  int[] cell26 = { 26, 27, 25, -2 };&lt;br /&gt;
  int[] cell27 = { 27, 26, 34, -2 };  &lt;br /&gt;
  int[] cell28 = { 28, 29, 35, -1 };&lt;br /&gt;
  int[] cell29 = { 29, 30, 28, -2 };&lt;br /&gt;
  int[] cell30 = { 30, 23, 29, -1 };&lt;br /&gt;
  int[] cell31 = { 31, 32, 24, -2 };&lt;br /&gt;
  int[] cell32 = { 31, 32, 33, 25 };  &lt;br /&gt;
  int[] cell33 = { 33, 32, 40, -1 };&lt;br /&gt;
  int[] cell34 = { 34, 41, 27, -2 };&lt;br /&gt;
  int[] cell35 = { 35, 36, 28, -2 };&lt;br /&gt;
  int[] cell36 = { 36, 35, 37, -2 };&lt;br /&gt;
  int[] cell37 = { 37, 36, -1, -2 };  &lt;br /&gt;
  int[] cell38 = { 38, 39, -2, -1 };&lt;br /&gt;
  int[] cell39 = { 39, 40, 38, -2 };&lt;br /&gt;
  int[] cell40 = { 40, 39, 33, -2 };&lt;br /&gt;
  int[] cell41 = { 41, 34, -2, -1 };&lt;br /&gt;
  &lt;br /&gt;
  setupNeighbors(0, cell0);&lt;br /&gt;
  setupNeighbors(1, cell1);&lt;br /&gt;
  setupNeighbors(2, cell2);&lt;br /&gt;
  setupNeighbors(3, cell3);&lt;br /&gt;
  setupNeighbors(4, cell4);&lt;br /&gt;
   setupNeighbors(5, cell5);&lt;br /&gt;
  setupNeighbors(6, cell6);&lt;br /&gt;
  setupNeighbors(7, cell7);&lt;br /&gt;
  setupNeighbors(8, cell8);&lt;br /&gt;
  setupNeighbors(9, cell9);&lt;br /&gt;
   setupNeighbors(10, cell10);&lt;br /&gt;
  setupNeighbors(11, cell11);&lt;br /&gt;
  setupNeighbors(12, cell12);&lt;br /&gt;
  setupNeighbors(13, cell13);&lt;br /&gt;
  setupNeighbors(14, cell14);&lt;br /&gt;
   setupNeighbors(15, cell15);&lt;br /&gt;
  setupNeighbors(16, cell16);&lt;br /&gt;
  setupNeighbors(17, cell17);&lt;br /&gt;
  setupNeighbors(18, cell18);&lt;br /&gt;
  setupNeighbors(19, cell19);&lt;br /&gt;
   setupNeighbors(20, cell20);&lt;br /&gt;
  setupNeighbors(21, cell21);&lt;br /&gt;
  setupNeighbors(22, cell22);&lt;br /&gt;
  setupNeighbors(23, cell23);&lt;br /&gt;
  setupNeighbors(24, cell24);&lt;br /&gt;
   setupNeighbors(25, cell25);&lt;br /&gt;
  setupNeighbors(26, cell26);&lt;br /&gt;
  setupNeighbors(27, cell27);&lt;br /&gt;
  setupNeighbors(28, cell28);&lt;br /&gt;
  setupNeighbors(29, cell29);&lt;br /&gt;
   setupNeighbors(30, cell30);&lt;br /&gt;
  setupNeighbors(31, cell31);&lt;br /&gt;
  setupNeighbors(32, cell32);&lt;br /&gt;
  setupNeighbors(33, cell33);&lt;br /&gt;
  setupNeighbors(34, cell34);&lt;br /&gt;
   setupNeighbors(35, cell35);&lt;br /&gt;
  setupNeighbors(36, cell36);&lt;br /&gt;
  setupNeighbors(37, cell37);&lt;br /&gt;
  setupNeighbors(38, cell38);&lt;br /&gt;
  setupNeighbors(39, cell39);&lt;br /&gt;
   setupNeighbors(40, cell40);&lt;br /&gt;
   setupNeighbors(41, cell41);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void drawMaze() {&lt;br /&gt;
   stroke(0, 0, 255);&lt;br /&gt;
   strokeWeight(4);&lt;br /&gt;
   line(0, 0, 0, height);&lt;br /&gt;
   line(0, 0, width, 0);&lt;br /&gt;
   line(width, 0, width, height);&lt;br /&gt;
   line(0, height, width, height);&lt;br /&gt;
   line(100, 100, 100, 300);&lt;br /&gt;
   line(100, 300, 300, 300);&lt;br /&gt;
   line(300, 300, 300, 200);&lt;br /&gt;
   line(200, 0, 200, 200);&lt;br /&gt;
   line(200, 100, 300, 100); &lt;br /&gt;
   line(0, 400, 200, 400);&lt;br /&gt;
   line(400, 0, 400, 400);&lt;br /&gt;
   line(100, 500, 500, 500);&lt;br /&gt;
   line(300, 400, 300, height);&lt;br /&gt;
   line(500, 400, 600, 400);&lt;br /&gt;
   line(400, 200, 500, 200);&lt;br /&gt;
   line(500, 300, width, 300);&lt;br /&gt;
   line(500, 100, 600, 100);&lt;br /&gt;
   line(600, 100, 600,300);&lt;br /&gt;
   line(600, 400, 600, height);&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=Midterm_Project_-_Tony_Lu&amp;diff=3810</id>
		<title>Midterm Project - Tony Lu</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=Midterm_Project_-_Tony_Lu&amp;diff=3810"/>
				<updated>2010-05-19T20:08:28Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: /* Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Title==&lt;br /&gt;
VIRTUAL MAZE&lt;br /&gt;
==Description==&lt;br /&gt;
* Motivation&lt;br /&gt;
I&amp;#039;d like my projects to have amusement values and possibly practical applications, much like a game. Along side that, it should also involve an emphasis on physical activity, while definitely showing feedback on the virtual world. I&amp;#039;m pretty fascinated with the blurring of physical and virtual realms. Hopefully it&amp;#039;ll be pretty technically advanced too.&lt;br /&gt;
* Interactive Paradigm&lt;br /&gt;
I&amp;#039;m thinking of tracking a person in physical space, and then have that person walk through a maze in virtual space. He would be able to move in real life unobstructed, of course, but if his virtual representation hits a wall it would be &amp;quot;stuck.&amp;quot; I&amp;#039;m also considering putting in aspects of Pac man or Mario, or incorporating some kind of importance on movements such as dancing or jumping... depending on if my technical ability would allow it.&lt;br /&gt;
* Technical Description&lt;br /&gt;
If possible I&amp;#039;d like Processing to track the person through webcam, possibly using brightness thresholding with a plain background and singling out the blob of black that is the person. If that doesn&amp;#039;t work I could attach LED&amp;#039;s to the person and use brightness tracking instead. The maze should be able to be drawn in Processing, and finally I&amp;#039;d have to find the way to code the limiting of the virtual entity&amp;#039;s movements.&lt;br /&gt;
&lt;br /&gt;
==Visualization==&lt;br /&gt;
* Functional Diagrams and Visual Concept&lt;br /&gt;
[[Image:Vis145b midterm.jpg|800px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
* Source Code &lt;br /&gt;
The coding contains two files, the main coding and the Cell object&lt;br /&gt;
&lt;br /&gt;
Main file: &lt;br /&gt;
-adapts OpenCV&amp;#039;s face tracking code and creates the maze (composed of Cell objects) &lt;br /&gt;
&lt;br /&gt;
import hypermedia.video.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
&lt;br /&gt;
OpenCV opencv;&lt;br /&gt;
&lt;br /&gt;
// contrast/brightness values&lt;br /&gt;
&lt;br /&gt;
int contrast_value    = 0;&lt;br /&gt;
int brightness_value  = 0;&lt;br /&gt;
int cellsize = 100;&lt;br /&gt;
int cellnum = 42;&lt;br /&gt;
boolean start = true;&lt;br /&gt;
int currentcell = 0;&lt;br /&gt;
int in_cell = 0;&lt;br /&gt;
boolean move = false;&lt;br /&gt;
Cell[] cells = new Cell[cellnum];&lt;br /&gt;
PImage pacman;&lt;br /&gt;
PImage pacmanAlpha;&lt;br /&gt;
AudioPlayer player;&lt;br /&gt;
Minim minim;&lt;br /&gt;
int playercounter = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
&lt;br /&gt;
    size( 700, 600 );&lt;br /&gt;
    minim = new Minim(this);&lt;br /&gt;
    player = minim.loadFile(&amp;quot;StartGame.mp3&amp;quot;);&lt;br /&gt;
    player.loop();&lt;br /&gt;
      &lt;br /&gt;
    pacman = loadImage(&amp;quot;pacman.png&amp;quot;);&lt;br /&gt;
    pacmanAlpha = loadImage(&amp;quot;pacmanalpha3.png&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    opencv = new OpenCV( this );&lt;br /&gt;
    opencv.capture( width, height );                   // open video stream&lt;br /&gt;
    opencv.cascade( OpenCV.CASCADE_FRONTALFACE_ALT );  // load detection description, here-&amp;gt; front face detection : &amp;quot;haarcascade_frontalface_alt.xml&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
    int k = -cellsize;&lt;br /&gt;
     &lt;br /&gt;
     //int[] temp = { -1, -2, -3, -4, -5 };&lt;br /&gt;
    for(int i = 0; i &amp;lt; cellnum; i++) {&lt;br /&gt;
      if(i%(width/cellsize) == 0) { k+= cellsize; }&lt;br /&gt;
      cells[i] = new Cell(i, (i%(width/cellsize))*cellsize, k, cellsize);&lt;br /&gt;
      &lt;br /&gt;
      &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    setupAllNeighbors();&lt;br /&gt;
    &lt;br /&gt;
 &lt;br /&gt;
     &lt;br /&gt;
 &lt;br /&gt;
    // print usage&lt;br /&gt;
    println( &amp;quot;Drag mouse on X-axis inside this sketch window to change contrast&amp;quot; );&lt;br /&gt;
    println( &amp;quot;Drag mouse on Y-axis inside this sketch window to change brightness&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public void stop() {&lt;br /&gt;
    opencv.stop();&lt;br /&gt;
    super.stop();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void draw() {&lt;br /&gt;
  &lt;br /&gt;
    // grab a new frame&lt;br /&gt;
    // and convert to gray&lt;br /&gt;
    opencv.read();&lt;br /&gt;
    opencv.flip( OpenCV.FLIP_HORIZONTAL );&lt;br /&gt;
    //opencv.convert( GRAY );&lt;br /&gt;
    opencv.contrast( contrast_value );&lt;br /&gt;
    opencv.brightness( brightness_value );&lt;br /&gt;
&lt;br /&gt;
    // proceed detection&lt;br /&gt;
    Rectangle[] faces = opencv.detect( 1.2, 2, OpenCV.HAAR_DO_CANNY_PRUNING, 40, 40 );&lt;br /&gt;
&lt;br /&gt;
    // display the image&lt;br /&gt;
    image( opencv.image(), 0, 0 );&lt;br /&gt;
    noStroke();&lt;br /&gt;
    fill(255);&lt;br /&gt;
  // rect(0, 0, width, height);&lt;br /&gt;
     boolean r;&lt;br /&gt;
    &lt;br /&gt;
    drawMaze();&lt;br /&gt;
    &lt;br /&gt;
    if(start == false) { cells[currentcell].cellOn(true); }&lt;br /&gt;
     &lt;br /&gt;
       for(int l = 0; l&amp;lt;cellnum; l++) {&lt;br /&gt;
              r = false;&lt;br /&gt;
              if(cells[l].stepped == true) { r = true; }&lt;br /&gt;
              cells[l].circleOn(r);&lt;br /&gt;
           }&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
    // draw face area(s)&lt;br /&gt;
&lt;br /&gt;
    for( int i=0; i&amp;lt;faces.length; i++ ) {&lt;br /&gt;
       &lt;br /&gt;
        noFill();&lt;br /&gt;
        stroke(255,0,0);&lt;br /&gt;
        strokeWeight(5);&lt;br /&gt;
        //rect( faces[i].x, faces[i].y, faces[i].width, faces[i].height ); &lt;br /&gt;
        noStroke();&lt;br /&gt;
        fill(0, 0, 200, 80);&lt;br /&gt;
        in_cell = findClosestCell(faces[i].x + (faces[i].width)/2, faces[i].y);&lt;br /&gt;
        //ellipse(faces[i].x + (faces[i].width)/2, faces[i].y + (faces[i].height)/2, 100, 100);&lt;br /&gt;
        //ellipse(faces[i].x + (faces[i].width)/2, faces[i].y, 100, 100);&lt;br /&gt;
        //ellipse(cells[in_cell].x, cells[in_cell].y, 100, 100);&lt;br /&gt;
        &lt;br /&gt;
        if(start == true) { cells[in_cell].cellOn(); currentcell = in_cell; start = false; }&lt;br /&gt;
        &lt;br /&gt;
  &lt;br /&gt;
        &lt;br /&gt;
       &lt;br /&gt;
        for(int j = 0; j &amp;lt; 4; j++) {&lt;br /&gt;
          &lt;br /&gt;
          if(cells[currentcell].neighbors[j] == in_cell) { move = true; }&lt;br /&gt;
          &lt;br /&gt;
        }&lt;br /&gt;
        if(move == true) {&lt;br /&gt;
        &lt;br /&gt;
        cells[in_cell].cellOn();&lt;br /&gt;
      &lt;br /&gt;
        currentcell = in_cell;&lt;br /&gt;
        } &lt;br /&gt;
        &lt;br /&gt;
        move = false;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Changes contrast/brigthness values&lt;br /&gt;
 */&lt;br /&gt;
void mouseDragged() {&lt;br /&gt;
    contrast_value   = (int) map( mouseX, 0, width, -128, 128 );&lt;br /&gt;
    brightness_value = (int) map( mouseY, 0, width, -128, 128 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int findClosestCell(int face_x, int face_y) {&lt;br /&gt;
  int cellx; int celly;&lt;br /&gt;
  int xhundred = (face_x / 100) * 100; &lt;br /&gt;
  int xten = face_x % 100;&lt;br /&gt;
  int yhundred = (face_y / 100) * 100;&lt;br /&gt;
  int yten = face_y % 100;&lt;br /&gt;
  &lt;br /&gt;
  if(xten &amp;gt; 85) { if(xhundred &amp;lt; 600) { cellx = xhundred + 100; } else { cellx = xhundred; } }&lt;br /&gt;
  else if(xten &amp;lt; 15) { if(xhundred &amp;gt; 100) { cellx = xhundred - 100; } else { cellx = xhundred; } }&lt;br /&gt;
  else { cellx = xhundred; }&lt;br /&gt;
  if(yten &amp;gt; 85) { if(yhundred &amp;lt; 500) { celly = yhundred + 100; } else { celly = yhundred; } }&lt;br /&gt;
  else if(yten &amp;lt; 15) { if(yhundred &amp;gt; 100) { celly = yhundred - 100; } else { celly = yhundred; } }&lt;br /&gt;
  else { celly = yhundred; }&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  return (cellx/100) + (celly/100)*(width/cellsize);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setupNeighbors(int cell, int[] arrayOfNeighbors) {&lt;br /&gt;
 //cell neighbor set up&lt;br /&gt;
    //cells[0].neighbors[0] = 7;&lt;br /&gt;
   cells[cell].neighbors = arrayOfNeighbors;&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void setupAllNeighbors() {&lt;br /&gt;
  &lt;br /&gt;
  int[] cell0 = { 7, 1, 0, -1 };&lt;br /&gt;
  int[] cell1 = { 0, 1, 8, -1 };&lt;br /&gt;
  int[] cell2 = { 2, 3, -1, -2 };&lt;br /&gt;
  int[] cell3 = { 2, 3, 10, -1 };&lt;br /&gt;
  int[] cell4 = { 4, 11, 5, -1 };&lt;br /&gt;
  int[] cell5 = { 5, 4, 6, -2 };&lt;br /&gt;
  int[] cell6 = { 5, 6, 13, -2 };&lt;br /&gt;
  int[] cell7 = { 7, 0, 14, -1 };  &lt;br /&gt;
  int[] cell8 = { 8, 1, 15, -2 };&lt;br /&gt;
  int[] cell9 = { 9, 16, 10, -2 };&lt;br /&gt;
  int[] cell10 = { 3, 10, 17, 9 };&lt;br /&gt;
  int[] cell11 = { 4, 11, 12, -2 };&lt;br /&gt;
  int[] cell12 = { 12, 11, 19, -2 };  &lt;br /&gt;
  int[] cell13 = { 13, 20, 6, -2 };&lt;br /&gt;
  int[] cell14 = { 14, 7, 21, -2 };&lt;br /&gt;
  int[] cell15 = { 15, 16, 8, -2 };&lt;br /&gt;
  int[] cell16 = { 16, 15, 9, -2 };&lt;br /&gt;
  int[] cell17 = { 17, 10, 24, -2 };  &lt;br /&gt;
  int[] cell18 = { 18, 19, 25, -2 };&lt;br /&gt;
  int[] cell19 = { 19, 12, 18, -1 };&lt;br /&gt;
  int[] cell20 = { 20, 13, -2, -1 };&lt;br /&gt;
  int[] cell21 = { 21, 22, 14, -2 };&lt;br /&gt;
  int[] cell22 = { 22, 23, 21, -2 };  &lt;br /&gt;
  int[] cell23 = { 23, 22, 24, 30 };&lt;br /&gt;
  int[] cell24 = { 24, 31, 17, 23 };&lt;br /&gt;
  int[] cell25 = { 25, 32, 18, 26 };&lt;br /&gt;
  int[] cell26 = { 26, 27, 25, -2 };&lt;br /&gt;
  int[] cell27 = { 27, 26, 34, -2 };  &lt;br /&gt;
  int[] cell28 = { 28, 29, 35, -1 };&lt;br /&gt;
  int[] cell29 = { 29, 30, 28, -2 };&lt;br /&gt;
  int[] cell30 = { 30, 23, 29, -1 };&lt;br /&gt;
  int[] cell31 = { 31, 32, 24, -2 };&lt;br /&gt;
  int[] cell32 = { 31, 32, 33, 25 };  &lt;br /&gt;
  int[] cell33 = { 33, 32, 40, -1 };&lt;br /&gt;
  int[] cell34 = { 34, 41, 27, -2 };&lt;br /&gt;
  int[] cell35 = { 35, 36, 28, -2 };&lt;br /&gt;
  int[] cell36 = { 36, 35, 37, -2 };&lt;br /&gt;
  int[] cell37 = { 37, 36, -1, -2 };  &lt;br /&gt;
  int[] cell38 = { 38, 39, -2, -1 };&lt;br /&gt;
  int[] cell39 = { 39, 40, 38, -2 };&lt;br /&gt;
  int[] cell40 = { 40, 39, 33, -2 };&lt;br /&gt;
  int[] cell41 = { 41, 34, -2, -1 };&lt;br /&gt;
  &lt;br /&gt;
  setupNeighbors(0, cell0);&lt;br /&gt;
  setupNeighbors(1, cell1);&lt;br /&gt;
  setupNeighbors(2, cell2);&lt;br /&gt;
  setupNeighbors(3, cell3);&lt;br /&gt;
  setupNeighbors(4, cell4);&lt;br /&gt;
   setupNeighbors(5, cell5);&lt;br /&gt;
  setupNeighbors(6, cell6);&lt;br /&gt;
  setupNeighbors(7, cell7);&lt;br /&gt;
  setupNeighbors(8, cell8);&lt;br /&gt;
  setupNeighbors(9, cell9);&lt;br /&gt;
   setupNeighbors(10, cell10);&lt;br /&gt;
  setupNeighbors(11, cell11);&lt;br /&gt;
  setupNeighbors(12, cell12);&lt;br /&gt;
  setupNeighbors(13, cell13);&lt;br /&gt;
  setupNeighbors(14, cell14);&lt;br /&gt;
   setupNeighbors(15, cell15);&lt;br /&gt;
  setupNeighbors(16, cell16);&lt;br /&gt;
  setupNeighbors(17, cell17);&lt;br /&gt;
  setupNeighbors(18, cell18);&lt;br /&gt;
  setupNeighbors(19, cell19);&lt;br /&gt;
   setupNeighbors(20, cell20);&lt;br /&gt;
  setupNeighbors(21, cell21);&lt;br /&gt;
  setupNeighbors(22, cell22);&lt;br /&gt;
  setupNeighbors(23, cell23);&lt;br /&gt;
  setupNeighbors(24, cell24);&lt;br /&gt;
   setupNeighbors(25, cell25);&lt;br /&gt;
  setupNeighbors(26, cell26);&lt;br /&gt;
  setupNeighbors(27, cell27);&lt;br /&gt;
  setupNeighbors(28, cell28);&lt;br /&gt;
  setupNeighbors(29, cell29);&lt;br /&gt;
   setupNeighbors(30, cell30);&lt;br /&gt;
  setupNeighbors(31, cell31);&lt;br /&gt;
  setupNeighbors(32, cell32);&lt;br /&gt;
  setupNeighbors(33, cell33);&lt;br /&gt;
  setupNeighbors(34, cell34);&lt;br /&gt;
   setupNeighbors(35, cell35);&lt;br /&gt;
  setupNeighbors(36, cell36);&lt;br /&gt;
  setupNeighbors(37, cell37);&lt;br /&gt;
  setupNeighbors(38, cell38);&lt;br /&gt;
  setupNeighbors(39, cell39);&lt;br /&gt;
   setupNeighbors(40, cell40);&lt;br /&gt;
   setupNeighbors(41, cell41);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void drawMaze() {&lt;br /&gt;
   stroke(0, 0, 255);&lt;br /&gt;
   strokeWeight(4);&lt;br /&gt;
   line(0, 0, 0, height);&lt;br /&gt;
   line(0, 0, width, 0);&lt;br /&gt;
   line(width, 0, width, height);&lt;br /&gt;
   line(0, height, width, height);&lt;br /&gt;
   line(100, 100, 100, 300);&lt;br /&gt;
   line(100, 300, 300, 300);&lt;br /&gt;
   line(300, 300, 300, 200);&lt;br /&gt;
   line(200, 0, 200, 200);&lt;br /&gt;
   line(200, 100, 300, 100); &lt;br /&gt;
   line(0, 400, 200, 400);&lt;br /&gt;
   line(400, 0, 400, 400);&lt;br /&gt;
   line(100, 500, 500, 500);&lt;br /&gt;
   line(300, 400, 300, height);&lt;br /&gt;
   line(500, 400, 600, 400);&lt;br /&gt;
   line(400, 200, 500, 200);&lt;br /&gt;
   line(500, 300, width, 300);&lt;br /&gt;
   line(500, 100, 600, 100);&lt;br /&gt;
   line(600, 100, 600,300);&lt;br /&gt;
   line(600, 400, 600, height);&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=Midterm_Project_-_Tony_Lu&amp;diff=3809</id>
		<title>Midterm Project - Tony Lu</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=Midterm_Project_-_Tony_Lu&amp;diff=3809"/>
				<updated>2010-05-19T20:08:18Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: /* Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Title==&lt;br /&gt;
VIRTUAL MAZE&lt;br /&gt;
==Description==&lt;br /&gt;
* Motivation&lt;br /&gt;
I&amp;#039;d like my projects to have amusement values and possibly practical applications, much like a game. Along side that, it should also involve an emphasis on physical activity, while definitely showing feedback on the virtual world. I&amp;#039;m pretty fascinated with the blurring of physical and virtual realms. Hopefully it&amp;#039;ll be pretty technically advanced too.&lt;br /&gt;
* Interactive Paradigm&lt;br /&gt;
I&amp;#039;m thinking of tracking a person in physical space, and then have that person walk through a maze in virtual space. He would be able to move in real life unobstructed, of course, but if his virtual representation hits a wall it would be &amp;quot;stuck.&amp;quot; I&amp;#039;m also considering putting in aspects of Pac man or Mario, or incorporating some kind of importance on movements such as dancing or jumping... depending on if my technical ability would allow it.&lt;br /&gt;
* Technical Description&lt;br /&gt;
If possible I&amp;#039;d like Processing to track the person through webcam, possibly using brightness thresholding with a plain background and singling out the blob of black that is the person. If that doesn&amp;#039;t work I could attach LED&amp;#039;s to the person and use brightness tracking instead. The maze should be able to be drawn in Processing, and finally I&amp;#039;d have to find the way to code the limiting of the virtual entity&amp;#039;s movements.&lt;br /&gt;
&lt;br /&gt;
==Visualization==&lt;br /&gt;
* Functional Diagrams and Visual Concept&lt;br /&gt;
[[Image:Vis145b midterm.jpg|800px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
* Source Code &lt;br /&gt;
The coding contains two files, the main coding and the Cell object&lt;br /&gt;
&lt;br /&gt;
Main file: &lt;br /&gt;
-adapts OpenCV&amp;#039;s face tracking code and creates the maze (composed of Cell objects) &lt;br /&gt;
&lt;br /&gt;
import hypermedia.video.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
&lt;br /&gt;
OpenCV opencv;&lt;br /&gt;
&lt;br /&gt;
// contrast/brightness values&lt;br /&gt;
&lt;br /&gt;
int contrast_value    = 0;&lt;br /&gt;
int brightness_value  = 0;&lt;br /&gt;
int cellsize = 100;&lt;br /&gt;
int cellnum = 42;&lt;br /&gt;
boolean start = true;&lt;br /&gt;
int currentcell = 0;&lt;br /&gt;
int in_cell = 0;&lt;br /&gt;
boolean move = false;&lt;br /&gt;
Cell[] cells = new Cell[cellnum];&lt;br /&gt;
PImage pacman;&lt;br /&gt;
PImage pacmanAlpha;&lt;br /&gt;
AudioPlayer player;&lt;br /&gt;
Minim minim;&lt;br /&gt;
int playercounter = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
&lt;br /&gt;
    size( 700, 600 );&lt;br /&gt;
    minim = new Minim(this);&lt;br /&gt;
    player = minim.loadFile(&amp;quot;StartGame.mp3&amp;quot;);&lt;br /&gt;
    player.loop();&lt;br /&gt;
      &lt;br /&gt;
    pacman = loadImage(&amp;quot;pacman.png&amp;quot;);&lt;br /&gt;
    pacmanAlpha = loadImage(&amp;quot;pacmanalpha3.png&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    opencv = new OpenCV( this );&lt;br /&gt;
    opencv.capture( width, height );                   // open video stream&lt;br /&gt;
    opencv.cascade( OpenCV.CASCADE_FRONTALFACE_ALT );  // load detection description, here-&amp;gt; front face detection : &amp;quot;haarcascade_frontalface_alt.xml&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
    int k = -cellsize;&lt;br /&gt;
     &lt;br /&gt;
     //int[] temp = { -1, -2, -3, -4, -5 };&lt;br /&gt;
    for(int i = 0; i &amp;lt; cellnum; i++) {&lt;br /&gt;
      if(i%(width/cellsize) == 0) { k+= cellsize; }&lt;br /&gt;
      cells[i] = new Cell(i, (i%(width/cellsize))*cellsize, k, cellsize);&lt;br /&gt;
      &lt;br /&gt;
      &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    setupAllNeighbors();&lt;br /&gt;
    &lt;br /&gt;
 &lt;br /&gt;
     &lt;br /&gt;
 &lt;br /&gt;
    // print usage&lt;br /&gt;
    println( &amp;quot;Drag mouse on X-axis inside this sketch window to change contrast&amp;quot; );&lt;br /&gt;
    println( &amp;quot;Drag mouse on Y-axis inside this sketch window to change brightness&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public void stop() {&lt;br /&gt;
    opencv.stop();&lt;br /&gt;
    super.stop();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void draw() {&lt;br /&gt;
  &lt;br /&gt;
    // grab a new frame&lt;br /&gt;
    // and convert to gray&lt;br /&gt;
    opencv.read();&lt;br /&gt;
    opencv.flip( OpenCV.FLIP_HORIZONTAL );&lt;br /&gt;
    //opencv.convert( GRAY );&lt;br /&gt;
    opencv.contrast( contrast_value );&lt;br /&gt;
    opencv.brightness( brightness_value );&lt;br /&gt;
&lt;br /&gt;
    // proceed detection&lt;br /&gt;
    Rectangle[] faces = opencv.detect( 1.2, 2, OpenCV.HAAR_DO_CANNY_PRUNING, 40, 40 );&lt;br /&gt;
&lt;br /&gt;
    // display the image&lt;br /&gt;
    image( opencv.image(), 0, 0 );&lt;br /&gt;
    noStroke();&lt;br /&gt;
    fill(255);&lt;br /&gt;
  // rect(0, 0, width, height);&lt;br /&gt;
     boolean r;&lt;br /&gt;
    &lt;br /&gt;
    drawMaze();&lt;br /&gt;
    &lt;br /&gt;
    if(start == false) { cells[currentcell].cellOn(true); }&lt;br /&gt;
     &lt;br /&gt;
       for(int l = 0; l&amp;lt;cellnum; l++) {&lt;br /&gt;
              r = false;&lt;br /&gt;
              if(cells[l].stepped == true) { r = true; }&lt;br /&gt;
              cells[l].circleOn(r);&lt;br /&gt;
           }&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
    // draw face area(s)&lt;br /&gt;
&lt;br /&gt;
    for( int i=0; i&amp;lt;faces.length; i++ ) {&lt;br /&gt;
       &lt;br /&gt;
        noFill();&lt;br /&gt;
        stroke(255,0,0);&lt;br /&gt;
        strokeWeight(5);&lt;br /&gt;
        //rect( faces[i].x, faces[i].y, faces[i].width, faces[i].height ); &lt;br /&gt;
        noStroke();&lt;br /&gt;
        fill(0, 0, 200, 80);&lt;br /&gt;
        in_cell = findClosestCell(faces[i].x + (faces[i].width)/2, faces[i].y);&lt;br /&gt;
        //ellipse(faces[i].x + (faces[i].width)/2, faces[i].y + (faces[i].height)/2, 100, 100);&lt;br /&gt;
        //ellipse(faces[i].x + (faces[i].width)/2, faces[i].y, 100, 100);&lt;br /&gt;
        //ellipse(cells[in_cell].x, cells[in_cell].y, 100, 100);&lt;br /&gt;
        &lt;br /&gt;
        if(start == true) { cells[in_cell].cellOn(); currentcell = in_cell; start = false; }&lt;br /&gt;
        &lt;br /&gt;
  &lt;br /&gt;
        &lt;br /&gt;
       &lt;br /&gt;
        for(int j = 0; j &amp;lt; 4; j++) {&lt;br /&gt;
          &lt;br /&gt;
          if(cells[currentcell].neighbors[j] == in_cell) { move = true; }&lt;br /&gt;
          &lt;br /&gt;
        }&lt;br /&gt;
        if(move == true) {&lt;br /&gt;
        &lt;br /&gt;
        cells[in_cell].cellOn();&lt;br /&gt;
      &lt;br /&gt;
        currentcell = in_cell;&lt;br /&gt;
        } &lt;br /&gt;
        &lt;br /&gt;
        move = false;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Changes contrast/brigthness values&lt;br /&gt;
 */&lt;br /&gt;
void mouseDragged() {&lt;br /&gt;
    contrast_value   = (int) map( mouseX, 0, width, -128, 128 );&lt;br /&gt;
    brightness_value = (int) map( mouseY, 0, width, -128, 128 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int findClosestCell(int face_x, int face_y) {&lt;br /&gt;
  int cellx; int celly;&lt;br /&gt;
  int xhundred = (face_x / 100) * 100; &lt;br /&gt;
  int xten = face_x % 100;&lt;br /&gt;
  int yhundred = (face_y / 100) * 100;&lt;br /&gt;
  int yten = face_y % 100;&lt;br /&gt;
  &lt;br /&gt;
  if(xten &amp;gt; 85) { if(xhundred &amp;lt; 600) { cellx = xhundred + 100; } else { cellx = xhundred; } }&lt;br /&gt;
  else if(xten &amp;lt; 15) { if(xhundred &amp;gt; 100) { cellx = xhundred - 100; } else { cellx = xhundred; } }&lt;br /&gt;
  else { cellx = xhundred; }&lt;br /&gt;
  if(yten &amp;gt; 85) { if(yhundred &amp;lt; 500) { celly = yhundred + 100; } else { celly = yhundred; } }&lt;br /&gt;
  else if(yten &amp;lt; 15) { if(yhundred &amp;gt; 100) { celly = yhundred - 100; } else { celly = yhundred; } }&lt;br /&gt;
  else { celly = yhundred; }&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  return (cellx/100) + (celly/100)*(width/cellsize);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setupNeighbors(int cell, int[] arrayOfNeighbors) {&lt;br /&gt;
 //cell neighbor set up&lt;br /&gt;
    //cells[0].neighbors[0] = 7;&lt;br /&gt;
   cells[cell].neighbors = arrayOfNeighbors;&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void setupAllNeighbors() {&lt;br /&gt;
  &lt;br /&gt;
  int[] cell0 = { 7, 1, 0, -1 };&lt;br /&gt;
  int[] cell1 = { 0, 1, 8, -1 };&lt;br /&gt;
  int[] cell2 = { 2, 3, -1, -2 };&lt;br /&gt;
  int[] cell3 = { 2, 3, 10, -1 };&lt;br /&gt;
  int[] cell4 = { 4, 11, 5, -1 };&lt;br /&gt;
  int[] cell5 = { 5, 4, 6, -2 };&lt;br /&gt;
  int[] cell6 = { 5, 6, 13, -2 };&lt;br /&gt;
  int[] cell7 = { 7, 0, 14, -1 };  &lt;br /&gt;
  int[] cell8 = { 8, 1, 15, -2 };&lt;br /&gt;
  int[] cell9 = { 9, 16, 10, -2 };&lt;br /&gt;
  int[] cell10 = { 3, 10, 17, 9 };&lt;br /&gt;
  int[] cell11 = { 4, 11, 12, -2 };&lt;br /&gt;
  int[] cell12 = { 12, 11, 19, -2 };  &lt;br /&gt;
  int[] cell13 = { 13, 20, 6, -2 };&lt;br /&gt;
  int[] cell14 = { 14, 7, 21, -2 };&lt;br /&gt;
  int[] cell15 = { 15, 16, 8, -2 };&lt;br /&gt;
  int[] cell16 = { 16, 15, 9, -2 };&lt;br /&gt;
  int[] cell17 = { 17, 10, 24, -2 };  &lt;br /&gt;
  int[] cell18 = { 18, 19, 25, -2 };&lt;br /&gt;
  int[] cell19 = { 19, 12, 18, -1 };&lt;br /&gt;
  int[] cell20 = { 20, 13, -2, -1 };&lt;br /&gt;
  int[] cell21 = { 21, 22, 14, -2 };&lt;br /&gt;
  int[] cell22 = { 22, 23, 21, -2 };  &lt;br /&gt;
  int[] cell23 = { 23, 22, 24, 30 };&lt;br /&gt;
  int[] cell24 = { 24, 31, 17, 23 };&lt;br /&gt;
  int[] cell25 = { 25, 32, 18, 26 };&lt;br /&gt;
  int[] cell26 = { 26, 27, 25, -2 };&lt;br /&gt;
  int[] cell27 = { 27, 26, 34, -2 };  &lt;br /&gt;
  int[] cell28 = { 28, 29, 35, -1 };&lt;br /&gt;
  int[] cell29 = { 29, 30, 28, -2 };&lt;br /&gt;
  int[] cell30 = { 30, 23, 29, -1 };&lt;br /&gt;
  int[] cell31 = { 31, 32, 24, -2 };&lt;br /&gt;
  int[] cell32 = { 31, 32, 33, 25 };  &lt;br /&gt;
  int[] cell33 = { 33, 32, 40, -1 };&lt;br /&gt;
  int[] cell34 = { 34, 41, 27, -2 };&lt;br /&gt;
  int[] cell35 = { 35, 36, 28, -2 };&lt;br /&gt;
  int[] cell36 = { 36, 35, 37, -2 };&lt;br /&gt;
  int[] cell37 = { 37, 36, -1, -2 };  &lt;br /&gt;
  int[] cell38 = { 38, 39, -2, -1 };&lt;br /&gt;
  int[] cell39 = { 39, 40, 38, -2 };&lt;br /&gt;
  int[] cell40 = { 40, 39, 33, -2 };&lt;br /&gt;
  int[] cell41 = { 41, 34, -2, -1 };&lt;br /&gt;
  &lt;br /&gt;
  setupNeighbors(0, cell0);&lt;br /&gt;
  setupNeighbors(1, cell1);&lt;br /&gt;
  setupNeighbors(2, cell2);&lt;br /&gt;
  setupNeighbors(3, cell3);&lt;br /&gt;
  setupNeighbors(4, cell4);&lt;br /&gt;
   setupNeighbors(5, cell5);&lt;br /&gt;
  setupNeighbors(6, cell6);&lt;br /&gt;
  setupNeighbors(7, cell7);&lt;br /&gt;
  setupNeighbors(8, cell8);&lt;br /&gt;
  setupNeighbors(9, cell9);&lt;br /&gt;
   setupNeighbors(10, cell10);&lt;br /&gt;
  setupNeighbors(11, cell11);&lt;br /&gt;
  setupNeighbors(12, cell12);&lt;br /&gt;
  setupNeighbors(13, cell13);&lt;br /&gt;
  setupNeighbors(14, cell14);&lt;br /&gt;
   setupNeighbors(15, cell15);&lt;br /&gt;
  setupNeighbors(16, cell16);&lt;br /&gt;
  setupNeighbors(17, cell17);&lt;br /&gt;
  setupNeighbors(18, cell18);&lt;br /&gt;
  setupNeighbors(19, cell19);&lt;br /&gt;
   setupNeighbors(20, cell20);&lt;br /&gt;
  setupNeighbors(21, cell21);&lt;br /&gt;
  setupNeighbors(22, cell22);&lt;br /&gt;
  setupNeighbors(23, cell23);&lt;br /&gt;
  setupNeighbors(24, cell24);&lt;br /&gt;
   setupNeighbors(25, cell25);&lt;br /&gt;
  setupNeighbors(26, cell26);&lt;br /&gt;
  setupNeighbors(27, cell27);&lt;br /&gt;
  setupNeighbors(28, cell28);&lt;br /&gt;
  setupNeighbors(29, cell29);&lt;br /&gt;
   setupNeighbors(30, cell30);&lt;br /&gt;
  setupNeighbors(31, cell31);&lt;br /&gt;
  setupNeighbors(32, cell32);&lt;br /&gt;
  setupNeighbors(33, cell33);&lt;br /&gt;
  setupNeighbors(34, cell34);&lt;br /&gt;
   setupNeighbors(35, cell35);&lt;br /&gt;
  setupNeighbors(36, cell36);&lt;br /&gt;
  setupNeighbors(37, cell37);&lt;br /&gt;
  setupNeighbors(38, cell38);&lt;br /&gt;
  setupNeighbors(39, cell39);&lt;br /&gt;
   setupNeighbors(40, cell40);&lt;br /&gt;
   setupNeighbors(41, cell41);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void drawMaze() {&lt;br /&gt;
   stroke(0, 0, 255);&lt;br /&gt;
   strokeWeight(4);&lt;br /&gt;
   line(0, 0, 0, height);&lt;br /&gt;
   line(0, 0, width, 0);&lt;br /&gt;
   line(width, 0, width, height);&lt;br /&gt;
   line(0, height, width, height);&lt;br /&gt;
   line(100, 100, 100, 300);&lt;br /&gt;
   line(100, 300, 300, 300);&lt;br /&gt;
   line(300, 300, 300, 200);&lt;br /&gt;
   line(200, 0, 200, 200);&lt;br /&gt;
   line(200, 100, 300, 100); &lt;br /&gt;
   line(0, 400, 200, 400);&lt;br /&gt;
   line(400, 0, 400, 400);&lt;br /&gt;
   line(100, 500, 500, 500);&lt;br /&gt;
   line(300, 400, 300, height);&lt;br /&gt;
   line(500, 400, 600, 400);&lt;br /&gt;
   line(400, 200, 500, 200);&lt;br /&gt;
   line(500, 300, width, 300);&lt;br /&gt;
   line(500, 100, 600, 100);&lt;br /&gt;
   line(600, 100, 600,300);&lt;br /&gt;
   line(600, 400, 600, height);&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=Midterm_Project_-_Tony_Lu&amp;diff=3808</id>
		<title>Midterm Project - Tony Lu</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=Midterm_Project_-_Tony_Lu&amp;diff=3808"/>
				<updated>2010-05-19T20:08:03Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: /* Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Title==&lt;br /&gt;
VIRTUAL MAZE&lt;br /&gt;
==Description==&lt;br /&gt;
* Motivation&lt;br /&gt;
I&amp;#039;d like my projects to have amusement values and possibly practical applications, much like a game. Along side that, it should also involve an emphasis on physical activity, while definitely showing feedback on the virtual world. I&amp;#039;m pretty fascinated with the blurring of physical and virtual realms. Hopefully it&amp;#039;ll be pretty technically advanced too.&lt;br /&gt;
* Interactive Paradigm&lt;br /&gt;
I&amp;#039;m thinking of tracking a person in physical space, and then have that person walk through a maze in virtual space. He would be able to move in real life unobstructed, of course, but if his virtual representation hits a wall it would be &amp;quot;stuck.&amp;quot; I&amp;#039;m also considering putting in aspects of Pac man or Mario, or incorporating some kind of importance on movements such as dancing or jumping... depending on if my technical ability would allow it.&lt;br /&gt;
* Technical Description&lt;br /&gt;
If possible I&amp;#039;d like Processing to track the person through webcam, possibly using brightness thresholding with a plain background and singling out the blob of black that is the person. If that doesn&amp;#039;t work I could attach LED&amp;#039;s to the person and use brightness tracking instead. The maze should be able to be drawn in Processing, and finally I&amp;#039;d have to find the way to code the limiting of the virtual entity&amp;#039;s movements.&lt;br /&gt;
&lt;br /&gt;
==Visualization==&lt;br /&gt;
* Functional Diagrams and Visual Concept&lt;br /&gt;
[[Image:Vis145b midterm.jpg|800px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
* Source Code &lt;br /&gt;
The coding contains two files, the main coding and the Cell object&lt;br /&gt;
&lt;br /&gt;
Main file: &lt;br /&gt;
-adapts OpenCV&amp;#039;s face tracking code and creates the maze (composed of Cell objects) &lt;br /&gt;
&lt;br /&gt;
import hypermedia.video.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
&lt;br /&gt;
OpenCV opencv;&lt;br /&gt;
&lt;br /&gt;
// contrast/brightness values&lt;br /&gt;
&lt;br /&gt;
int contrast_value    = 0;&lt;br /&gt;
int brightness_value  = 0;&lt;br /&gt;
int cellsize = 100;&lt;br /&gt;
int cellnum = 42;&lt;br /&gt;
boolean start = true;&lt;br /&gt;
int currentcell = 0;&lt;br /&gt;
int in_cell = 0;&lt;br /&gt;
boolean move = false;&lt;br /&gt;
Cell[] cells = new Cell[cellnum];&lt;br /&gt;
PImage pacman;&lt;br /&gt;
PImage pacmanAlpha;&lt;br /&gt;
AudioPlayer player;&lt;br /&gt;
Minim minim;&lt;br /&gt;
int playercounter = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
&lt;br /&gt;
    size( 700, 600 );&lt;br /&gt;
    minim = new Minim(this);&lt;br /&gt;
    player = minim.loadFile(&amp;quot;StartGame.mp3&amp;quot;);&lt;br /&gt;
    player.loop();&lt;br /&gt;
      &lt;br /&gt;
    pacman = loadImage(&amp;quot;pacman.png&amp;quot;);&lt;br /&gt;
    pacmanAlpha = loadImage(&amp;quot;pacmanalpha3.png&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    opencv = new OpenCV( this );&lt;br /&gt;
    opencv.capture( width, height );                   // open video stream&lt;br /&gt;
    opencv.cascade( OpenCV.CASCADE_FRONTALFACE_ALT );  // load detection description, here-&amp;gt; front face detection : &amp;quot;haarcascade_frontalface_alt.xml&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
    int k = -cellsize;&lt;br /&gt;
     &lt;br /&gt;
     //int[] temp = { -1, -2, -3, -4, -5 };&lt;br /&gt;
    for(int i = 0; i &amp;lt; cellnum; i++) {&lt;br /&gt;
      if(i%(width/cellsize) == 0) { k+= cellsize; }&lt;br /&gt;
      cells[i] = new Cell(i, (i%(width/cellsize))*cellsize, k, cellsize);&lt;br /&gt;
      &lt;br /&gt;
      &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    setupAllNeighbors();&lt;br /&gt;
    &lt;br /&gt;
 &lt;br /&gt;
     &lt;br /&gt;
 &lt;br /&gt;
    // print usage&lt;br /&gt;
    println( &amp;quot;Drag mouse on X-axis inside this sketch window to change contrast&amp;quot; );&lt;br /&gt;
    println( &amp;quot;Drag mouse on Y-axis inside this sketch window to change brightness&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public void stop() {&lt;br /&gt;
    opencv.stop();&lt;br /&gt;
    super.stop();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void draw() {&lt;br /&gt;
  &lt;br /&gt;
    // grab a new frame&lt;br /&gt;
    // and convert to gray&lt;br /&gt;
    opencv.read();&lt;br /&gt;
    opencv.flip( OpenCV.FLIP_HORIZONTAL );&lt;br /&gt;
    //opencv.convert( GRAY );&lt;br /&gt;
    opencv.contrast( contrast_value );&lt;br /&gt;
    opencv.brightness( brightness_value );&lt;br /&gt;
&lt;br /&gt;
    // proceed detection&lt;br /&gt;
    Rectangle[] faces = opencv.detect( 1.2, 2, OpenCV.HAAR_DO_CANNY_PRUNING, 40, 40 );&lt;br /&gt;
&lt;br /&gt;
    // display the image&lt;br /&gt;
    image( opencv.image(), 0, 0 );&lt;br /&gt;
    noStroke();&lt;br /&gt;
    fill(255);&lt;br /&gt;
  // rect(0, 0, width, height);&lt;br /&gt;
     boolean r;&lt;br /&gt;
    &lt;br /&gt;
    drawMaze();&lt;br /&gt;
    &lt;br /&gt;
    if(start == false) { cells[currentcell].cellOn(true); }&lt;br /&gt;
     &lt;br /&gt;
       for(int l = 0; l&amp;lt;cellnum; l++) {&lt;br /&gt;
              r = false;&lt;br /&gt;
              if(cells[l].stepped == true) { r = true; }&lt;br /&gt;
              cells[l].circleOn(r);&lt;br /&gt;
           }&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
    // draw face area(s)&lt;br /&gt;
&lt;br /&gt;
    for( int i=0; i&amp;lt;faces.length; i++ ) {&lt;br /&gt;
       &lt;br /&gt;
        noFill();&lt;br /&gt;
        stroke(255,0,0);&lt;br /&gt;
        strokeWeight(5);&lt;br /&gt;
        //rect( faces[i].x, faces[i].y, faces[i].width, faces[i].height ); &lt;br /&gt;
        noStroke();&lt;br /&gt;
        fill(0, 0, 200, 80);&lt;br /&gt;
        in_cell = findClosestCell(faces[i].x + (faces[i].width)/2, faces[i].y);&lt;br /&gt;
        //ellipse(faces[i].x + (faces[i].width)/2, faces[i].y + (faces[i].height)/2, 100, 100);&lt;br /&gt;
        //ellipse(faces[i].x + (faces[i].width)/2, faces[i].y, 100, 100);&lt;br /&gt;
        //ellipse(cells[in_cell].x, cells[in_cell].y, 100, 100);&lt;br /&gt;
        &lt;br /&gt;
        if(start == true) { cells[in_cell].cellOn(); currentcell = in_cell; start = false; }&lt;br /&gt;
        &lt;br /&gt;
  &lt;br /&gt;
        &lt;br /&gt;
       &lt;br /&gt;
        for(int j = 0; j &amp;lt; 4; j++) {&lt;br /&gt;
          &lt;br /&gt;
          if(cells[currentcell].neighbors[j] == in_cell) { move = true; }&lt;br /&gt;
          &lt;br /&gt;
        }&lt;br /&gt;
        if(move == true) {&lt;br /&gt;
        &lt;br /&gt;
        cells[in_cell].cellOn();&lt;br /&gt;
      &lt;br /&gt;
        currentcell = in_cell;&lt;br /&gt;
        } &lt;br /&gt;
        &lt;br /&gt;
        move = false;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Changes contrast/brigthness values&lt;br /&gt;
 */&lt;br /&gt;
void mouseDragged() {&lt;br /&gt;
    contrast_value   = (int) map( mouseX, 0, width, -128, 128 );&lt;br /&gt;
    brightness_value = (int) map( mouseY, 0, width, -128, 128 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int findClosestCell(int face_x, int face_y) {&lt;br /&gt;
  int cellx; int celly;&lt;br /&gt;
  int xhundred = (face_x / 100) * 100; &lt;br /&gt;
  int xten = face_x % 100;&lt;br /&gt;
  int yhundred = (face_y / 100) * 100;&lt;br /&gt;
  int yten = face_y % 100;&lt;br /&gt;
  &lt;br /&gt;
  if(xten &amp;gt; 85) { if(xhundred &amp;lt; 600) { cellx = xhundred + 100; } else { cellx = xhundred; } }&lt;br /&gt;
  else if(xten &amp;lt; 15) { if(xhundred &amp;gt; 100) { cellx = xhundred - 100; } else { cellx = xhundred; } }&lt;br /&gt;
  else { cellx = xhundred; }&lt;br /&gt;
  if(yten &amp;gt; 85) { if(yhundred &amp;lt; 500) { celly = yhundred + 100; } else { celly = yhundred; } }&lt;br /&gt;
  else if(yten &amp;lt; 15) { if(yhundred &amp;gt; 100) { celly = yhundred - 100; } else { celly = yhundred; } }&lt;br /&gt;
  else { celly = yhundred; }&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  return (cellx/100) + (celly/100)*(width/cellsize);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setupNeighbors(int cell, int[] arrayOfNeighbors) {&lt;br /&gt;
 //cell neighbor set up&lt;br /&gt;
    //cells[0].neighbors[0] = 7;&lt;br /&gt;
   cells[cell].neighbors = arrayOfNeighbors;&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void setupAllNeighbors() {&lt;br /&gt;
  &lt;br /&gt;
  int[] cell0 = { 7, 1, 0, -1 };&lt;br /&gt;
  int[] cell1 = { 0, 1, 8, -1 };&lt;br /&gt;
  int[] cell2 = { 2, 3, -1, -2 };&lt;br /&gt;
  int[] cell3 = { 2, 3, 10, -1 };&lt;br /&gt;
  int[] cell4 = { 4, 11, 5, -1 };&lt;br /&gt;
  int[] cell5 = { 5, 4, 6, -2 };&lt;br /&gt;
  int[] cell6 = { 5, 6, 13, -2 };&lt;br /&gt;
  int[] cell7 = { 7, 0, 14, -1 };  &lt;br /&gt;
  int[] cell8 = { 8, 1, 15, -2 };&lt;br /&gt;
  int[] cell9 = { 9, 16, 10, -2 };&lt;br /&gt;
  int[] cell10 = { 3, 10, 17, 9 };&lt;br /&gt;
  int[] cell11 = { 4, 11, 12, -2 };&lt;br /&gt;
  int[] cell12 = { 12, 11, 19, -2 };  &lt;br /&gt;
  int[] cell13 = { 13, 20, 6, -2 };&lt;br /&gt;
  int[] cell14 = { 14, 7, 21, -2 };&lt;br /&gt;
  int[] cell15 = { 15, 16, 8, -2 };&lt;br /&gt;
  int[] cell16 = { 16, 15, 9, -2 };&lt;br /&gt;
  int[] cell17 = { 17, 10, 24, -2 };  &lt;br /&gt;
  int[] cell18 = { 18, 19, 25, -2 };&lt;br /&gt;
  int[] cell19 = { 19, 12, 18, -1 };&lt;br /&gt;
  int[] cell20 = { 20, 13, -2, -1 };&lt;br /&gt;
  int[] cell21 = { 21, 22, 14, -2 };&lt;br /&gt;
  int[] cell22 = { 22, 23, 21, -2 };  &lt;br /&gt;
  int[] cell23 = { 23, 22, 24, 30 };&lt;br /&gt;
  int[] cell24 = { 24, 31, 17, 23 };&lt;br /&gt;
  int[] cell25 = { 25, 32, 18, 26 };&lt;br /&gt;
  int[] cell26 = { 26, 27, 25, -2 };&lt;br /&gt;
  int[] cell27 = { 27, 26, 34, -2 };  &lt;br /&gt;
  int[] cell28 = { 28, 29, 35, -1 };&lt;br /&gt;
  int[] cell29 = { 29, 30, 28, -2 };&lt;br /&gt;
  int[] cell30 = { 30, 23, 29, -1 };&lt;br /&gt;
  int[] cell31 = { 31, 32, 24, -2 };&lt;br /&gt;
  int[] cell32 = { 31, 32, 33, 25 };  &lt;br /&gt;
  int[] cell33 = { 33, 32, 40, -1 };&lt;br /&gt;
  int[] cell34 = { 34, 41, 27, -2 };&lt;br /&gt;
  int[] cell35 = { 35, 36, 28, -2 };&lt;br /&gt;
  int[] cell36 = { 36, 35, 37, -2 };&lt;br /&gt;
  int[] cell37 = { 37, 36, -1, -2 };  &lt;br /&gt;
  int[] cell38 = { 38, 39, -2, -1 };&lt;br /&gt;
  int[] cell39 = { 39, 40, 38, -2 };&lt;br /&gt;
  int[] cell40 = { 40, 39, 33, -2 };&lt;br /&gt;
  int[] cell41 = { 41, 34, -2, -1 };&lt;br /&gt;
  &lt;br /&gt;
  setupNeighbors(0, cell0);&lt;br /&gt;
  setupNeighbors(1, cell1);&lt;br /&gt;
  setupNeighbors(2, cell2);&lt;br /&gt;
  setupNeighbors(3, cell3);&lt;br /&gt;
  setupNeighbors(4, cell4);&lt;br /&gt;
   setupNeighbors(5, cell5);&lt;br /&gt;
  setupNeighbors(6, cell6);&lt;br /&gt;
  setupNeighbors(7, cell7);&lt;br /&gt;
  setupNeighbors(8, cell8);&lt;br /&gt;
  setupNeighbors(9, cell9);&lt;br /&gt;
   setupNeighbors(10, cell10);&lt;br /&gt;
  setupNeighbors(11, cell11);&lt;br /&gt;
  setupNeighbors(12, cell12);&lt;br /&gt;
  setupNeighbors(13, cell13);&lt;br /&gt;
  setupNeighbors(14, cell14);&lt;br /&gt;
   setupNeighbors(15, cell15);&lt;br /&gt;
  setupNeighbors(16, cell16);&lt;br /&gt;
  setupNeighbors(17, cell17);&lt;br /&gt;
  setupNeighbors(18, cell18);&lt;br /&gt;
  setupNeighbors(19, cell19);&lt;br /&gt;
   setupNeighbors(20, cell20);&lt;br /&gt;
  setupNeighbors(21, cell21);&lt;br /&gt;
  setupNeighbors(22, cell22);&lt;br /&gt;
  setupNeighbors(23, cell23);&lt;br /&gt;
  setupNeighbors(24, cell24);&lt;br /&gt;
   setupNeighbors(25, cell25);&lt;br /&gt;
  setupNeighbors(26, cell26);&lt;br /&gt;
  setupNeighbors(27, cell27);&lt;br /&gt;
  setupNeighbors(28, cell28);&lt;br /&gt;
  setupNeighbors(29, cell29);&lt;br /&gt;
   setupNeighbors(30, cell30);&lt;br /&gt;
  setupNeighbors(31, cell31);&lt;br /&gt;
  setupNeighbors(32, cell32);&lt;br /&gt;
  setupNeighbors(33, cell33);&lt;br /&gt;
  setupNeighbors(34, cell34);&lt;br /&gt;
   setupNeighbors(35, cell35);&lt;br /&gt;
  setupNeighbors(36, cell36);&lt;br /&gt;
  setupNeighbors(37, cell37);&lt;br /&gt;
  setupNeighbors(38, cell38);&lt;br /&gt;
  setupNeighbors(39, cell39);&lt;br /&gt;
   setupNeighbors(40, cell40);&lt;br /&gt;
   setupNeighbors(41, cell41);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void drawMaze() {&lt;br /&gt;
   stroke(0, 0, 255);&lt;br /&gt;
   strokeWeight(4);&lt;br /&gt;
   line(0, 0, 0, height);&lt;br /&gt;
   line(0, 0, width, 0);&lt;br /&gt;
   line(width, 0, width, height);&lt;br /&gt;
   line(0, height, width, height);&lt;br /&gt;
   line(100, 100, 100, 300);&lt;br /&gt;
   line(100, 300, 300, 300);&lt;br /&gt;
   line(300, 300, 300, 200);&lt;br /&gt;
   line(200, 0, 200, 200);&lt;br /&gt;
   line(200, 100, 300, 100); &lt;br /&gt;
   line(0, 400, 200, 400);&lt;br /&gt;
   line(400, 0, 400, 400);&lt;br /&gt;
   line(100, 500, 500, 500);&lt;br /&gt;
   line(300, 400, 300, height);&lt;br /&gt;
   line(500, 400, 600, 400);&lt;br /&gt;
   line(400, 200, 500, 200);&lt;br /&gt;
   line(500, 300, width, 300);&lt;br /&gt;
   line(500, 100, 600, 100);&lt;br /&gt;
   line(600, 100, 600,300);&lt;br /&gt;
   line(600, 400, 600, height);&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=Midterm_Project_-_Tony_Lu&amp;diff=3807</id>
		<title>Midterm Project - Tony Lu</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=Midterm_Project_-_Tony_Lu&amp;diff=3807"/>
				<updated>2010-05-19T20:07:28Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: /* Visualization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Title==&lt;br /&gt;
VIRTUAL MAZE&lt;br /&gt;
==Description==&lt;br /&gt;
* Motivation&lt;br /&gt;
I&amp;#039;d like my projects to have amusement values and possibly practical applications, much like a game. Along side that, it should also involve an emphasis on physical activity, while definitely showing feedback on the virtual world. I&amp;#039;m pretty fascinated with the blurring of physical and virtual realms. Hopefully it&amp;#039;ll be pretty technically advanced too.&lt;br /&gt;
* Interactive Paradigm&lt;br /&gt;
I&amp;#039;m thinking of tracking a person in physical space, and then have that person walk through a maze in virtual space. He would be able to move in real life unobstructed, of course, but if his virtual representation hits a wall it would be &amp;quot;stuck.&amp;quot; I&amp;#039;m also considering putting in aspects of Pac man or Mario, or incorporating some kind of importance on movements such as dancing or jumping... depending on if my technical ability would allow it.&lt;br /&gt;
* Technical Description&lt;br /&gt;
If possible I&amp;#039;d like Processing to track the person through webcam, possibly using brightness thresholding with a plain background and singling out the blob of black that is the person. If that doesn&amp;#039;t work I could attach LED&amp;#039;s to the person and use brightness tracking instead. The maze should be able to be drawn in Processing, and finally I&amp;#039;d have to find the way to code the limiting of the virtual entity&amp;#039;s movements.&lt;br /&gt;
&lt;br /&gt;
==Visualization==&lt;br /&gt;
* Functional Diagrams and Visual Concept&lt;br /&gt;
[[Image:Vis145b midterm.jpg|800px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
* Source Code &lt;br /&gt;
The coding contains two files, the main coding and the Cell object&lt;br /&gt;
&lt;br /&gt;
Main file: &lt;br /&gt;
-adapts OpenCV&amp;#039;s face tracking code and creates the maze (composed of Cell objects) &lt;br /&gt;
&lt;br /&gt;
import hypermedia.video.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
&lt;br /&gt;
OpenCV opencv;&lt;br /&gt;
&lt;br /&gt;
// contrast/brightness values&lt;br /&gt;
&lt;br /&gt;
int contrast_value    = 0;&lt;br /&gt;
int brightness_value  = 0;&lt;br /&gt;
int cellsize = 100;&lt;br /&gt;
int cellnum = 42;&lt;br /&gt;
boolean start = true;&lt;br /&gt;
int currentcell = 0;&lt;br /&gt;
int in_cell = 0;&lt;br /&gt;
boolean move = false;&lt;br /&gt;
Cell[] cells = new Cell[cellnum];&lt;br /&gt;
PImage pacman;&lt;br /&gt;
PImage pacmanAlpha;&lt;br /&gt;
AudioPlayer player;&lt;br /&gt;
Minim minim;&lt;br /&gt;
int playercounter = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
&lt;br /&gt;
    size( 700, 600 );&lt;br /&gt;
    minim = new Minim(this);&lt;br /&gt;
    player = minim.loadFile(&amp;quot;StartGame.mp3&amp;quot;);&lt;br /&gt;
    player.loop();&lt;br /&gt;
      &lt;br /&gt;
    pacman = loadImage(&amp;quot;pacman.png&amp;quot;);&lt;br /&gt;
    pacmanAlpha = loadImage(&amp;quot;pacmanalpha3.png&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    opencv = new OpenCV( this );&lt;br /&gt;
    opencv.capture( width, height );                   // open video stream&lt;br /&gt;
    opencv.cascade( OpenCV.CASCADE_FRONTALFACE_ALT );  // load detection description, here-&amp;gt; front face detection : &amp;quot;haarcascade_frontalface_alt.xml&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
    int k = -cellsize;&lt;br /&gt;
     &lt;br /&gt;
     //int[] temp = { -1, -2, -3, -4, -5 };&lt;br /&gt;
    for(int i = 0; i &amp;lt; cellnum; i++) {&lt;br /&gt;
      if(i%(width/cellsize) == 0) { k+= cellsize; }&lt;br /&gt;
      cells[i] = new Cell(i, (i%(width/cellsize))*cellsize, k, cellsize);&lt;br /&gt;
      &lt;br /&gt;
      &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    setupAllNeighbors();&lt;br /&gt;
    &lt;br /&gt;
 &lt;br /&gt;
     &lt;br /&gt;
 &lt;br /&gt;
    // print usage&lt;br /&gt;
    println( &amp;quot;Drag mouse on X-axis inside this sketch window to change contrast&amp;quot; );&lt;br /&gt;
    println( &amp;quot;Drag mouse on Y-axis inside this sketch window to change brightness&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public void stop() {&lt;br /&gt;
    opencv.stop();&lt;br /&gt;
    super.stop();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void draw() {&lt;br /&gt;
  &lt;br /&gt;
    // grab a new frame&lt;br /&gt;
    // and convert to gray&lt;br /&gt;
    opencv.read();&lt;br /&gt;
    opencv.flip( OpenCV.FLIP_HORIZONTAL );&lt;br /&gt;
    //opencv.convert( GRAY );&lt;br /&gt;
    opencv.contrast( contrast_value );&lt;br /&gt;
    opencv.brightness( brightness_value );&lt;br /&gt;
&lt;br /&gt;
    // proceed detection&lt;br /&gt;
    Rectangle[] faces = opencv.detect( 1.2, 2, OpenCV.HAAR_DO_CANNY_PRUNING, 40, 40 );&lt;br /&gt;
&lt;br /&gt;
    // display the image&lt;br /&gt;
    image( opencv.image(), 0, 0 );&lt;br /&gt;
    noStroke();&lt;br /&gt;
    fill(255);&lt;br /&gt;
  // rect(0, 0, width, height);&lt;br /&gt;
     boolean r;&lt;br /&gt;
    &lt;br /&gt;
    drawMaze();&lt;br /&gt;
    &lt;br /&gt;
    if(start == false) { cells[currentcell].cellOn(true); }&lt;br /&gt;
     &lt;br /&gt;
       for(int l = 0; l&amp;lt;cellnum; l++) {&lt;br /&gt;
              r = false;&lt;br /&gt;
              if(cells[l].stepped == true) { r = true; }&lt;br /&gt;
              cells[l].circleOn(r);&lt;br /&gt;
           }&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
    // draw face area(s)&lt;br /&gt;
&lt;br /&gt;
    for( int i=0; i&amp;lt;faces.length; i++ ) {&lt;br /&gt;
       &lt;br /&gt;
        noFill();&lt;br /&gt;
        stroke(255,0,0);&lt;br /&gt;
        strokeWeight(5);&lt;br /&gt;
        //rect( faces[i].x, faces[i].y, faces[i].width, faces[i].height ); &lt;br /&gt;
        noStroke();&lt;br /&gt;
        fill(0, 0, 200, 80);&lt;br /&gt;
        in_cell = findClosestCell(faces[i].x + (faces[i].width)/2, faces[i].y);&lt;br /&gt;
        //ellipse(faces[i].x + (faces[i].width)/2, faces[i].y + (faces[i].height)/2, 100, 100);&lt;br /&gt;
        //ellipse(faces[i].x + (faces[i].width)/2, faces[i].y, 100, 100);&lt;br /&gt;
        //ellipse(cells[in_cell].x, cells[in_cell].y, 100, 100);&lt;br /&gt;
        &lt;br /&gt;
        if(start == true) { cells[in_cell].cellOn(); currentcell = in_cell; start = false; }&lt;br /&gt;
        &lt;br /&gt;
  &lt;br /&gt;
        &lt;br /&gt;
       &lt;br /&gt;
        for(int j = 0; j &amp;lt; 4; j++) {&lt;br /&gt;
          &lt;br /&gt;
          if(cells[currentcell].neighbors[j] == in_cell) { move = true; }&lt;br /&gt;
          &lt;br /&gt;
        }&lt;br /&gt;
        if(move == true) {&lt;br /&gt;
        &lt;br /&gt;
        cells[in_cell].cellOn();&lt;br /&gt;
      &lt;br /&gt;
        currentcell = in_cell;&lt;br /&gt;
        } &lt;br /&gt;
        &lt;br /&gt;
        move = false;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Changes contrast/brigthness values&lt;br /&gt;
 */&lt;br /&gt;
void mouseDragged() {&lt;br /&gt;
    contrast_value   = (int) map( mouseX, 0, width, -128, 128 );&lt;br /&gt;
    brightness_value = (int) map( mouseY, 0, width, -128, 128 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int findClosestCell(int face_x, int face_y) {&lt;br /&gt;
  int cellx; int celly;&lt;br /&gt;
  int xhundred = (face_x / 100) * 100; &lt;br /&gt;
  int xten = face_x % 100;&lt;br /&gt;
  int yhundred = (face_y / 100) * 100;&lt;br /&gt;
  int yten = face_y % 100;&lt;br /&gt;
  &lt;br /&gt;
  if(xten &amp;gt; 85) { if(xhundred &amp;lt; 600) { cellx = xhundred + 100; } else { cellx = xhundred; } }&lt;br /&gt;
  else if(xten &amp;lt; 15) { if(xhundred &amp;gt; 100) { cellx = xhundred - 100; } else { cellx = xhundred; } }&lt;br /&gt;
  else { cellx = xhundred; }&lt;br /&gt;
  if(yten &amp;gt; 85) { if(yhundred &amp;lt; 500) { celly = yhundred + 100; } else { celly = yhundred; } }&lt;br /&gt;
  else if(yten &amp;lt; 15) { if(yhundred &amp;gt; 100) { celly = yhundred - 100; } else { celly = yhundred; } }&lt;br /&gt;
  else { celly = yhundred; }&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  return (cellx/100) + (celly/100)*(width/cellsize);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setupNeighbors(int cell, int[] arrayOfNeighbors) {&lt;br /&gt;
 //cell neighbor set up&lt;br /&gt;
    //cells[0].neighbors[0] = 7;&lt;br /&gt;
   cells[cell].neighbors = arrayOfNeighbors;&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void setupAllNeighbors() {&lt;br /&gt;
  &lt;br /&gt;
  int[] cell0 = { 7, 1, 0, -1 };&lt;br /&gt;
  int[] cell1 = { 0, 1, 8, -1 };&lt;br /&gt;
  int[] cell2 = { 2, 3, -1, -2 };&lt;br /&gt;
  int[] cell3 = { 2, 3, 10, -1 };&lt;br /&gt;
  int[] cell4 = { 4, 11, 5, -1 };&lt;br /&gt;
  int[] cell5 = { 5, 4, 6, -2 };&lt;br /&gt;
  int[] cell6 = { 5, 6, 13, -2 };&lt;br /&gt;
  int[] cell7 = { 7, 0, 14, -1 };  &lt;br /&gt;
  int[] cell8 = { 8, 1, 15, -2 };&lt;br /&gt;
  int[] cell9 = { 9, 16, 10, -2 };&lt;br /&gt;
  int[] cell10 = { 3, 10, 17, 9 };&lt;br /&gt;
  int[] cell11 = { 4, 11, 12, -2 };&lt;br /&gt;
  int[] cell12 = { 12, 11, 19, -2 };  &lt;br /&gt;
  int[] cell13 = { 13, 20, 6, -2 };&lt;br /&gt;
  int[] cell14 = { 14, 7, 21, -2 };&lt;br /&gt;
  int[] cell15 = { 15, 16, 8, -2 };&lt;br /&gt;
  int[] cell16 = { 16, 15, 9, -2 };&lt;br /&gt;
  int[] cell17 = { 17, 10, 24, -2 };  &lt;br /&gt;
  int[] cell18 = { 18, 19, 25, -2 };&lt;br /&gt;
  int[] cell19 = { 19, 12, 18, -1 };&lt;br /&gt;
  int[] cell20 = { 20, 13, -2, -1 };&lt;br /&gt;
  int[] cell21 = { 21, 22, 14, -2 };&lt;br /&gt;
  int[] cell22 = { 22, 23, 21, -2 };  &lt;br /&gt;
  int[] cell23 = { 23, 22, 24, 30 };&lt;br /&gt;
  int[] cell24 = { 24, 31, 17, 23 };&lt;br /&gt;
  int[] cell25 = { 25, 32, 18, 26 };&lt;br /&gt;
  int[] cell26 = { 26, 27, 25, -2 };&lt;br /&gt;
  int[] cell27 = { 27, 26, 34, -2 };  &lt;br /&gt;
  int[] cell28 = { 28, 29, 35, -1 };&lt;br /&gt;
  int[] cell29 = { 29, 30, 28, -2 };&lt;br /&gt;
  int[] cell30 = { 30, 23, 29, -1 };&lt;br /&gt;
  int[] cell31 = { 31, 32, 24, -2 };&lt;br /&gt;
  int[] cell32 = { 31, 32, 33, 25 };  &lt;br /&gt;
  int[] cell33 = { 33, 32, 40, -1 };&lt;br /&gt;
  int[] cell34 = { 34, 41, 27, -2 };&lt;br /&gt;
  int[] cell35 = { 35, 36, 28, -2 };&lt;br /&gt;
  int[] cell36 = { 36, 35, 37, -2 };&lt;br /&gt;
  int[] cell37 = { 37, 36, -1, -2 };  &lt;br /&gt;
  int[] cell38 = { 38, 39, -2, -1 };&lt;br /&gt;
  int[] cell39 = { 39, 40, 38, -2 };&lt;br /&gt;
  int[] cell40 = { 40, 39, 33, -2 };&lt;br /&gt;
  int[] cell41 = { 41, 34, -2, -1 };&lt;br /&gt;
  &lt;br /&gt;
  setupNeighbors(0, cell0);&lt;br /&gt;
  setupNeighbors(1, cell1);&lt;br /&gt;
  setupNeighbors(2, cell2);&lt;br /&gt;
  setupNeighbors(3, cell3);&lt;br /&gt;
  setupNeighbors(4, cell4);&lt;br /&gt;
   setupNeighbors(5, cell5);&lt;br /&gt;
  setupNeighbors(6, cell6);&lt;br /&gt;
  setupNeighbors(7, cell7);&lt;br /&gt;
  setupNeighbors(8, cell8);&lt;br /&gt;
  setupNeighbors(9, cell9);&lt;br /&gt;
   setupNeighbors(10, cell10);&lt;br /&gt;
  setupNeighbors(11, cell11);&lt;br /&gt;
  setupNeighbors(12, cell12);&lt;br /&gt;
  setupNeighbors(13, cell13);&lt;br /&gt;
  setupNeighbors(14, cell14);&lt;br /&gt;
   setupNeighbors(15, cell15);&lt;br /&gt;
  setupNeighbors(16, cell16);&lt;br /&gt;
  setupNeighbors(17, cell17);&lt;br /&gt;
  setupNeighbors(18, cell18);&lt;br /&gt;
  setupNeighbors(19, cell19);&lt;br /&gt;
   setupNeighbors(20, cell20);&lt;br /&gt;
  setupNeighbors(21, cell21);&lt;br /&gt;
  setupNeighbors(22, cell22);&lt;br /&gt;
  setupNeighbors(23, cell23);&lt;br /&gt;
  setupNeighbors(24, cell24);&lt;br /&gt;
   setupNeighbors(25, cell25);&lt;br /&gt;
  setupNeighbors(26, cell26);&lt;br /&gt;
  setupNeighbors(27, cell27);&lt;br /&gt;
  setupNeighbors(28, cell28);&lt;br /&gt;
  setupNeighbors(29, cell29);&lt;br /&gt;
   setupNeighbors(30, cell30);&lt;br /&gt;
  setupNeighbors(31, cell31);&lt;br /&gt;
  setupNeighbors(32, cell32);&lt;br /&gt;
  setupNeighbors(33, cell33);&lt;br /&gt;
  setupNeighbors(34, cell34);&lt;br /&gt;
   setupNeighbors(35, cell35);&lt;br /&gt;
  setupNeighbors(36, cell36);&lt;br /&gt;
  setupNeighbors(37, cell37);&lt;br /&gt;
  setupNeighbors(38, cell38);&lt;br /&gt;
  setupNeighbors(39, cell39);&lt;br /&gt;
   setupNeighbors(40, cell40);&lt;br /&gt;
   setupNeighbors(41, cell41);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void drawMaze() {&lt;br /&gt;
   stroke(0, 0, 255);&lt;br /&gt;
   strokeWeight(4);&lt;br /&gt;
   line(0, 0, 0, height);&lt;br /&gt;
   line(0, 0, width, 0);&lt;br /&gt;
   line(width, 0, width, height);&lt;br /&gt;
   line(0, height, width, height);&lt;br /&gt;
   line(100, 100, 100, 300);&lt;br /&gt;
   line(100, 300, 300, 300);&lt;br /&gt;
   line(300, 300, 300, 200);&lt;br /&gt;
   line(200, 0, 200, 200);&lt;br /&gt;
   line(200, 100, 300, 100); &lt;br /&gt;
   line(0, 400, 200, 400);&lt;br /&gt;
   line(400, 0, 400, 400);&lt;br /&gt;
   line(100, 500, 500, 500);&lt;br /&gt;
   line(300, 400, 300, height);&lt;br /&gt;
   line(500, 400, 600, 400);&lt;br /&gt;
   line(400, 200, 500, 200);&lt;br /&gt;
   line(500, 300, width, 300);&lt;br /&gt;
   line(500, 100, 600, 100);&lt;br /&gt;
   line(600, 100, 600,300);&lt;br /&gt;
   line(600, 400, 600, height);&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=Midterm_Project_-_Tony_Lu&amp;diff=3649</id>
		<title>Midterm Project - Tony Lu</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=Midterm_Project_-_Tony_Lu&amp;diff=3649"/>
				<updated>2010-04-29T18:53:52Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: /* Visualization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Title==&lt;br /&gt;
VIRTUAL MAZE&lt;br /&gt;
==Description==&lt;br /&gt;
* Motivation&lt;br /&gt;
I&amp;#039;d like my projects to have amusement values and possibly practical applications, much like a game. Along side that, it should also involve an emphasis on physical activity, while definitely showing feedback on the virtual world. I&amp;#039;m pretty fascinated with the blurring of physical and virtual realms. Hopefully it&amp;#039;ll be pretty technically advanced too.&lt;br /&gt;
* Interactive Paradigm&lt;br /&gt;
I&amp;#039;m thinking of tracking a person in physical space, and then have that person walk through a maze in virtual space. He would be able to move in real life unobstructed, of course, but if his virtual representation hits a wall it would be &amp;quot;stuck.&amp;quot; I&amp;#039;m also considering putting in aspects of Pac man or Mario, or incorporating some kind of importance on movements such as dancing or jumping... depending on if my technical ability would allow it.&lt;br /&gt;
* Technical Description&lt;br /&gt;
If possible I&amp;#039;d like Processing to track the person through webcam, possibly using brightness thresholding with a plain background and singling out the blob of black that is the person. If that doesn&amp;#039;t work I could attach LED&amp;#039;s to the person and use brightness tracking instead. The maze should be able to be drawn in Processing, and finally I&amp;#039;d have to find the way to code the limiting of the virtual entity&amp;#039;s movements.&lt;br /&gt;
&lt;br /&gt;
==Visualization==&lt;br /&gt;
* Functional Diagrams and Visual Concept&lt;br /&gt;
[[Image:Vis145b midterm.jpg|800px|thumb|left]]&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=Midterm_Project_-_Tony_Lu&amp;diff=3648</id>
		<title>Midterm Project - Tony Lu</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=Midterm_Project_-_Tony_Lu&amp;diff=3648"/>
				<updated>2010-04-29T18:53:38Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: /* Visualization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Title==&lt;br /&gt;
VIRTUAL MAZE&lt;br /&gt;
==Description==&lt;br /&gt;
* Motivation&lt;br /&gt;
I&amp;#039;d like my projects to have amusement values and possibly practical applications, much like a game. Along side that, it should also involve an emphasis on physical activity, while definitely showing feedback on the virtual world. I&amp;#039;m pretty fascinated with the blurring of physical and virtual realms. Hopefully it&amp;#039;ll be pretty technically advanced too.&lt;br /&gt;
* Interactive Paradigm&lt;br /&gt;
I&amp;#039;m thinking of tracking a person in physical space, and then have that person walk through a maze in virtual space. He would be able to move in real life unobstructed, of course, but if his virtual representation hits a wall it would be &amp;quot;stuck.&amp;quot; I&amp;#039;m also considering putting in aspects of Pac man or Mario, or incorporating some kind of importance on movements such as dancing or jumping... depending on if my technical ability would allow it.&lt;br /&gt;
* Technical Description&lt;br /&gt;
If possible I&amp;#039;d like Processing to track the person through webcam, possibly using brightness thresholding with a plain background and singling out the blob of black that is the person. If that doesn&amp;#039;t work I could attach LED&amp;#039;s to the person and use brightness tracking instead. The maze should be able to be drawn in Processing, and finally I&amp;#039;d have to find the way to code the limiting of the virtual entity&amp;#039;s movements.&lt;br /&gt;
&lt;br /&gt;
==Visualization==&lt;br /&gt;
* Functional Diagrams and Visual Concept&lt;br /&gt;
[[Image:Vis145b midterm.jpg|200px|thumb|left]]&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=Midterm_Project_-_Tony_Lu&amp;diff=3647</id>
		<title>Midterm Project - Tony Lu</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=Midterm_Project_-_Tony_Lu&amp;diff=3647"/>
				<updated>2010-04-29T18:52:22Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: /* Visualization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Title==&lt;br /&gt;
VIRTUAL MAZE&lt;br /&gt;
==Description==&lt;br /&gt;
* Motivation&lt;br /&gt;
I&amp;#039;d like my projects to have amusement values and possibly practical applications, much like a game. Along side that, it should also involve an emphasis on physical activity, while definitely showing feedback on the virtual world. I&amp;#039;m pretty fascinated with the blurring of physical and virtual realms. Hopefully it&amp;#039;ll be pretty technically advanced too.&lt;br /&gt;
* Interactive Paradigm&lt;br /&gt;
I&amp;#039;m thinking of tracking a person in physical space, and then have that person walk through a maze in virtual space. He would be able to move in real life unobstructed, of course, but if his virtual representation hits a wall it would be &amp;quot;stuck.&amp;quot; I&amp;#039;m also considering putting in aspects of Pac man or Mario, or incorporating some kind of importance on movements such as dancing or jumping... depending on if my technical ability would allow it.&lt;br /&gt;
* Technical Description&lt;br /&gt;
If possible I&amp;#039;d like Processing to track the person through webcam, possibly using brightness thresholding with a plain background and singling out the blob of black that is the person. If that doesn&amp;#039;t work I could attach LED&amp;#039;s to the person and use brightness tracking instead. The maze should be able to be drawn in Processing, and finally I&amp;#039;d have to find the way to code the limiting of the virtual entity&amp;#039;s movements.&lt;br /&gt;
&lt;br /&gt;
==Visualization==&lt;br /&gt;
* Functional Diagrams and Visual Concept&lt;br /&gt;
[[Image:vis145b_midterm.png|200px|thumb|left]]&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=File:Vis145b_midterm.jpg&amp;diff=3646</id>
		<title>File:Vis145b midterm.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=File:Vis145b_midterm.jpg&amp;diff=3646"/>
				<updated>2010-04-29T18:51:24Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=Midterm_Project_-_Tony_Lu&amp;diff=3633</id>
		<title>Midterm Project - Tony Lu</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=Midterm_Project_-_Tony_Lu&amp;diff=3633"/>
				<updated>2010-04-29T07:35:33Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Title==&lt;br /&gt;
VIRTUAL MAZE&lt;br /&gt;
==Description==&lt;br /&gt;
* Motivation&lt;br /&gt;
I&amp;#039;d like my projects to have amusement values and possibly practical applications, much like a game. Along side that, it should also involve an emphasis on physical activity, while definitely showing feedback on the virtual world. I&amp;#039;m pretty fascinated with the blurring of physical and virtual realms. Hopefully it&amp;#039;ll be pretty technically advanced too.&lt;br /&gt;
* Interactive Paradigm&lt;br /&gt;
I&amp;#039;m thinking of tracking a person in physical space, and then have that person walk through a maze in virtual space. He would be able to move in real life unobstructed, of course, but if his virtual representation hits a wall it would be &amp;quot;stuck.&amp;quot; I&amp;#039;m also considering putting in aspects of Pac man or Mario, or incorporating some kind of importance on movements such as dancing or jumping... depending on if my technical ability would allow it.&lt;br /&gt;
* Technical Description&lt;br /&gt;
If possible I&amp;#039;d like Processing to track the person through webcam, possibly using brightness thresholding with a plain background and singling out the blob of black that is the person. If that doesn&amp;#039;t work I could attach LED&amp;#039;s to the person and use brightness tracking instead. The maze should be able to be drawn in Processing, and finally I&amp;#039;d have to find the way to code the limiting of the virtual entity&amp;#039;s movements.&lt;br /&gt;
&lt;br /&gt;
==Visualization==&lt;br /&gt;
* Functional Diagrams&lt;br /&gt;
* Visual Concept&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=Midterm_Project_-_Tony_Lu&amp;diff=3632</id>
		<title>Midterm Project - Tony Lu</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=Midterm_Project_-_Tony_Lu&amp;diff=3632"/>
				<updated>2010-04-29T07:34:41Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Title==&lt;br /&gt;
VIRTUAL MAZE&lt;br /&gt;
==Description==&lt;br /&gt;
* Motivation&lt;br /&gt;
I&amp;#039;d like my projects to have amusement values and possibly practical applications, much like a game. Along side that, it should also involve an emphasis on physical activity, while definitely showing feedback on the virtual world. I&amp;#039;m pretty fascinated with the blurring of physical and virtual realms. Hopefully it&amp;#039;ll be pretty technically advanced too.&lt;br /&gt;
* Interactive Paradigm&lt;br /&gt;
I&amp;#039;m thinking of tracking a person in physical space, and then have that person walk through a maze in virtual space. He would be able to move in real life unobstructed, of course, but if his virtual representation hits a wall it would be &amp;quot;stuck.&amp;quot; I&amp;#039;m also considering putting in aspects of Pac man or Mario, or incorporating some kind of importance on movements such as dancing or jumping... depending on if my technical ability would allow it.&lt;br /&gt;
* Technical Description&lt;br /&gt;
If possible I&amp;#039;d like Processing to track the person through webcam, possibly using brightness thresholding with a plain background and singling out the blob of black that is the person. If that doesn&amp;#039;t work I could attach LED&amp;#039;s to the person and use brightness tracking instead. The maze should be able to be drawn in Processing, and finally I&amp;#039;d have to find the way to limit the virtual entity&amp;#039;s movements.&lt;br /&gt;
&lt;br /&gt;
==Visualization==&lt;br /&gt;
* Functional Diagrams&lt;br /&gt;
* Visual Concept&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=Midterm_Project_-_Tony_Lu&amp;diff=3631</id>
		<title>Midterm Project - Tony Lu</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=Midterm_Project_-_Tony_Lu&amp;diff=3631"/>
				<updated>2010-04-29T07:33:40Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: New page: ==Title== VIRTUAL MAZE ==Description== * Motivation I&amp;#039;d like my projects to have amusement values and possibly practical applications, much like a game. Along side that, it should also inv...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Title==&lt;br /&gt;
VIRTUAL MAZE&lt;br /&gt;
==Description==&lt;br /&gt;
* Motivation&lt;br /&gt;
I&amp;#039;d like my projects to have amusement values and possibly practical applications, much like a game. Along side that, it should also involve an emphasis on physical activity, while definitely showing feedback on the virtual world. I&amp;#039;m pretty fascinated with the blurring of physical and virtual realms. Hopefully it&amp;#039;ll be pretty technically advanced too.&lt;br /&gt;
* Interactive Paradigm&lt;br /&gt;
I&amp;#039;m thinking of tracking a person in physical space, and then have that person walk through a maze in virtual space. He would be able to move in real life unobstructed, of course, but if his virtual representation hits a wall it would be &amp;quot;stuck.&amp;quot; I&amp;#039;m also considering putting in aspects of Pac man or Mario, or incorporating some kind of importance on movements such as dancing... depending on if my technical ability would allow it.&lt;br /&gt;
* Technical Description&lt;br /&gt;
If possible I&amp;#039;d like Processing to track the person through webcam, possibly using brightness thresholding with a plain background and singling out the blob of black that is the person. If that doesn&amp;#039;t work I could attach LED&amp;#039;s to the person and use brightness tracking instead. The maze should be able to be drawn in Processing, and finally I&amp;#039;d have to find the way to limit the virtual entity&amp;#039;s movements.&lt;br /&gt;
==Visualization==&lt;br /&gt;
* Functional Diagrams&lt;br /&gt;
* Visual Concept&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=Classes/2010/VIS145B&amp;diff=3630</id>
		<title>Classes/2010/VIS145B</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=Classes/2010/VIS145B&amp;diff=3630"/>
				<updated>2010-04-29T07:31:50Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: /* Midterm Projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Time and Process Based Digital Media II ==&lt;br /&gt;
Time: Thursdays 3:30-6:20pm, VAF 228&lt;br /&gt;
&lt;br /&gt;
This class is an advanced study and portfolio project course centered on the use of hardware and software to create interactive and time-based art.  These projects can take many forms—interactive installations, dynamic visualizations/sonifications, printed renderings—chosen by the students.  This will not be a course of technical instruction—rather we will consider technical and conceptual issues in tandem, supplementing discussions and activities with specific technical instruction where necessary.  There is a strong emphasis on the development and articulation of personal directions of research by the students in the course. &lt;br /&gt;
&lt;br /&gt;
I would like to split the reading/homework responsibility for two parts of the class.  In the first half of the term I will present a series of works and readings covering my particular interests--the intersections of social performance, embodied experience, and cognition.  In the latter half of the class (after the midterm) you all will do the presentations on topics of your choosing.  Working individually or in small groups, you will provide us with some conceptual provocation (reading material) covering topics you intend to engage with your final, and you will lead a discussion on technical and conceptual issues.  Reading and critical writing, in response to text and works you present and those I present, are integral to this course.&lt;br /&gt;
&lt;br /&gt;
The schedule is a living document and will be revised over the period of the course.&lt;br /&gt;
&lt;br /&gt;
== Instructor ==&lt;br /&gt;
Robert Twomey&lt;br /&gt;
&lt;br /&gt;
rtwomey@ucsd.edu&lt;br /&gt;
*http://roberttwomey.com&lt;br /&gt;
*http://experimentalgamelab.net&lt;br /&gt;
*http://crca.ucsd.edu&lt;br /&gt;
&lt;br /&gt;
Office Hours: Wednesday 3-4pm, Atkinson Hall Rm 1601 (CRCA research neighborhood).  Please e-mail me if you plan to attend.&lt;br /&gt;
&lt;br /&gt;
== Grading ==&lt;br /&gt;
*Midterm Project - 30%&lt;br /&gt;
*Final Project - 40%&lt;br /&gt;
*Presentations - 10%&lt;br /&gt;
*Readings - 10%&lt;br /&gt;
*Participation - 10%&lt;br /&gt;
&lt;br /&gt;
=== Presentations ===&lt;br /&gt;
(1) Short presentation on your work in the second week of class.  This should be a statement of your interests, direction, goals with media art.  Present examples from your own work which you feel strongly about, and which best represent your interests and trajectory.  Present examples of other artist&amp;#039;s work that serve as models for the kind of work you would like to make. (5-10 minutes each)&lt;br /&gt;
&lt;br /&gt;
(2) Medium presentation on final projects in the second semester of the course (weeks 7-9).  This is the portion of the class where you dictate the reading and the discussion.  If you are presenting on a given week, you need to provide us with a reading 1 week in advance.  We will sign up for those time slots in week 6, just after the midterm. (10-15 minutes)&lt;br /&gt;
&lt;br /&gt;
=== Reading Responses ===&lt;br /&gt;
These are written summaries and critical responses to materials assigned for out of class viewing.  Things to consider: What points does the author make?  Do you buy their assumptions or agree with their conclusions?  Reading responses will be printed and turned in to the instructor at the beginning of class.  Generally these should be 1 page long.&lt;br /&gt;
&lt;br /&gt;
=== Projects ===&lt;br /&gt;
Midterm and final projects will be graded on concept, effort, and realization. Formal proposals are a necessary component of the process so take them seriously.  Make the effort to get started early and seek the help you need--we want to see finished, well-considered pieces for the midterm and final. Additionally, you will need to submit documentation of the project after completion which includes images, video, and source code where applicable.  These materials (proposals and documentation) will all be posted to the wiki.&lt;br /&gt;
=== Documentation Policy ===&lt;br /&gt;
*personal wiki page&lt;br /&gt;
*source code on wiki&lt;br /&gt;
*image/video documentation as appropriate. &lt;br /&gt;
*explanatory writing (on intent, motivation, context)&lt;br /&gt;
&lt;br /&gt;
=== Attendance ===&lt;br /&gt;
Attendance is mandatory. Each unexcused absence will drop your final grade one letter.  There are only 10 weeks of class, please come to them all.&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
=== Week 1 - Intro ===&lt;br /&gt;
*Introductions&lt;br /&gt;
*Scope of course, interests, technical possibilities.&lt;br /&gt;
*My work.&lt;br /&gt;
*Watch: We Live In Public.  2009. (excerpts)&lt;br /&gt;
*In class: personal page on wiki. [http://www.trsp.net/teaching/gamemod/ game-mod exercise]. [http://www.trsp.net/teaching/gamemod/gamemod_breakout_source_en.zip download link]&lt;br /&gt;
*Read: [http://www.nyu.edu/projects/xdesign/mainmenu/archive_tangible.html Against Virtualized Information], [http://www.nyu.edu/projects/xdesign/mainmenu/archive_analtictech.html Novel Analytic Techniques], and [http://www.nyu.edu/projects/xdesign/mainmenu/archive_infocounts.html What Information Counts?] by [http://www.environmentalhealthclinic.net/people/natalie-jeremijenko/ Natalie Jeremijenko]. &lt;br /&gt;
*Read: [http://www.yalealumnimagazine.com/issues/2004_03/jeremijenko.html An Engineer for the Avante Garde]&lt;br /&gt;
*Read: [http://www.worldchanging.com/archives/001450.html Natalie Jeremijenko The WorldChanging Interview]&lt;br /&gt;
*Read: [http://tech90s.walkerart.org/nj/transcript/nj_01.html Database Politics and Social Simulations], good background on her earlier artwork.&lt;br /&gt;
&lt;br /&gt;
=== Week 2 - Student Research Interests ===&lt;br /&gt;
*Due: 1 page on Jeremijenko. &lt;br /&gt;
*Presentations on your work.&lt;br /&gt;
*Read: [http://www.flong.com/texts/essays/essay_cvad/ Computer Vision for Artists and Designers: Pedagogic Tools and Techniques for Novice Programmers] Golan Levin. &amp;#039;&amp;#039;pay particular attention to part II. ELEMENTARY COMPUTER VISION TECHNIQUES.  we are going to try these in class next week.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Week 3 - Computer Vision / Human Perception ===&lt;br /&gt;
*Due: Nothing. Read the Golan Levin piece, but no written response.&lt;br /&gt;
*Discuss:&lt;br /&gt;
**Myron Kreuger. Video Place. 1989 [http://www.youtube.com/watch?v=dqZyZrN3Pl0]&lt;br /&gt;
**Text Rain. Camille Utterback &amp;amp; Romy Achituv. 1999. [http://www.youtube.com/watch?v=toWFvXHghDk] [http://www.camilleutterback.com/]&lt;br /&gt;
**Very Nervous System.  1982-1991. [http://vimeo.com/8120954]&lt;br /&gt;
**Suicide Box.  Bureau of Inverse Technology.  1996. (13:00)&lt;br /&gt;
**Marie Sester. ACCESS.  2003. [http://accessproject.net]&lt;br /&gt;
**Messa di Voce. Golan Levin and Zach Lieberman with Jaap Blonk and Joan La Barbara. 2003.  [http://www.flong.com/projects/messa/] [http://www.tmema.org/messa/messa.html]&lt;br /&gt;
**Seen.  David Rokeby.  2002.  [http://vimeo.com/6012986]&lt;br /&gt;
**Sorting Daemon. David Rokeby. 2003. [http://homepage.mac.com/davidrokeby/sorting.html]&lt;br /&gt;
**Cheese.  Christian Moller. 2003. [http://www.christian-moeller.com/display.php?project_id=36] made in collaboration with UCSD  [http://mplab.ucsd.edu/wordpress/ Machine Perception Lab]&lt;br /&gt;
**Eyewriter. 2009 [http://www.eyewriter.org/]&lt;br /&gt;
**Saccade. 2010 [http://roberttwomey.com/saccade] (in progress)&lt;br /&gt;
*Discuss: &lt;br /&gt;
**thresholding&lt;br /&gt;
**frame difference&lt;br /&gt;
**OpenCV - [http://ubaa.net/shared/processing/opencv/ download] [http://www.cs.unc.edu/Research/stc/FAQs/OpenCV/OpenCVReferenceManual.pdf reference manual].  If you are getting this for your computer, be sure to get OpenCV, the OpenCV Processing Library, and the OpenCV Processing Examples (three separate downloads).&lt;br /&gt;
**face recognition&lt;br /&gt;
*In Class:&lt;br /&gt;
**Working alone or in small groups, do experiments with video processing and computer vision.&lt;br /&gt;
&lt;br /&gt;
=== Week 4 - Computer Vision Work ===&lt;br /&gt;
* In Class:&lt;br /&gt;
** Work on computer vision projects&lt;br /&gt;
** Talk about midterm projects.&lt;br /&gt;
&lt;br /&gt;
=== Week 5 - Midterm Workshop ===&lt;br /&gt;
*Due: Midterm project proposal.&lt;br /&gt;
**Working individually or in small groups (2-3 people), produce an interactive piece that bridges the gap between screen space and physical space.  There are many ways to do this--using image-based computer vision techniques, game controllers, audio input, or other physical hardware (Arduino?).  Think about the parameters of interaction--are you documenting viewer&amp;#039;s behavior (unknown to them), are you taking a familiar form (such as a video game) and tweaking it in some way, are you intervening in social space?  Think about what form the output will take.  In your one page proposal, describe the input(s), output(s), and dynamic of interaction, as well as some statement of your motivation.  Why is this a valuable or interesting project?  In addition to the written description, produce supporting visual materials.  These should be two functional diagram images and two visual/aesthetic images.  The functional diagrams should show the necessary software and hardware components and explain how the interaction will occur.  The aesthetic diagrams will give us a sense of what it will look like, how the output will appear.  Make a page for your project (including a title) in the Midterm Projects section at the bottom of this page, upload the necessary materials and embed them in that page.  This proposal is due in class next week where we will critique and workshop the ideas.&lt;br /&gt;
*Review computer vision experiments from last class.&lt;br /&gt;
*Work on midterm projects.&lt;br /&gt;
&lt;br /&gt;
=== Week 6 - Midterm Critiques ===&lt;br /&gt;
In-class critiques of midterm projects.&lt;br /&gt;
&lt;br /&gt;
=== Week 7 ===&lt;br /&gt;
Student presentations&lt;br /&gt;
=== Week 8 ===&lt;br /&gt;
Student presentations &lt;br /&gt;
=== Week 9 ===&lt;br /&gt;
Student presentations&lt;br /&gt;
=== Week 10 - Final Critiques ===&lt;br /&gt;
In-class Critiques.&lt;br /&gt;
&lt;br /&gt;
=== Finals Week ===&lt;br /&gt;
Final documentation due.&lt;br /&gt;
&lt;br /&gt;
== Topics ==&lt;br /&gt;
To Be Scheduled&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Performance for the camera, for the web&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Discuss Chatroulette. Facebook, Twitter, Youtube.  Attention in the social net.&lt;br /&gt;
*ManyCam [http://www.manycam.com/]&lt;br /&gt;
*PS3 eye&lt;br /&gt;
*jennicam [http://www.wired.com/thisdayintech/2010/04/0414jennicam-launches wired]&lt;br /&gt;
*Lonelygirl15 [http://www.youtube.com/watch?v=-goXKtd6cPo youtube] [http://www.wired.com/wired/archive/14.12/lonelygirl.html article]&lt;br /&gt;
*Discuss telematic perfromance. &lt;br /&gt;
* Justin.tv [http://www.justin.tv/#r=s7RVqBU~]&lt;br /&gt;
*Read: The Presentation of Self in Everyday Life (excerpt).  Erving Goffman. 1959.&lt;br /&gt;
*Read: Performance: A Critical Introduction (excerpt).  Richard Carlson. 2004.&lt;br /&gt;
*Do: Intervention in social circuits.  Chatroulette/Facebook/Youtube exercise.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Social Networks/Web 2.0&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Read: Protocol, Control, and Networks by Alexander Galloway and Eugene Thacker.  Grey Room 17, Fall 2004 p 6-29.  &lt;br /&gt;
*Read: DIGITAL MAOISM: The Hazards of the New Online Collectivism.  Jaron Lanier.  2006.&lt;br /&gt;
*Watch: MediatedCultures @ Kansas State http://mediatedcultures.net/mediatedculture.htm&lt;br /&gt;
*Datamining/Complex Networks, node-edge graphing.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Digital Memory/Personal Media: Where do we exist and how do we remember?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Read: Mediated Memories in the Digital Age (excerpt). Jose van Dijck. 2007.&lt;br /&gt;
*Read: Are you sure you want to do this?  Matthias Fuchs 1994.&lt;br /&gt;
*Read: Delete: The Virtue of Forgetting in the Digital Age (excerpt). Viktor Mayer-Schonberger. 2009.&lt;br /&gt;
*Flickr.com, Facebook&lt;br /&gt;
*Discuss: My Pocket. Burak Arikan. 2008. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Cognition + Creativity&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Generative Art vs. Computational Creativity&lt;br /&gt;
*Casy Reas&lt;br /&gt;
*Processing.org&lt;br /&gt;
*Tom Shannon. [http://www.wired.com/magazine/2010/03/pl_arts_pendulum/all/1]&lt;br /&gt;
*Read: Triumph of the Cyborg Composer. &lt;br /&gt;
*Read: How to draw three people in a garden.  1988.&lt;br /&gt;
*Read: Shades of Computational Evocation and Meaning: The GRIOT System and Improvisational Poetry Generation. 2006.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Artificial Intelligence&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Read: Expressive Processing (excerpt), Noah Wardrip Fruin, 2009. &lt;br /&gt;
*Read: Elephants Don&amp;#039;t Play Chess, Rodney Brooks, 1990. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Appropriation and Remix&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Read: The Fiction of Memory.  New York Times, March 12, 2010.  Luc Sante&lt;br /&gt;
*Read: Jonatham Lethem.  The Ecstasy of Influence. Harpers Magazine.  2007. &lt;br /&gt;
*Remix Culture.  Lev.&lt;br /&gt;
*God&amp;#039;s Little Toys: Confessions of a cut &amp;amp; paste artist.  William Gibson. 2005. *http://www.wired.com/wired/archive/13.07/gibson.html&lt;br /&gt;
*Reality Hunger: A Manifesto.  David Shields. 2010.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Materiality in the information age.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Tangible interfaces, haptic feedback. &lt;br /&gt;
*Read: Evocative Objects: Things We Think With (excerpt). Sherry Turkle, 2007. &lt;br /&gt;
*Read: New Media and the Forensic Imagination (excerpt). Matthew Kirschenbaum. 2008.&lt;br /&gt;
*View: BIT Plane.  &lt;br /&gt;
*View: Garbage Cubes&lt;br /&gt;
*Discuss techniques of markerless tracking, augmented reality, QR codes, etc.  *Online/Offline Space.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Embodiment&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Computing with bodies, engineered bodies&lt;br /&gt;
*tactile media, haptic interface&lt;br /&gt;
*embodied perception&lt;br /&gt;
*Read: Stelarc. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Self-Image&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Read: Self/Image: Technology, Representation, and the Contemporary Subject (excerpt).  Amelia Jones, 2006.&lt;br /&gt;
*Do: Forensic Photoshop Exercise.&lt;br /&gt;
*http://www.flickr.com/photos/dryponder/sets/72157623726710218/&lt;br /&gt;
*http://nymag.com/daily/intel/2010/02/obama_being_forced_to_look_at.html#photo=1&lt;br /&gt;
*http://bubleraptor.tumblr.com/&lt;br /&gt;
*photoshop free Marie Claire issue: http://jezebel.com/5511507/so-long-as-your-face-looks-alright-everything-else-can-be-photoshopped&lt;br /&gt;
&lt;br /&gt;
== Places to Find Art ==&lt;br /&gt;
* http://we-make-money-not-art.com/&lt;br /&gt;
* http://www.isea-web.org/, http://www.isea2010ruhr.org/&lt;br /&gt;
* http://www.transmediale.de/en&lt;br /&gt;
* http://01sj.org/&lt;br /&gt;
* http://www.file.org.br/&lt;br /&gt;
* http://www.aec.at/festival_about_en.php&lt;br /&gt;
* http://www.sciencegallery.com/lightwave09&lt;br /&gt;
* Institutions that Sponsor/Show Media Art&lt;br /&gt;
** Eyebeam New York City&lt;br /&gt;
** New Museum/Rhizome.org http://rhizome.org&lt;br /&gt;
** HarvestWorks&lt;br /&gt;
** Machine Project, Los Angeles.&lt;br /&gt;
&lt;br /&gt;
== Midterm Projects ==&lt;br /&gt;
Make pages here. &lt;br /&gt;
* [[DummyProject | Dummy Project]]&lt;br /&gt;
* [[MidtermProject| MotionDJ - Leilani Martin]]&lt;br /&gt;
* [[What&amp;#039;s For Lunch, Kids? by Kelley Kim| &amp;#039;&amp;#039;What&amp;#039;s For Lunch, Kids?&amp;#039;&amp;#039;   - Kelley Kim]]&lt;br /&gt;
* [[Virtual Walk? - Joeny Thipsidakhom]]&lt;br /&gt;
* [[Untitled Midterm| Untitled - Jezreel Callejas]]&lt;br /&gt;
* [[Midterm Project - Tony Lu | Virtual Maze - Tony Lu]]&lt;br /&gt;
&lt;br /&gt;
== Student Pages ==&lt;br /&gt;
Click &amp;quot;edit&amp;quot; on the right to add your own page below. &lt;br /&gt;
* [[Students/RobertTwomey | RobertTwomey]]&lt;br /&gt;
* [[Students/Javier Lee | Javier Lee]]&lt;br /&gt;
* [[Students/Jenny Wang | Jenny Wang]]&lt;br /&gt;
* [[Students/Joeny Thipsidakhom | Joeny Thipsidakhom]]&lt;br /&gt;
* [[Students/Kuan-Ting Lu | Tony Lu]]&lt;br /&gt;
* [[Students/Jezreel Callejas| Jezreel Callejas]]&lt;br /&gt;
* [[Students/ChristinaSanchez| Christina Sanchez]]&lt;br /&gt;
* [[Students/BenBrickley | BenBrickley]]&lt;br /&gt;
* [[Students/Ellen Huang | Ellen Huang]]&lt;br /&gt;
* [[Students/Kelley Kim | Kelley Kim]]&lt;br /&gt;
* [[Students/EmilioMarcelino | EmilioMarcelino]]&lt;br /&gt;
* [[Students/Anna Lin | Anna Lin]]&lt;br /&gt;
* [[Student/Jenny Chang | Jenny Chang]]&lt;br /&gt;
* [[Student/Jet Antonio | Jet Antonio]]&lt;br /&gt;
* [[Students/GregoryParsons | Gregory Parsons]]&lt;br /&gt;
* [[Students/Jennifer Sunga | Jennifer Sunga]]&lt;br /&gt;
* [[Students/LeilaniMartin | Leilani Martin]]&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=Midterm_Project&amp;diff=3629</id>
		<title>Midterm Project</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=Midterm_Project&amp;diff=3629"/>
				<updated>2010-04-29T07:30:52Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: New page: ==Virtual Maze== ==Description== * Motivation I&amp;#039;d like my projects to have amusement values and possibly practical applications, much like a game. Along side that, it should also involve a...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Virtual Maze==&lt;br /&gt;
==Description==&lt;br /&gt;
* Motivation&lt;br /&gt;
I&amp;#039;d like my projects to have amusement values and possibly practical applications, much like a game. Along side that, it should also involve an emphasis on physical activity, while definitely showing feedback on the virtual world. I&amp;#039;m pretty fascinated with the blurring of physical and virtual realms. Hopefully it&amp;#039;ll be pretty technically advanced too.&lt;br /&gt;
* Interactive Paradigm &lt;br /&gt;
I&amp;#039;m thinking of tracking a person in physical space, and then have that person walk through a maze in virtual space. He would be able to move in real life unobstructed, of course, but if his virtual representation hits a wall it would be &amp;quot;stuck.&amp;quot; I&amp;#039;m also considering putting in aspects of Pac man or Mario, or incorporating some kind of importance on movements such as dancing... depending on if my technical ability would allow it.&lt;br /&gt;
* Technical Description&lt;br /&gt;
If possible I&amp;#039;d like Processing to track the person through webcam, possibly using brightness thresholding with a plain background and singling out the blob of black that is the person. If that doesn&amp;#039;t work I could attach LED&amp;#039;s to the person and use brightness tracking instead. The maze should be able to be drawn in Processing, and finally I&amp;#039;d have to find the way to limit the virtual entity&amp;#039;s movements. &lt;br /&gt;
==Visualization==&lt;br /&gt;
* Functional Diagrams&lt;br /&gt;
* Visual Concept&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	<entry>
		<id>http://wiki.roberttwomey.com/index.php?title=Classes/2010/VIS145B&amp;diff=3628</id>
		<title>Classes/2010/VIS145B</title>
		<link rel="alternate" type="text/html" href="http://wiki.roberttwomey.com/index.php?title=Classes/2010/VIS145B&amp;diff=3628"/>
				<updated>2010-04-29T07:11:21Z</updated>
		
		<summary type="html">&lt;p&gt;K2lu: /* Midterm Projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Time and Process Based Digital Media II ==&lt;br /&gt;
Time: Thursdays 3:30-6:20pm, VAF 228&lt;br /&gt;
&lt;br /&gt;
This class is an advanced study and portfolio project course centered on the use of hardware and software to create interactive and time-based art.  These projects can take many forms—interactive installations, dynamic visualizations/sonifications, printed renderings—chosen by the students.  This will not be a course of technical instruction—rather we will consider technical and conceptual issues in tandem, supplementing discussions and activities with specific technical instruction where necessary.  There is a strong emphasis on the development and articulation of personal directions of research by the students in the course. &lt;br /&gt;
&lt;br /&gt;
I would like to split the reading/homework responsibility for two parts of the class.  In the first half of the term I will present a series of works and readings covering my particular interests--the intersections of social performance, embodied experience, and cognition.  In the latter half of the class (after the midterm) you all will do the presentations on topics of your choosing.  Working individually or in small groups, you will provide us with some conceptual provocation (reading material) covering topics you intend to engage with your final, and you will lead a discussion on technical and conceptual issues.  Reading and critical writing, in response to text and works you present and those I present, are integral to this course.&lt;br /&gt;
&lt;br /&gt;
The schedule is a living document and will be revised over the period of the course.&lt;br /&gt;
&lt;br /&gt;
== Instructor ==&lt;br /&gt;
Robert Twomey&lt;br /&gt;
&lt;br /&gt;
rtwomey@ucsd.edu&lt;br /&gt;
*http://roberttwomey.com&lt;br /&gt;
*http://experimentalgamelab.net&lt;br /&gt;
*http://crca.ucsd.edu&lt;br /&gt;
&lt;br /&gt;
Office Hours: Wednesday 3-4pm, Atkinson Hall Rm 1601 (CRCA research neighborhood).  Please e-mail me if you plan to attend.&lt;br /&gt;
&lt;br /&gt;
== Grading ==&lt;br /&gt;
*Midterm Project - 30%&lt;br /&gt;
*Final Project - 40%&lt;br /&gt;
*Presentations - 10%&lt;br /&gt;
*Readings - 10%&lt;br /&gt;
*Participation - 10%&lt;br /&gt;
&lt;br /&gt;
=== Presentations ===&lt;br /&gt;
(1) Short presentation on your work in the second week of class.  This should be a statement of your interests, direction, goals with media art.  Present examples from your own work which you feel strongly about, and which best represent your interests and trajectory.  Present examples of other artist&amp;#039;s work that serve as models for the kind of work you would like to make. (5-10 minutes each)&lt;br /&gt;
&lt;br /&gt;
(2) Medium presentation on final projects in the second semester of the course (weeks 7-9).  This is the portion of the class where you dictate the reading and the discussion.  If you are presenting on a given week, you need to provide us with a reading 1 week in advance.  We will sign up for those time slots in week 6, just after the midterm. (10-15 minutes)&lt;br /&gt;
&lt;br /&gt;
=== Reading Responses ===&lt;br /&gt;
These are written summaries and critical responses to materials assigned for out of class viewing.  Things to consider: What points does the author make?  Do you buy their assumptions or agree with their conclusions?  Reading responses will be printed and turned in to the instructor at the beginning of class.  Generally these should be 1 page long.&lt;br /&gt;
&lt;br /&gt;
=== Projects ===&lt;br /&gt;
Midterm and final projects will be graded on concept, effort, and realization. Formal proposals are a necessary component of the process so take them seriously.  Make the effort to get started early and seek the help you need--we want to see finished, well-considered pieces for the midterm and final. Additionally, you will need to submit documentation of the project after completion which includes images, video, and source code where applicable.  These materials (proposals and documentation) will all be posted to the wiki.&lt;br /&gt;
=== Documentation Policy ===&lt;br /&gt;
*personal wiki page&lt;br /&gt;
*source code on wiki&lt;br /&gt;
*image/video documentation as appropriate. &lt;br /&gt;
*explanatory writing (on intent, motivation, context)&lt;br /&gt;
&lt;br /&gt;
=== Attendance ===&lt;br /&gt;
Attendance is mandatory. Each unexcused absence will drop your final grade one letter.  There are only 10 weeks of class, please come to them all.&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
=== Week 1 - Intro ===&lt;br /&gt;
*Introductions&lt;br /&gt;
*Scope of course, interests, technical possibilities.&lt;br /&gt;
*My work.&lt;br /&gt;
*Watch: We Live In Public.  2009. (excerpts)&lt;br /&gt;
*In class: personal page on wiki. [http://www.trsp.net/teaching/gamemod/ game-mod exercise]. [http://www.trsp.net/teaching/gamemod/gamemod_breakout_source_en.zip download link]&lt;br /&gt;
*Read: [http://www.nyu.edu/projects/xdesign/mainmenu/archive_tangible.html Against Virtualized Information], [http://www.nyu.edu/projects/xdesign/mainmenu/archive_analtictech.html Novel Analytic Techniques], and [http://www.nyu.edu/projects/xdesign/mainmenu/archive_infocounts.html What Information Counts?] by [http://www.environmentalhealthclinic.net/people/natalie-jeremijenko/ Natalie Jeremijenko]. &lt;br /&gt;
*Read: [http://www.yalealumnimagazine.com/issues/2004_03/jeremijenko.html An Engineer for the Avante Garde]&lt;br /&gt;
*Read: [http://www.worldchanging.com/archives/001450.html Natalie Jeremijenko The WorldChanging Interview]&lt;br /&gt;
*Read: [http://tech90s.walkerart.org/nj/transcript/nj_01.html Database Politics and Social Simulations], good background on her earlier artwork.&lt;br /&gt;
&lt;br /&gt;
=== Week 2 - Student Research Interests ===&lt;br /&gt;
*Due: 1 page on Jeremijenko. &lt;br /&gt;
*Presentations on your work.&lt;br /&gt;
*Read: [http://www.flong.com/texts/essays/essay_cvad/ Computer Vision for Artists and Designers: Pedagogic Tools and Techniques for Novice Programmers] Golan Levin. &amp;#039;&amp;#039;pay particular attention to part II. ELEMENTARY COMPUTER VISION TECHNIQUES.  we are going to try these in class next week.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Week 3 - Computer Vision / Human Perception ===&lt;br /&gt;
*Due: Nothing. Read the Golan Levin piece, but no written response.&lt;br /&gt;
*Discuss:&lt;br /&gt;
**Myron Kreuger. Video Place. 1989 [http://www.youtube.com/watch?v=dqZyZrN3Pl0]&lt;br /&gt;
**Text Rain. Camille Utterback &amp;amp; Romy Achituv. 1999. [http://www.youtube.com/watch?v=toWFvXHghDk] [http://www.camilleutterback.com/]&lt;br /&gt;
**Very Nervous System.  1982-1991. [http://vimeo.com/8120954]&lt;br /&gt;
**Suicide Box.  Bureau of Inverse Technology.  1996. (13:00)&lt;br /&gt;
**Marie Sester. ACCESS.  2003. [http://accessproject.net]&lt;br /&gt;
**Messa di Voce. Golan Levin and Zach Lieberman with Jaap Blonk and Joan La Barbara. 2003.  [http://www.flong.com/projects/messa/] [http://www.tmema.org/messa/messa.html]&lt;br /&gt;
**Seen.  David Rokeby.  2002.  [http://vimeo.com/6012986]&lt;br /&gt;
**Sorting Daemon. David Rokeby. 2003. [http://homepage.mac.com/davidrokeby/sorting.html]&lt;br /&gt;
**Cheese.  Christian Moller. 2003. [http://www.christian-moeller.com/display.php?project_id=36] made in collaboration with UCSD  [http://mplab.ucsd.edu/wordpress/ Machine Perception Lab]&lt;br /&gt;
**Eyewriter. 2009 [http://www.eyewriter.org/]&lt;br /&gt;
**Saccade. 2010 [http://roberttwomey.com/saccade] (in progress)&lt;br /&gt;
*Discuss: &lt;br /&gt;
**thresholding&lt;br /&gt;
**frame difference&lt;br /&gt;
**OpenCV - [http://ubaa.net/shared/processing/opencv/ download] [http://www.cs.unc.edu/Research/stc/FAQs/OpenCV/OpenCVReferenceManual.pdf reference manual].  If you are getting this for your computer, be sure to get OpenCV, the OpenCV Processing Library, and the OpenCV Processing Examples (three separate downloads).&lt;br /&gt;
**face recognition&lt;br /&gt;
*In Class:&lt;br /&gt;
**Working alone or in small groups, do experiments with video processing and computer vision.&lt;br /&gt;
&lt;br /&gt;
=== Week 4 - Computer Vision Work ===&lt;br /&gt;
* In Class:&lt;br /&gt;
** Work on computer vision projects&lt;br /&gt;
** Talk about midterm projects.&lt;br /&gt;
&lt;br /&gt;
=== Week 5 - Midterm Workshop ===&lt;br /&gt;
*Due: Midterm project proposal.&lt;br /&gt;
**Working individually or in small groups (2-3 people), produce an interactive piece that bridges the gap between screen space and physical space.  There are many ways to do this--using image-based computer vision techniques, game controllers, audio input, or other physical hardware (Arduino?).  Think about the parameters of interaction--are you documenting viewer&amp;#039;s behavior (unknown to them), are you taking a familiar form (such as a video game) and tweaking it in some way, are you intervening in social space?  Think about what form the output will take.  In your one page proposal, describe the input(s), output(s), and dynamic of interaction, as well as some statement of your motivation.  Why is this a valuable or interesting project?  In addition to the written description, produce supporting visual materials.  These should be two functional diagram images and two visual/aesthetic images.  The functional diagrams should show the necessary software and hardware components and explain how the interaction will occur.  The aesthetic diagrams will give us a sense of what it will look like, how the output will appear.  Make a page for your project (including a title) in the Midterm Projects section at the bottom of this page, upload the necessary materials and embed them in that page.  This proposal is due in class next week where we will critique and workshop the ideas.&lt;br /&gt;
*Review computer vision experiments from last class.&lt;br /&gt;
*Work on midterm projects.&lt;br /&gt;
&lt;br /&gt;
=== Week 6 - Midterm Critiques ===&lt;br /&gt;
In-class critiques of midterm projects.&lt;br /&gt;
&lt;br /&gt;
=== Week 7 ===&lt;br /&gt;
Student presentations&lt;br /&gt;
=== Week 8 ===&lt;br /&gt;
Student presentations &lt;br /&gt;
=== Week 9 ===&lt;br /&gt;
Student presentations&lt;br /&gt;
=== Week 10 - Final Critiques ===&lt;br /&gt;
In-class Critiques.&lt;br /&gt;
&lt;br /&gt;
=== Finals Week ===&lt;br /&gt;
Final documentation due.&lt;br /&gt;
&lt;br /&gt;
== Topics ==&lt;br /&gt;
To Be Scheduled&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Performance for the camera, for the web&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Discuss Chatroulette. Facebook, Twitter, Youtube.  Attention in the social net.&lt;br /&gt;
*ManyCam [http://www.manycam.com/]&lt;br /&gt;
*PS3 eye&lt;br /&gt;
*jennicam [http://www.wired.com/thisdayintech/2010/04/0414jennicam-launches wired]&lt;br /&gt;
*Lonelygirl15 [http://www.youtube.com/watch?v=-goXKtd6cPo youtube] [http://www.wired.com/wired/archive/14.12/lonelygirl.html article]&lt;br /&gt;
*Discuss telematic perfromance. &lt;br /&gt;
* Justin.tv [http://www.justin.tv/#r=s7RVqBU~]&lt;br /&gt;
*Read: The Presentation of Self in Everyday Life (excerpt).  Erving Goffman. 1959.&lt;br /&gt;
*Read: Performance: A Critical Introduction (excerpt).  Richard Carlson. 2004.&lt;br /&gt;
*Do: Intervention in social circuits.  Chatroulette/Facebook/Youtube exercise.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Social Networks/Web 2.0&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Read: Protocol, Control, and Networks by Alexander Galloway and Eugene Thacker.  Grey Room 17, Fall 2004 p 6-29.  &lt;br /&gt;
*Read: DIGITAL MAOISM: The Hazards of the New Online Collectivism.  Jaron Lanier.  2006.&lt;br /&gt;
*Watch: MediatedCultures @ Kansas State http://mediatedcultures.net/mediatedculture.htm&lt;br /&gt;
*Datamining/Complex Networks, node-edge graphing.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Digital Memory/Personal Media: Where do we exist and how do we remember?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Read: Mediated Memories in the Digital Age (excerpt). Jose van Dijck. 2007.&lt;br /&gt;
*Read: Are you sure you want to do this?  Matthias Fuchs 1994.&lt;br /&gt;
*Read: Delete: The Virtue of Forgetting in the Digital Age (excerpt). Viktor Mayer-Schonberger. 2009.&lt;br /&gt;
*Flickr.com, Facebook&lt;br /&gt;
*Discuss: My Pocket. Burak Arikan. 2008. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Cognition + Creativity&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Generative Art vs. Computational Creativity&lt;br /&gt;
*Casy Reas&lt;br /&gt;
*Processing.org&lt;br /&gt;
*Tom Shannon. [http://www.wired.com/magazine/2010/03/pl_arts_pendulum/all/1]&lt;br /&gt;
*Read: Triumph of the Cyborg Composer. &lt;br /&gt;
*Read: How to draw three people in a garden.  1988.&lt;br /&gt;
*Read: Shades of Computational Evocation and Meaning: The GRIOT System and Improvisational Poetry Generation. 2006.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Artificial Intelligence&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Read: Expressive Processing (excerpt), Noah Wardrip Fruin, 2009. &lt;br /&gt;
*Read: Elephants Don&amp;#039;t Play Chess, Rodney Brooks, 1990. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Appropriation and Remix&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Read: The Fiction of Memory.  New York Times, March 12, 2010.  Luc Sante&lt;br /&gt;
*Read: Jonatham Lethem.  The Ecstasy of Influence. Harpers Magazine.  2007. &lt;br /&gt;
*Remix Culture.  Lev.&lt;br /&gt;
*God&amp;#039;s Little Toys: Confessions of a cut &amp;amp; paste artist.  William Gibson. 2005. *http://www.wired.com/wired/archive/13.07/gibson.html&lt;br /&gt;
*Reality Hunger: A Manifesto.  David Shields. 2010.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Materiality in the information age.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Tangible interfaces, haptic feedback. &lt;br /&gt;
*Read: Evocative Objects: Things We Think With (excerpt). Sherry Turkle, 2007. &lt;br /&gt;
*Read: New Media and the Forensic Imagination (excerpt). Matthew Kirschenbaum. 2008.&lt;br /&gt;
*View: BIT Plane.  &lt;br /&gt;
*View: Garbage Cubes&lt;br /&gt;
*Discuss techniques of markerless tracking, augmented reality, QR codes, etc.  *Online/Offline Space.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Embodiment&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Computing with bodies, engineered bodies&lt;br /&gt;
*tactile media, haptic interface&lt;br /&gt;
*embodied perception&lt;br /&gt;
*Read: Stelarc. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Self-Image&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Read: Self/Image: Technology, Representation, and the Contemporary Subject (excerpt).  Amelia Jones, 2006.&lt;br /&gt;
*Do: Forensic Photoshop Exercise.&lt;br /&gt;
*http://www.flickr.com/photos/dryponder/sets/72157623726710218/&lt;br /&gt;
*http://nymag.com/daily/intel/2010/02/obama_being_forced_to_look_at.html#photo=1&lt;br /&gt;
*http://bubleraptor.tumblr.com/&lt;br /&gt;
*photoshop free Marie Claire issue: http://jezebel.com/5511507/so-long-as-your-face-looks-alright-everything-else-can-be-photoshopped&lt;br /&gt;
&lt;br /&gt;
== Places to Find Art ==&lt;br /&gt;
* http://we-make-money-not-art.com/&lt;br /&gt;
* http://www.isea-web.org/, http://www.isea2010ruhr.org/&lt;br /&gt;
* http://www.transmediale.de/en&lt;br /&gt;
* http://01sj.org/&lt;br /&gt;
* http://www.file.org.br/&lt;br /&gt;
* http://www.aec.at/festival_about_en.php&lt;br /&gt;
* http://www.sciencegallery.com/lightwave09&lt;br /&gt;
* Institutions that Sponsor/Show Media Art&lt;br /&gt;
** Eyebeam New York City&lt;br /&gt;
** New Museum/Rhizome.org http://rhizome.org&lt;br /&gt;
** HarvestWorks&lt;br /&gt;
** Machine Project, Los Angeles.&lt;br /&gt;
&lt;br /&gt;
== Midterm Projects ==&lt;br /&gt;
Make pages here. &lt;br /&gt;
* [[DummyProject | Dummy Project]]&lt;br /&gt;
* [[MidtermProject| MotionDJ - Leilani Martin]]&lt;br /&gt;
* [[What&amp;#039;s For Lunch, Kids? by Kelley Kim| &amp;#039;&amp;#039;What&amp;#039;s For Lunch, Kids?&amp;#039;&amp;#039;   - Kelley Kim]]&lt;br /&gt;
* [[Virtual Walk? - Joeny Thipsidakhom]]&lt;br /&gt;
* [[Untitled Midterm| Untitled - Jezreel Callejas]]&lt;br /&gt;
* [[Midterm Project | Virtual Maze - Tony Lu]]&lt;br /&gt;
&lt;br /&gt;
== Student Pages ==&lt;br /&gt;
Click &amp;quot;edit&amp;quot; on the right to add your own page below. &lt;br /&gt;
* [[Students/RobertTwomey | RobertTwomey]]&lt;br /&gt;
* [[Students/Javier Lee | Javier Lee]]&lt;br /&gt;
* [[Students/Jenny Wang | Jenny Wang]]&lt;br /&gt;
* [[Students/Joeny Thipsidakhom | Joeny Thipsidakhom]]&lt;br /&gt;
* [[Students/Kuan-Ting Lu | Tony Lu]]&lt;br /&gt;
* [[Students/Jezreel Callejas| Jezreel Callejas]]&lt;br /&gt;
* [[Students/ChristinaSanchez| Christina Sanchez]]&lt;br /&gt;
* [[Students/BenBrickley | BenBrickley]]&lt;br /&gt;
* [[Students/Ellen Huang | Ellen Huang]]&lt;br /&gt;
* [[Students/Kelley Kim | Kelley Kim]]&lt;br /&gt;
* [[Students/EmilioMarcelino | EmilioMarcelino]]&lt;br /&gt;
* [[Students/Anna Lin | Anna Lin]]&lt;br /&gt;
* [[Student/Jenny Chang | Jenny Chang]]&lt;br /&gt;
* [[Student/Jet Antonio | Jet Antonio]]&lt;br /&gt;
* [[Students/GregoryParsons | Gregory Parsons]]&lt;br /&gt;
* [[Students/Jennifer Sunga | Jennifer Sunga]]&lt;br /&gt;
* [[Students/LeilaniMartin | Leilani Martin]]&lt;/div&gt;</summary>
		<author><name>K2lu</name></author>	</entry>

	</feed>