@rgsoft/turtle
Version:
Turtle graphics and L-Systems library
69 lines (64 loc) • 1.57 kB
TypeScript
declare const alphabetSymbols: readonly ["F", "G", "H", "L", "M", "D", "U", "+", "-", "[", "]"];
type AlphabetSymbol = typeof alphabetSymbols[number];
declare class Rule {
private _base;
private _next;
constructor(rule: string);
get base(): AlphabetSymbol;
get next(): AlphabetSymbol[];
get nextString(): string;
toString(): string;
}
declare class LSystem {
private _axiom;
private _rules;
private _sentence;
private _generation;
constructor(axiom: string, rules: (string | Rule)[]);
private init;
/**
*
* @param { number } n
*/
generate(n?: number): void;
get sentence(): string;
get generation(): number;
get rules(): Rule[];
set axiom(val: string);
get axiom(): string;
}
interface ScaleConfig {
ratio: number;
scaleStrokeSize?: boolean;
scaleStrokeWeight?: boolean;
scaleAngle?: boolean;
}
interface TurtleConfig {
context: CanvasRenderingContext2D;
strokeSize: number;
strokeWeight: number;
angle: number;
scale: ScaleConfig;
}
declare class Turtle {
config: TurtleConfig;
/**
* @type { number }
*/
private currentScale;
private readonly alphabetMap;
constructor(config: TurtleConfig);
/**
*
* @param { string } sentence
*/
render(sentence: string): void;
/**
*
* @param { number } x
* @param { number } y
* @param { number } angle
*/
init(x: number, y: number, angle: number): void;
}
export { type AlphabetSymbol, LSystem, Rule, Turtle };