Spaces:
Running
Running
| export type CreaseType = 'mountain' | 'valley' | 'flat'; | |
| export interface CreaseDef { | |
| edge: [number, number]; | |
| type: CreaseType; | |
| } | |
| export interface Pattern { | |
| id: string; | |
| name: string; | |
| vertices: [number, number][]; | |
| faces: [number, number, number][]; | |
| creases: CreaseDef[]; | |
| } | |
| export const patterns: Pattern[] = [ | |
| { | |
| id: 'simple', | |
| name: 'Simple Valley Fold', | |
| vertices: [ | |
| [-1, 1], [1, 1], | |
| [-1, 0], [1, 0], | |
| [-1, -1], [1, -1] | |
| ], | |
| faces: [ | |
| [0, 2, 3], [0, 3, 1], | |
| [2, 4, 5], [2, 5, 3] | |
| ], | |
| creases: [ | |
| { edge: [2, 3], type: 'valley' } | |
| ] | |
| }, | |
| { | |
| id: 'accordion', | |
| name: 'Accordion Fold', | |
| vertices: [ | |
| [-1, 1], [-0.5, 1], [0, 1], [0.5, 1], [1, 1], | |
| [-1, -1], [-0.5, -1], [0, -1], [0.5, -1], [1, -1] | |
| ], | |
| faces: [ | |
| [0, 1, 6], [0, 6, 5], | |
| [1, 2, 7], [1, 7, 6], | |
| [2, 3, 8], [2, 8, 7], | |
| [3, 4, 9], [3, 9, 8] | |
| ], | |
| creases: [ | |
| { edge: [1, 6], type: 'valley' }, | |
| { edge: [2, 7], type: 'mountain' }, | |
| { edge: [3, 8], type: 'valley' } | |
| ] | |
| }, | |
| { | |
| id: 'waterbomb', | |
| name: 'Waterbomb Base', | |
| vertices: [ | |
| [-1, 1], [0, 1], [1, 1], | |
| [-1, 0], [0, 0], [1, 0], | |
| [-1, -1], [0, -1], [1, -1] | |
| ], | |
| faces: [ | |
| [0, 1, 4], [1, 2, 4], | |
| [2, 5, 4], [5, 8, 4], | |
| [8, 7, 4], [7, 6, 4], | |
| [6, 3, 4], [3, 0, 4] | |
| ], | |
| creases: [ | |
| { edge: [0, 4], type: 'valley' }, | |
| { edge: [2, 4], type: 'valley' }, | |
| { edge: [6, 4], type: 'valley' }, | |
| { edge: [8, 4], type: 'valley' }, | |
| { edge: [1, 4], type: 'mountain' }, | |
| { edge: [3, 4], type: 'mountain' }, | |
| { edge: [5, 4], type: 'mountain' }, | |
| { edge: [7, 4], type: 'mountain' } | |
| ] | |
| }, | |
| { | |
| id: 'preliminary', | |
| name: 'Preliminary Fold (Square Base)', | |
| vertices: [ | |
| [-1, 1], [0, 1], [1, 1], | |
| [-1, 0], [0, 0], [1, 0], | |
| [-1, -1], [0, -1], [1, -1] | |
| ], | |
| faces: [ | |
| [0, 1, 4], [1, 2, 4], | |
| [2, 5, 4], [5, 8, 4], | |
| [8, 7, 4], [7, 6, 4], | |
| [6, 3, 4], [3, 0, 4] | |
| ], | |
| creases: [ | |
| { edge: [0, 4], type: 'mountain' }, | |
| { edge: [2, 4], type: 'mountain' }, | |
| { edge: [6, 4], type: 'mountain' }, | |
| { edge: [8, 4], type: 'mountain' }, | |
| { edge: [1, 4], type: 'valley' }, | |
| { edge: [3, 4], type: 'valley' }, | |
| { edge: [5, 4], type: 'valley' }, | |
| { edge: [7, 4], type: 'valley' } | |
| ] | |
| }, | |
| { | |
| id: 'miura', | |
| name: 'Miura-ori (2x2)', | |
| vertices: [ | |
| [-1, 1], [0, 1.2], [1, 1], | |
| [-1, 0], [0, 0.2], [1, 0], | |
| [-1, -1], [0, -0.8], [1, -1] | |
| ], | |
| faces: [ | |
| [0, 1, 4], [0, 4, 3], | |
| [1, 2, 5], [1, 5, 4], | |
| [3, 4, 7], [3, 7, 6], | |
| [4, 5, 8], [4, 8, 7] | |
| ], | |
| creases: [ | |
| { edge: [1, 4], type: 'mountain' }, | |
| { edge: [4, 7], type: 'mountain' }, | |
| { edge: [3, 4], type: 'valley' }, | |
| { edge: [4, 5], type: 'mountain' } | |
| ] | |
| }, | |
| { | |
| id: 'bird_base', | |
| name: 'Bird Base', | |
| vertices: [ | |
| [-1, 1], [0, 1], [1, 1], | |
| [-1, 0], [0, 0], [1, 0], | |
| [-1, -1], [0, -1], [1, -1], | |
| [-0.5, 0.5], [0.5, 0.5], [-0.5, -0.5], [0.5, -0.5] | |
| ], | |
| faces: [ | |
| [0, 9, 3], [0, 1, 9], [1, 4, 9], [3, 9, 4], | |
| [1, 10, 4], [1, 2, 10], [2, 5, 10], [4, 10, 5], | |
| [3, 4, 11], [3, 11, 6], [6, 11, 7], [4, 7, 11], | |
| [4, 5, 12], [5, 8, 12], [8, 7, 12], [4, 12, 7] | |
| ], | |
| creases: [ | |
| { edge: [1, 4], type: 'mountain' }, | |
| { edge: [3, 4], type: 'mountain' }, | |
| { edge: [5, 4], type: 'mountain' }, | |
| { edge: [7, 4], type: 'mountain' }, | |
| { edge: [0, 9], type: 'valley' }, | |
| { edge: [9, 4], type: 'valley' }, | |
| { edge: [2, 10], type: 'valley' }, | |
| { edge: [10, 4], type: 'valley' }, | |
| { edge: [6, 11], type: 'valley' }, | |
| { edge: [11, 4], type: 'valley' }, | |
| { edge: [8, 12], type: 'valley' }, | |
| { edge: [12, 4], type: 'valley' }, | |
| { edge: [1, 9], type: 'mountain' }, | |
| { edge: [3, 9], type: 'mountain' }, | |
| { edge: [1, 10], type: 'mountain' }, | |
| { edge: [5, 10], type: 'mountain' }, | |
| { edge: [3, 11], type: 'mountain' }, | |
| { edge: [7, 11], type: 'mountain' }, | |
| { edge: [5, 12], type: 'mountain' }, | |
| { edge: [7, 12], type: 'mountain' } | |
| ] | |
| }, | |
| { | |
| id: 'hypar', | |
| name: 'Hyperbolic Paraboloid', | |
| vertices: [ | |
| [-1, 1], [-0.5, 1], [0, 1], [0.5, 1], [1, 1], | |
| [-1, 0.5], [-0.5, 0.5], [0, 0.5], [0.5, 0.5], [1, 0.5], | |
| [-1, 0], [-0.5, 0], [0, 0], [0.5, 0], [1, 0], | |
| [-1, -0.5], [-0.5, -0.5], [0, -0.5], [0.5, -0.5], [1, -0.5], | |
| [-1, -1], [-0.5, -1], [0, -1], [0.5, -1], [1, -1] | |
| ], | |
| faces: [ | |
| [0, 1, 6], [0, 6, 5], [1, 2, 7], [1, 7, 6], [2, 3, 8], [2, 8, 7], [3, 4, 9], [3, 9, 8], | |
| [5, 6, 11], [5, 11, 10], [6, 7, 12], [6, 12, 11], [7, 8, 13], [7, 13, 12], [8, 9, 14], [8, 14, 13], | |
| [10, 11, 16], [10, 16, 15], [11, 12, 17], [11, 17, 16], [12, 13, 18], [12, 18, 17], [13, 14, 19], [13, 19, 18], | |
| [15, 16, 21], [15, 21, 20], [16, 17, 22], [16, 22, 21], [17, 18, 23], [17, 23, 22], [18, 19, 24], [18, 24, 23] | |
| ], | |
| creases: [ | |
| { edge: [1, 6], type: 'mountain' }, { edge: [6, 11], type: 'mountain' }, { edge: [11, 16], type: 'mountain' }, { edge: [16, 21], type: 'mountain' }, | |
| { edge: [2, 7], type: 'valley' }, { edge: [7, 12], type: 'valley' }, { edge: [12, 17], type: 'valley' }, { edge: [17, 22], type: 'valley' }, | |
| { edge: [3, 8], type: 'mountain' }, { edge: [8, 13], type: 'mountain' }, { edge: [13, 18], type: 'mountain' }, { edge: [18, 23], type: 'mountain' }, | |
| { edge: [5, 6], type: 'valley' }, { edge: [6, 7], type: 'valley' }, { edge: [7, 8], type: 'valley' }, { edge: [8, 9], type: 'valley' }, | |
| { edge: [10, 11], type: 'mountain' }, { edge: [11, 12], type: 'mountain' }, { edge: [12, 13], type: 'mountain' }, { edge: [13, 14], type: 'mountain' }, | |
| { edge: [15, 16], type: 'valley' }, { edge: [16, 17], type: 'valley' }, { edge: [17, 18], type: 'valley' }, { edge: [18, 19], type: 'valley' } | |
| ] | |
| } | |
| ]; | |