summaryrefslogtreecommitdiff
path: root/dimensions.yaml
blob: 940c82f6a145ff75a6ee7ca5446d1750d75b99f9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
author: 'bryan bishop <kanzure@gmail.com>'
license: 'GPL2+'
description: "lego dimensions metadata. maybe the 'tests' section can be used somehow?"
urls:
    - 'http://www.lugnet.com/~330/FAQ/Build/dimensions'
    - 'http://snively.blogspot.com/2009/04/lego-minifig-dimensions.html'
    - 'http://sparxmind.com/lego-woes/'
    - 'http://nicjasno.com/forum/viewtopic.php?t=653'

dimensions:
    spacing of stud centers: 8mm
    stud pitch: 7.985mm #spacing of stud centers
    block height: 9.6mm #or 9.582mm
    stud diameter: 5mm #or 4.5mm (or 4.84mm according to stud_height=1.82mm)
    stud height: 1.7mm #or 1.86mm (or 1.82mm and stud_diameter=4.84mm)
    brick wall thickness: 1.5mm #underside (encloses the hollow cavity)
    outer diameter of cylinders: 6.31mm #found on underside of bricks
    cylinder wall thickness: 0.657mm
    plate height: 3.194mm
        #plate_height = 3.2mm according to http://www.ldraw.org/Article218.html
    plate wall depth: 2.25mm
    tube inner diameter: 5mm #what?
    tube outer diameter: 6.6mm #what?
equations:
    height of brick: $spacing_of_stud_centers * 6/5
    thickness of brick walls: ($spacing_of_stud_centers - $stud_diameter)/2
    height of studs: $height_of_brick/3 - $thickness_of_brick_walls
    outer diameter of cylinders: sqrt(2) * $spacing_of_stud_centers - $stud_diameter
    cylinder wall thickness: ($outer_diameter_of_cylinders - $stud_diameter)/2
    stud spacing: $spacing_of_stud_centers - $stud_diameter/2 #from edge of brick to nearest point on stud perimeter (0.5mm? needs groundtruthing)
    #FIXME: the following are only valid for 2x2 bricks or larger (not one-stud pieces)
    block length: $spacing_of_stud_centers * $peg_count_lengthwise + 2*$stud_spacing
    block width: $spacing_of_stud_centers * $peg_count_widthwise + 2*$stud_spacing
    assertions:
    - #!assertEquals
        #three plates stacked on top of each other == 1 brick height (9.582mm)
        1: $height_of_brick
        2: 3*$plate_height
tests:
    #this next test is according to: http://sparxmind.com/lego-woes/
    - #but what about a lego that isn't a block? should this be "!legoblock"?
        #TODO: when a legos.Lego object loads itself up, it should check if its data makes sense.
        #for a 2x2 brick, the height is ~9.58mm, length and width are both ~16mm
        #"size" gives a dimension for the lego block generator to work with, so you don't need to write down all peg/hole interfaces
        size: 2x2
        # "~1mm" indicates "approximately 1 millimeter"
        block height: ~9.58mm
        block length: ~16mm
        block width: ~16mm