how to build a sketch based interfacecsg.csail.mit.edu/6.893/handouts/tutorial-10-sketch.pdf ·...

11
How To Build a Sketch Based Interface Tevfik Metin Sezgin, Michael Oltmans, Randall Davis Consider This Device...

Upload: others

Post on 13-Aug-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: How To Build a Sketch Based Interfacecsg.csail.mit.edu/6.893/Handouts/Tutorial-10-sketch.pdf · 2004-08-19 · MIT 6.893; SMA 5508 Spring 2004 Larry Rudolph Tutorial 10: Sketching

MIT 6.893; SMA 5508 Spring 2004 Larry Rudolph Lecture Introduction

How To Build aSketch Based

Interface

Tevfik Metin Sezgin,

Michael Oltmans,

Randall Davis

MIT 6.893; SMA 5508 Spring 2004 Larry Rudolph Tutorial 10: Sketching 2

Consider This Device...

Page 2: How To Build a Sketch Based Interfacecsg.csail.mit.edu/6.893/Handouts/Tutorial-10-sketch.pdf · 2004-08-19 · MIT 6.893; SMA 5508 Spring 2004 Larry Rudolph Tutorial 10: Sketching

MIT 6.893; SMA 5508 Spring 2004 Larry Rudolph Tutorial 10: Sketching 3

Our Vision

MIT 6.893; SMA 5508 Spring 2004 Larry Rudolph Tutorial 10: Sketching 4

Our Model

• The designersketches with penand paper

• The observerinterprets the sketch

• The observer anddesigner interact

Page 3: How To Build a Sketch Based Interfacecsg.csail.mit.edu/6.893/Handouts/Tutorial-10-sketch.pdf · 2004-08-19 · MIT 6.893; SMA 5508 Spring 2004 Larry Rudolph Tutorial 10: Sketching

MIT 6.893; SMA 5508 Spring 2004 Larry Rudolph Tutorial 10: Sketching 5

Demo

• Conceptual mechanical design

• Client

– Low level sketch understanding

– Recognize sketch as mechanicaldevice

• Server

– Simulate the recognized device

MIT 6.893; SMA 5508 Spring 2004 Larry Rudolph Tutorial 10: Sketching 6

How did we get here?

• Low level sketch processing

• Domain level recognition

• Connection to existing design tools

Page 4: How To Build a Sketch Based Interfacecsg.csail.mit.edu/6.893/Handouts/Tutorial-10-sketch.pdf · 2004-08-19 · MIT 6.893; SMA 5508 Spring 2004 Larry Rudolph Tutorial 10: Sketching

MIT 6.893; SMA 5508 Spring 2004 Larry Rudolph Tutorial 10: Sketching 7

Today’s goals

• Learn to use the low level recognitiontoolkit

• Learn how to build a simple sketchinginterface with the toolkit

• Build your own interface to Xfig

And now, on to the Toolkit…

MIT 6.893; SMA 5508 Spring 2004 Larry Rudolph Tutorial 10: Sketching 8

• Given a freehand stroke, generatea geometric primitive

– Lines

– Circles

– Curves

Toolkit functionality

Page 5: How To Build a Sketch Based Interfacecsg.csail.mit.edu/6.893/Handouts/Tutorial-10-sketch.pdf · 2004-08-19 · MIT 6.893; SMA 5508 Spring 2004 Larry Rudolph Tutorial 10: Sketching

MIT 6.893; SMA 5508 Spring 2004 Larry Rudolph Tutorial 10: Sketching 9

The Toolkit doesn’t do…

• Higher level recognition (i.e., can’trecognize squares, rectangles, domainspecific shapes)

• Gesture recognition

MIT 6.893; SMA 5508 Spring 2004 Larry Rudolph Tutorial 10: Sketching 10

Terminology

Sketch: Informal,messy diagramsconsisting of several strokes

Stroke: Array of timestamped

points collected between pen

down and pen up events

Page 6: How To Build a Sketch Based Interfacecsg.csail.mit.edu/6.893/Handouts/Tutorial-10-sketch.pdf · 2004-08-19 · MIT 6.893; SMA 5508 Spring 2004 Larry Rudolph Tutorial 10: Sketching

MIT 6.893; SMA 5508 Spring 2004 Larry Rudolph Tutorial 10: Sketching 11

Structure of an application

SketchPanel

StrokeDataListener

SimpleClassifier

StrokeData

Application

Geometric

Object

MIT 6.893; SMA 5508 Spring 2004 Larry Rudolph Tutorial 10: Sketching 12

Package hierarchy

• edu.mit.sketch.fig (SketchFig.java)

• edu.mit.sketch.toolkit

– Recognition related classes are here

• edu.mit.sketch.geom

– The geometry package

• edu.mit.sketch.ui

– User interface related classes

Page 7: How To Build a Sketch Based Interfacecsg.csail.mit.edu/6.893/Handouts/Tutorial-10-sketch.pdf · 2004-08-19 · MIT 6.893; SMA 5508 Spring 2004 Larry Rudolph Tutorial 10: Sketching

MIT 6.893; SMA 5508 Spring 2004 Larry Rudolph Tutorial 10: Sketching 13

Classes you will use mostoften

• edu.mit.sketch.ui

– SketchPanel

• edu.mit.sketch.toolkit

– StrokeData

– SimpleClassifier

• edu.mit.sketch.geom

– GeneralPath

– Polygon

– Line

– Ellipse

– Point

– Rectangle

MIT 6.893; SMA 5508 Spring 2004 Larry Rudolph Tutorial 10: Sketching 14

edu.mit.sketch.ui

• SketchPanel

– extends javax.swing.JPanel

– Gathers stroke data

– Displays raw strokes as they aredrawn

– Has methods for adding andremoving StrokeDataListeners

Page 8: How To Build a Sketch Based Interfacecsg.csail.mit.edu/6.893/Handouts/Tutorial-10-sketch.pdf · 2004-08-19 · MIT 6.893; SMA 5508 Spring 2004 Larry Rudolph Tutorial 10: Sketching

MIT 6.893; SMA 5508 Spring 2004 Larry Rudolph Tutorial 10: Sketching 15

edu.mit.sketch.toolkit.StrokeData

• This class holds and computes strokerelated information such as points inthe stroke, pen speed, curvature…

• The constructor takes an array ofpoints

• SketchPanel creates this object aftereach mouse up event

MIT 6.893; SMA 5508 Spring 2004 Larry Rudolph Tutorial 10: Sketching 16

edu.mit.sketch.toolkit.SimpleClassifier

• Constructor takes a StrokeData object

• Has a method int classify()

• This method returns an int indicatingthe type of the approximationgenerated by the toolkit

• Compare the result against thefollowing using a switch statement

– SimpleClassifier.LINE

– SimpleClassifier.ELLIPSE

– SimpleClassifier.POLYGON

– SimpleClassifier.COMPLEX

Page 9: How To Build a Sketch Based Interfacecsg.csail.mit.edu/6.893/Handouts/Tutorial-10-sketch.pdf · 2004-08-19 · MIT 6.893; SMA 5508 Spring 2004 Larry Rudolph Tutorial 10: Sketching

MIT 6.893; SMA 5508 Spring 2004 Larry Rudolph Tutorial 10: Sketching 17

edu.mit.sketch.toolkit.SimpleClassifier

• One can also check for a particulartype by

– SimpleClassifier.isLine()

– SimpleClassifier.isEllipse()

– SimpleClassifier.isPolygon()

– SimpleClassifier.isComplex()

MIT 6.893; SMA 5508 Spring 2004 Larry Rudolph Tutorial 10: Sketching 18

edu.mit.sketch.toolkit.SimpleClassifier

• Once the type is determined, theapproximation can be accessed by

– Line getLineApproximation()

– Ellipse getEllipseApproximation()

– PolygongetPolygonApproximation()

– GeneralPathgetComplexApproximation()

Page 10: How To Build a Sketch Based Interfacecsg.csail.mit.edu/6.893/Handouts/Tutorial-10-sketch.pdf · 2004-08-19 · MIT 6.893; SMA 5508 Spring 2004 Larry Rudolph Tutorial 10: Sketching

MIT 6.893; SMA 5508 Spring 2004 Larry Rudolph Tutorial 10: Sketching 19

Putting it all togetherpublic class XFigFrontendextends SketchPanelimplements StrokeDataListener {

public XFigFrontend ( ) {addStrokeDataListener( this );

}

public void handleStroke( StrokeData stroke_data ){SimpleClassifier classifier =

new SimpleClassifier( stroke_data );

switch( classifier.classify() ) {case SimpleClassifier.LINE:...

}}

}

MIT 6.893; SMA 5508 Spring 2004 Larry Rudolph Tutorial 10: Sketching 20

How to get started• Compile and run

– “make classpath” – only need to do this once foreach shell window

– “make” – compiles the java files

– java SketchTest

• See how it uses the toolkit and the SimpleClassifier

• Best strategy for understanding the control flow:find the handleStroke() method in TicTacToe.java

Page 11: How To Build a Sketch Based Interfacecsg.csail.mit.edu/6.893/Handouts/Tutorial-10-sketch.pdf · 2004-08-19 · MIT 6.893; SMA 5508 Spring 2004 Larry Rudolph Tutorial 10: Sketching

MIT 6.893; SMA 5508 Spring 2004 Larry Rudolph Tutorial 10: Sketching 21

How to get started• Compile and run

– javac SketchTest.java

* Java is not Python! ALWAYS recompile after makingchanges

– <correct any errors!>

– java SketchTest

* don’t include the “.class” part of the name when running

• Try compiling and running MyTTT (assuming I can find it)

• See how it uses the toolkit and the SimpleClassifier

• Best strategy for understanding the control flow: find thehandleStroke() method in TicTacToe.java

MIT 6.893; SMA 5508 Spring 2004 Larry Rudolph Tutorial 10: Sketching 22

Resources

• Javadoc documentation is includedwith toolkit

– mozilla ~/assist/doc/index.html

• Questions: contact Metin [email protected]