TurtleBezierPath 1.0

TurtleBezierPath 1.0

TestsTested
LangLanguage Obj-CObjective C
License MIT
ReleasedLast Release Dec 2014

Maintained by Unclaimed.


Downloads

Total55,665
Week0
Month342

Installs

Apps123
Test Targets18
powered by Segment

GitHub

Stars229
Watchers11
Forks23
Issues0
Contributors1
Pull Requests1

Code

Files2
LOCLines of Code 141


  • By
  • Nigel Timothy Barber

TurtleBezierPath is a UIBezierPath subclass for Turtle Graphics: a simple, intuitive drawing system developed my Seymour Papert for the Logo programming language.

The Turtle is a drawing cursor that follows the commands: home, turn, forward, leftArc, rightArc, up and down. As the Turtle moves, it draws a path in its wake. Many shapes are much easier to draw this way.

Demo app

The app requires iOS 7 and allows you to explore Turtle Graphics drawing with simple controls. It's fun too!

Turtle Graphics!

Installation

Simply add TurtleBezierPath.h and TurtleBezierPath.m to your project, or add it as a Cocoapod named TurtleBezierPath.

TurtleBezierPath will work with both ARC and MRC projects.

@interface

Both NSCoding and NSCopying are fully supported.

@property( nonatomic, assign ) CGFloat bearing; // The compass bearing of the Turtle in degrees

  • 0 - North
  • 90 - East
  • 180 - South
  • 270 - West

@property( nonatomic, assign ) BOOL penUp; // When YES the Turtle will move but not draw

-(CGRect)boundsWithStroke; // The bounds rect of the path including the stroke width

-(void)home; // Move the Turtle to ( 0, 0 ) and set the bearing to 0 degrees

-(void)forward:(CGFloat)distance; // Move the Turtle forward distance points

-(void)turn:(CGFloat)angle; // Add angle degrees to the Turtle's bearing

-(void)leftArc:(CGFloat)radius turn:(CGFloat)angle; // Move the Turtle angle degrees in an anti-clockwise arc of radius points

-(void)rightArc:(CGFloat)radius turn:(CGFloat)angle; // Move the Turtle angle degrees in a clockwise arc of radius points

-(void)down; // Move the pen down

-(void)up; // Move the pen up

-(void)centreInBounds:(CGRect)bounds; // Transform the path so that the home position is in the centre of the bounds

@end