corner stitching in swift @ base labs - krakow
DESCRIPTION
Corner Stitching is technique for representing and interacting with 2D layouts with “Manhattan” features, that enables linear time algorithms for searching, creation, deletion, or compaction. Corner Stitching was first introduced by John K. Ousterhout in 1982. In the context of my thesis, I’ve ported the original algorithms from pseudo code written in Pascal to Smalltalk, and more recently I’ve been working on a SWIFT implementation, which I will briefly discuss in this lighting talk.TRANSCRIPT
![Page 1: Corner Stitching in Swift @ Base Labs - Krakow](https://reader034.vdocuments.mx/reader034/viewer/2022052601/5592b7961a28ab47658b458f/html5/thumbnails/1.jpg)
Corner Stitching in SwiftLightning Talk @ Base Labs
Fernando Olivero
![Page 2: Corner Stitching in Swift @ Base Labs - Krakow](https://reader034.vdocuments.mx/reader034/viewer/2022052601/5592b7961a28ab47658b458f/html5/thumbnails/2.jpg)
2D Space2D Shapes
![Page 3: Corner Stitching in Swift @ Base Labs - Krakow](https://reader034.vdocuments.mx/reader034/viewer/2022052601/5592b7961a28ab47658b458f/html5/thumbnails/3.jpg)
Fixed Layout
Row
Column
Grid
Flow
![Page 4: Corner Stitching in Swift @ Base Labs - Krakow](https://reader034.vdocuments.mx/reader034/viewer/2022052601/5592b7961a28ab47658b458f/html5/thumbnails/4.jpg)
Custom Layout
![Page 5: Corner Stitching in Swift @ Base Labs - Krakow](https://reader034.vdocuments.mx/reader034/viewer/2022052601/5592b7961a28ab47658b458f/html5/thumbnails/5.jpg)
let point = CGPoint (10,200)
layout.shapeAt(point) ==
let layout =
Layout Protocol
![Page 6: Corner Stitching in Swift @ Base Labs - Krakow](https://reader034.vdocuments.mx/reader034/viewer/2022052601/5592b7961a28ab47658b458f/html5/thumbnails/6.jpg)
let point = CGPoint (10,200)
layout.shapeAt(point) ==
let shape =
let layout =
Layout Protocol
shape.neighbours() == [ ]
![Page 7: Corner Stitching in Swift @ Base Labs - Krakow](https://reader034.vdocuments.mx/reader034/viewer/2022052601/5592b7961a28ab47658b458f/html5/thumbnails/7.jpg)
Dynamic ?
Empty space after DELETE ?
Overlapping on INSERT?
![Page 8: Corner Stitching in Swift @ Base Labs - Krakow](https://reader034.vdocuments.mx/reader034/viewer/2022052601/5592b7961a28ab47658b458f/html5/thumbnails/8.jpg)
Layout Protocol
shapeAt(aPoint)
neighboursOf(aShape)
remove(aShape)
insertShapeAt(aFrame)
Array<Shapes>
Array<Array<Shapes>>
Array<Shapes>
Data Structure
Fixed Layout
![Page 9: Corner Stitching in Swift @ Base Labs - Krakow](https://reader034.vdocuments.mx/reader034/viewer/2022052601/5592b7961a28ab47658b458f/html5/thumbnails/9.jpg)
Custom Layout
Layout Protocol
Data Structure
![Page 10: Corner Stitching in Swift @ Base Labs - Krakow](https://reader034.vdocuments.mx/reader034/viewer/2022052601/5592b7961a28ab47658b458f/html5/thumbnails/10.jpg)
Custom Layout
Layout Protocol
Data Structure
O(1) ?O(n) ?0(2^n)?
O(n) ?O(n^2) ?
![Page 11: Corner Stitching in Swift @ Base Labs - Krakow](https://reader034.vdocuments.mx/reader034/viewer/2022052601/5592b7961a28ab47658b458f/html5/thumbnails/11.jpg)
![Page 12: Corner Stitching in Swift @ Base Labs - Krakow](https://reader034.vdocuments.mx/reader034/viewer/2022052601/5592b7961a28ab47658b458f/html5/thumbnails/12.jpg)
Solid Tile
Empty Tile
Maximal horizontal rule1
2
as Tall aspossible
![Page 13: Corner Stitching in Swift @ Base Labs - Krakow](https://reader034.vdocuments.mx/reader034/viewer/2022052601/5592b7961a28ab47658b458f/html5/thumbnails/13.jpg)
NeighboursOf(aShape)
O(#neighbours)
![Page 14: Corner Stitching in Swift @ Base Labs - Krakow](https://reader034.vdocuments.mx/reader034/viewer/2022052601/5592b7961a28ab47658b458f/html5/thumbnails/14.jpg)
ShapeAt(aPoint)
![Page 15: Corner Stitching in Swift @ Base Labs - Krakow](https://reader034.vdocuments.mx/reader034/viewer/2022052601/5592b7961a28ab47658b458f/html5/thumbnails/15.jpg)
InsertAt(aFrame,with:aValue)
On Average O(#AreaHeight)
![Page 16: Corner Stitching in Swift @ Base Labs - Krakow](https://reader034.vdocuments.mx/reader034/viewer/2022052601/5592b7961a28ab47658b458f/html5/thumbnails/16.jpg)
TilesBelow(anArea)
On Average O(#AreaHeight)
![Page 17: Corner Stitching in Swift @ Base Labs - Krakow](https://reader034.vdocuments.mx/reader034/viewer/2022052601/5592b7961a28ab47658b458f/html5/thumbnails/17.jpg)
Goodies I : Snowplow
O(#Tiles)
![Page 18: Corner Stitching in Swift @ Base Labs - Krakow](https://reader034.vdocuments.mx/reader034/viewer/2022052601/5592b7961a28ab47658b458f/html5/thumbnails/18.jpg)
Goodies II : Compaction
O(#Tiles)
![Page 19: Corner Stitching in Swift @ Base Labs - Krakow](https://reader034.vdocuments.mx/reader034/viewer/2022052601/5592b7961a28ab47658b458f/html5/thumbnails/19.jpg)
Goodies III : Routing
![Page 20: Corner Stitching in Swift @ Base Labs - Krakow](https://reader034.vdocuments.mx/reader034/viewer/2022052601/5592b7961a28ab47658b458f/html5/thumbnails/20.jpg)
DEMO
![Page 21: Corner Stitching in Swift @ Base Labs - Krakow](https://reader034.vdocuments.mx/reader034/viewer/2022052601/5592b7961a28ab47658b458f/html5/thumbnails/21.jpg)
![Page 22: Corner Stitching in Swift @ Base Labs - Krakow](https://reader034.vdocuments.mx/reader034/viewer/2022052601/5592b7961a28ab47658b458f/html5/thumbnails/22.jpg)
Corner Stitching in SwiftLightning Talk @ Base Labs
Fernando Olivero