SYMBOL INDEX (343 symbols across 47 files) FILE: body/chrumm/__main__.py function main (line 32) | def main(): FILE: body/chrumm/cfg.py function _init (line 1) | def _init(jsonStrings): FILE: body/chrumm/geo/circle.py class Circle (line 5) | class Circle: method __init__ (line 9) | def __init__(self, center, radius): method intersect2D (line 13) | def intersect2D(self, other): method _intersectLine2D (line 21) | def _intersectLine2D(self, line): method _intersectCircle2D (line 44) | def _intersectCircle2D(self, other): FILE: body/chrumm/geo/edge.py class Edge (line 9) | class Edge(collections.UserList): method __init__ (line 12) | def __init__(self, *args): method fromConvexHull2D (line 17) | def fromConvexHull2D(vectors): method toSegments (line 36) | def toSegments(self, isClosed=False): method add (line 41) | def add(self, *args): method xy (line 49) | def xy(self): method xz (line 53) | def xz(self): method yz (line 57) | def yz(self): method mirroredX (line 60) | def mirroredX(self): method mirroredY (line 63) | def mirroredY(self): method mirroredZ (line 66) | def mirroredZ(self): method reversed (line 69) | def reversed(self): method scaled (line 72) | def scaled(self, scalar, center=Vector()): method translated (line 75) | def translated(self, vector): method transformed (line 78) | def transformed(self, matrix): method snapped (line 81) | def snapped(self): method collapsed (line 84) | def collapsed(self, threshold=1e-3): method meshPairwise (line 88) | def meshPairwise(self, other, isClosed=False): method meshParallel (line 150) | def meshParallel(self, other, isClosed=False): method contains2D (line 210) | def contains2D(self, vector): method distance2D (line 226) | def distance2D(self, vector): FILE: body/chrumm/geo/epsilon.py function isZero (line 25) | def isZero(n): FILE: body/chrumm/geo/face.py class Face (line 8) | class Face: method __init__ (line 11) | def __init__(self, edge, holes=[]): method triangulate (line 27) | def triangulate(self): method _mergeHoles (line 58) | def _mergeHoles(points, polyIndexes, holeIndexes): method _cutEars (line 139) | def _cutEars(points, polyIndexes): method _flipTriangles (line 198) | def _flipTriangles(points, triangles): FILE: body/chrumm/geo/line.py class Line (line 4) | class Line: method __init__ (line 8) | def __init__(self, pos, direction): method translated (line 12) | def translated(self, vector): method transformed (line 15) | def transformed(self, matrix): method distance (line 20) | def distance(self, vector): method distance2D (line 27) | def distance2D(self, vector): method intersect (line 37) | def intersect(self, other): FILE: body/chrumm/geo/matrix.py class Matrix (line 4) | class Matrix: method __init__ (line 8) | def __init__(self, data=( method fromAlignment (line 16) | def fromAlignment(sourceDir, targetDir): method __add__ (line 37) | def __add__(self, other): method __sub__ (line 40) | def __sub__(self, other): method __mul__ (line 43) | def __mul__(self, other): method mirroredX (line 68) | def mirroredX(self): method mirroredY (line 75) | def mirroredY(self): method mirroredZ (line 82) | def mirroredZ(self): method rotatedX (line 89) | def rotatedX(self, angle, center=None): method rotatedY (line 102) | def rotatedY(self, angle, center=None): method rotatedZ (line 115) | def rotatedZ(self, angle, center=None): method translated (line 128) | def translated(self, vector): FILE: body/chrumm/geo/plane.py class Plane (line 6) | class Plane: method __init__ (line 10) | def __init__(self, pos, normal): method fromX (line 15) | def fromX(x): method fromY (line 19) | def fromY(y): method fromZ (line 23) | def fromZ(z): method fromPoints (line 27) | def fromPoints(a, b, c): method fromLine2D (line 31) | def fromLine2D(line): method translated (line 35) | def translated(self, vector): method transformed (line 38) | def transformed(self, matrix): method distance (line 43) | def distance(self, vector): method projectNormal (line 47) | def projectNormal(self, vector): method projectX (line 50) | def projectX(self, vector): method projectY (line 57) | def projectY(self, vector): method projectZ (line 64) | def projectZ(self, vector): method intersect (line 71) | def intersect(self, other1, other2=None): method _intersectPlanes (line 78) | def _intersectPlanes(self, other1, other2): method _intersectLine (line 97) | def _intersectLine(self, line): FILE: body/chrumm/geo/segment.py class Segment (line 5) | class Segment: method __init__ (line 9) | def __init__(self, a, b): method magnitude (line 13) | def magnitude(self): method offset2D (line 16) | def offset2D(self, distance): method magnitude2D (line 20) | def magnitude2D(self): method distance2D (line 23) | def distance2D(self, vector): method intersect2D (line 36) | def intersect2D(self, other, asLine=0): FILE: body/chrumm/geo/tests/helper.py function findTriangulationProblems (line 1) | def findTriangulationProblems(triangles, outerSegments): FILE: body/chrumm/geo/tests/test_circle.py class CircleTest (line 12) | class CircleTest(unittest.TestCase): method test_intersectLine2D (line 14) | def test_intersectLine2D(self): method test_intersectCircle2D (line 39) | def test_intersectCircle2D(self): FILE: body/chrumm/geo/tests/test_edge.py class EdgeTest (line 18) | class EdgeTest(unittest.TestCase): method test_fromConvexHull2D (line 20) | def test_fromConvexHull2D(self): method test_toSegments (line 32) | def test_toSegments(self): method test_add (line 61) | def test_add(self): method test_mirroredX (line 91) | def test_mirroredX(self): method test_mirroredY (line 96) | def test_mirroredY(self): method test_mirroredZ (line 101) | def test_mirroredZ(self): method test_reversed (line 106) | def test_reversed(self): method test_scaled (line 111) | def test_scaled(self): method test_translated (line 123) | def test_translated(self): method test_transformed (line 128) | def test_transformed(self): method test_collapsed (line 134) | def test_collapsed(self): method test_meshPairwise (line 155) | def test_meshPairwise(self): method test_meshParallel (line 249) | def test_meshParallel(self): method test_contains2D (line 328) | def test_contains2D(self): method test_distance2D (line 340) | def test_distance2D(self): FILE: body/chrumm/geo/tests/test_face.py class FaceTest (line 10) | class FaceTest(unittest.TestCase): method test_triangulate_simple (line 12) | def test_triangulate_simple(self): method test_triangulate_vertical (line 66) | def test_triangulate_vertical(self): method test_triangulate_flipDelaunay (line 80) | def test_triangulate_flipDelaunay(self): method test_triangulate_sliverEar (line 103) | def test_triangulate_sliverEar(self): method test_triangulate_alignedHoles (line 127) | def test_triangulate_alignedHoles(self): method test_triangulate_holeBridgeOrder (line 158) | def test_triangulate_holeBridgeOrder(self): method test_triangulate_collinearDiagonalHoles (line 188) | def test_triangulate_collinearDiagonalHoles(self): FILE: body/chrumm/geo/tests/test_line.py class LineTest (line 11) | class LineTest(unittest.TestCase): method test_translated (line 13) | def test_translated(self): method test_transformed (line 22) | def test_transformed(self): method test_distance (line 31) | def test_distance(self): method test_distance2D (line 39) | def test_distance2D(self): method test_intersect (line 44) | def test_intersect(self): FILE: body/chrumm/geo/tests/test_matrix.py class MatrixTest (line 14) | class MatrixTest(unittest.TestCase): method test_fromAlignment (line 16) | def test_fromAlignment(self): method test_add (line 24) | def test_add(self): method test_sub (line 29) | def test_sub(self): method test_mulScalar (line 34) | def test_mulScalar(self): method test_mulMatrix (line 39) | def test_mulMatrix(self): method test_mirroredX (line 49) | def test_mirroredX(self): method test_mirroredY (line 53) | def test_mirroredY(self): method test_mirroredZ (line 57) | def test_mirroredZ(self): method test_rotatedX (line 61) | def test_rotatedX(self): method test_rotatedY (line 77) | def test_rotatedY(self): method test_rotatedZ (line 93) | def test_rotatedZ(self): method test_translated (line 109) | def test_translated(self): FILE: body/chrumm/geo/tests/test_plane.py class PlaneTest (line 12) | class PlaneTest(unittest.TestCase): method test_fromPoints (line 14) | def test_fromPoints(self): method test_fromLine2D (line 22) | def test_fromLine2D(self): method test_translated (line 28) | def test_translated(self): method test_transformed (line 37) | def test_transformed(self): method test_distance (line 46) | def test_distance(self): method test_projectNormal (line 52) | def test_projectNormal(self): method test_projectX (line 56) | def test_projectX(self): method test_projectY (line 67) | def test_projectY(self): method test_projectZ (line 78) | def test_projectZ(self): method test_intersectPlanes (line 89) | def test_intersectPlanes(self): method test_intersectLine (line 97) | def test_intersectLine(self): FILE: body/chrumm/geo/tests/test_segment.py class SegmentTest (line 11) | class SegmentTest(unittest.TestCase): method test_magnitude (line 13) | def test_magnitude(self): method test_offset2D (line 17) | def test_offset2D(self): method test_magnitude2D (line 35) | def test_magnitude2D(self): method test_distance2D (line 47) | def test_distance2D(self): method test_intersect2D (line 70) | def test_intersect2D(self): FILE: body/chrumm/geo/tests/test_triangle.py class TriangleTest (line 13) | class TriangleTest(unittest.TestCase): method test_bool (line 15) | def test_bool(self): method test_mirroredX (line 24) | def test_mirroredX(self): method test_mirroredY (line 30) | def test_mirroredY(self): method test_mirroredZ (line 36) | def test_mirroredZ(self): method test_reversed (line 42) | def test_reversed(self): method test_translated (line 48) | def test_translated(self): method test_transformed (line 59) | def test_transformed(self): method test_area (line 66) | def test_area(self): method test_circumradius (line 75) | def test_circumradius(self): method test_normal (line 80) | def test_normal(self): FILE: body/chrumm/geo/tests/test_vector.py class VectorTest (line 17) | class VectorTest(unittest.TestCase): method test_init (line 19) | def test_init(self): method test_fromSurfaceNormal (line 25) | def test_fromSurfaceNormal(self): method test_eq (line 53) | def test_eq(self): method test_lt (line 59) | def test_lt(self): method test_neg (line 67) | def test_neg(self): method test_add (line 71) | def test_add(self): method test_sub (line 75) | def test_sub(self): method test_mul (line 79) | def test_mul(self): method test_truediv (line 85) | def test_truediv(self): method test_transformed (line 93) | def test_transformed(self): method test_transformedNormal (line 98) | def test_transformedNormal(self): method test_snapped (line 112) | def test_snapped(self): method test_normalized (line 121) | def test_normalized(self): method test_cross (line 126) | def test_cross(self): method test_dot (line 131) | def test_dot(self): method test_magnitude (line 136) | def test_magnitude(self): method test_magSquared (line 140) | def test_magSquared(self): method test_angleBetween (line 144) | def test_angleBetween(self): method test_isClose (line 158) | def test_isClose(self): method test_ortho2D (line 173) | def test_ortho2D(self): method test_normalized2D (line 177) | def test_normalized2D(self): method test_magnitude2D (line 182) | def test_magnitude2D(self): method test_magSquared2D (line 186) | def test_magSquared2D(self): method test_angle2D (line 190) | def test_angle2D(self): FILE: body/chrumm/geo/triangle.py class Triangle (line 4) | class Triangle: method __init__ (line 8) | def __init__(self, a, b, c): method __bool__ (line 13) | def __bool__(self): method mirroredX (line 16) | def mirroredX(self): method mirroredY (line 22) | def mirroredY(self): method mirroredZ (line 28) | def mirroredZ(self): method reversed (line 34) | def reversed(self): method translated (line 37) | def translated(self, vector): method transformed (line 43) | def transformed(self, matrix): method area (line 49) | def area(self): method circumradius (line 55) | def circumradius(self): method normal (line 63) | def normal(self): FILE: body/chrumm/geo/vector.py class Vector (line 6) | class Vector: method __init__ (line 10) | def __init__(self, x=0, y=0, z=0): method fromSurfaceNormal (line 16) | def fromSurfaceNormal(vectors): method __repr__ (line 28) | def __repr__(self): method __eq__ (line 34) | def __eq__(self, other): method __lt__ (line 37) | def __lt__(self, other): method __neg__ (line 44) | def __neg__(self): method __add__ (line 47) | def __add__(self, other): method __sub__ (line 50) | def __sub__(self, other): method __mul__ (line 53) | def __mul__(self, scalar): method __truediv__ (line 56) | def __truediv__(self, scalar): method xy (line 60) | def xy(self): method xz (line 64) | def xz(self): method yz (line 68) | def yz(self): method mirroredX (line 71) | def mirroredX(self): method mirroredY (line 74) | def mirroredY(self): method mirroredZ (line 77) | def mirroredZ(self): method translated (line 80) | def translated(self, vector): method transformed (line 83) | def transformed(self, matrix): method transformedNormal (line 90) | def transformedNormal(self, matrix): method snapped (line 97) | def snapped(self): method normalized (line 104) | def normalized(self): method cross (line 107) | def cross(self, other): method dot (line 113) | def dot(self, other): method magnitude (line 116) | def magnitude(self): method magSquared (line 119) | def magSquared(self): method angleBetween (line 122) | def angleBetween(self, other): method isClose (line 127) | def isClose(self, other): method ortho2D (line 133) | def ortho2D(self): method normalized2D (line 137) | def normalized2D(self): method magnitude2D (line 142) | def magnitude2D(self): method magSquared2D (line 145) | def magSquared2D(self): method angle2D (line 148) | def angle2D(self): FILE: body/chrumm/make.py function make (line 20) | def make(jsonStrings, threads, isKnobOnly): FILE: body/chrumm/part/arc.py function arc2D (line 9) | def arc2D(radius, startAngle=0, spanAngle=math.tau, center=Vector()): function cornerArc2D (line 36) | def cornerArc2D(radius, a, b, c): function uprightHole2D (line 56) | def uprightHole2D(radius): function uprightHalfHole2D (line 74) | def uprightHalfHole2D(radius): FILE: body/chrumm/part/body.py class Body (line 22) | class Body: method __init__ (line 24) | def __init__(self, plan): function _chamfer (line 431) | def _chamfer(a, b, c, normal, chamferSize): function _parallelChamfer (line 454) | def _parallelChamfer(a, b, c, prevChamfer): function _cornerChamfer (line 466) | def _cornerChamfer(prevPoint, corner, nextPoint, normal, chamferSize): FILE: body/chrumm/part/boss.py class Boss (line 18) | class Boss: method __init__ (line 20) | def __init__(self, pos, printDirection, wallDirection=None, roofPlane=... method _initWall (line 33) | def _initWall(self, pos, wallDirection): method _initHead (line 68) | def _initHead(self, pos): method _initThread (line 105) | def _initThread(self, pos, printDirection, roofPlane): function _smoothTransition (line 159) | def _smoothTransition(protrusion, bossRadius, bossFillet, minTaperAngle): FILE: body/chrumm/part/bracket.py class CornerBracket (line 16) | class CornerBracket: method __init__ (line 19) | def __init__(self, a, b, c, side): class RoofBracket (line 193) | class RoofBracket: method __init__ (line 196) | def __init__(self, a, b, refMatrix, side): method _makeBoss (line 314) | def _makeBoss(self, refMatrix): class FloorBracket (line 354) | class FloorBracket: method __init__ (line 357) | def __init__(self, a, b, c, d, e, side): function _hexTangentDist (line 476) | def _hexTangentDist(outerRadius, tangentAngle): function _archCorner (line 485) | def _archCorner(radius, a, b, c): function _screwHole (line 490) | def _screwHole(centerL, side, isUpright): FILE: body/chrumm/part/bumper.py class Bumper (line 11) | class Bumper: method __init__ (line 13) | def __init__(self, pos, isHalf=False): FILE: body/chrumm/part/cable.py class Cable (line 12) | class Cable: method __init__ (line 13) | def __init__(self, pos, wallThickness): FILE: body/chrumm/part/encoder.py class Encoder (line 12) | class Encoder: method __init__ (line 14) | def __init__(self, roofPlaneO, roofPlaneI): FILE: body/chrumm/part/floor.py class Floor (line 15) | class Floor: method __init__ (line 17) | def __init__(self, plan, body): function _cornerBumper (line 210) | def _cornerBumper(a, b, c, bumperInset): function _naiveOffset2D (line 228) | def _naiveOffset2D(edge, distance, isClosed=False, minSegLength=1e-3): function _hexGrid2D (line 308) | def _hexGrid2D(edge): FILE: body/chrumm/part/key.py class KeyFactory (line 10) | class KeyFactory: method __init__ (line 13) | def __init__(self): method make (line 127) | def make(self, units=1): class Key (line 131) | class Key: method __init__ (line 133) | def __init__(self, factory, units): method translate (line 152) | def translate(self, vector): method transform (line 155) | def transform(self, matrix): method position (line 159) | def position(self): method capPivotL (line 163) | def capPivotL(self): method capPivotR (line 167) | def capPivotR(self): method boundsI (line 171) | def boundsI(self): method boundsO (line 175) | def boundsO(self): method bounds (line 179) | def bounds(self): method roofHoleI (line 183) | def roofHoleI(self): method roofHoleO (line 187) | def roofHoleO(self): method triangles (line 191) | def triangles(self): FILE: body/chrumm/part/knob.py class Knob (line 19) | class Knob: method __init__ (line 21) | def __init__(self): method _grooveSketch2D (line 70) | def _grooveSketch2D(): method _shaftSketch2D (line 130) | def _shaftSketch2D(): FILE: body/chrumm/part/layout.py class Layout (line 11) | class Layout: method __init__ (line 14) | def __init__(self): method all (line 90) | def all(self, side="both"): method alnum (line 93) | def alnum(self, side="both"): method pinky (line 96) | def pinky(self, side="both"): method alnumCol (line 99) | def alnumCol(self, index, side="both"): method pinkyCol (line 102) | def pinkyCol(self, index, side="both"): method perAlnumCol (line 105) | def perAlnumCol(self, index, side="both"): method perPinkyCol (line 108) | def perPinkyCol(self, index, side="both"): method maxAlnum (line 111) | def maxAlnum(self, side="both"): method minPinky (line 114) | def minPinky(self, side="both"): method thumb (line 117) | def thumb(self, side="both"): method _halves (line 125) | def _halves(self, side="both"): method _group (line 133) | def _group(self, group, side): method _col (line 139) | def _col(self, group, index, side): method _perCol (line 145) | def _perCol(self, group, index, side): FILE: body/chrumm/part/palm.py class Palm (line 17) | class Palm: method __init__ (line 19) | def __init__(self, plan): method _roofSpine (line 290) | def _roofSpine(inset=0): FILE: body/chrumm/part/plan.py class Plan (line 37) | class Plan: method __init__ (line 45) | def __init__(self, side): method _tentCreaseOffset (line 365) | def _tentCreaseOffset(): method _wallLines2D (line 377) | def _wallLines2D(keys, thickness, angle): method _alnumBossKeys (line 399) | def _alnumBossKeys(keys, planeL, planeR, planeB, planeT): method _fitBoss2D (line 416) | def _fitBoss2D(wallLines, key0, key1): FILE: body/chrumm/part/support.py class SupportFactory (line 12) | class SupportFactory: method __init__ (line 15) | def __init__(self): method make (line 69) | def make(self, key): class Support (line 78) | class Support: method __init__ (line 80) | def __init__(self, plan): FILE: body/chrumm/pcb.py function toKiCadFootprint (line 17) | def toKiCadFootprint(planR, planL): function _flattenLayout (line 48) | def _flattenLayout(layout): function _writeKeys (line 92) | def _writeKeys(stream, keys, layer): function _writeMounts (line 99) | def _writeMounts(stream, layout, layer): function _writeKiCadMarker (line 107) | def _writeKiCadMarker(stream, matrix, width, height, layer): FILE: body/chrumm/stl.py function toBytes (line 7) | def toBytes(triangles): FILE: body/prusa/clean-3mf-seam.py function readZip (line 18) | def readZip(path): function writeZip (line 23) | def writeZip(path, fileDict): FILE: firmware/chrumm/encoder.c function encoder_init (line 13) | void encoder_init() function encoder_tick (line 25) | void encoder_tick() function report (line 72) | static void report(uint32_t usage) function encoder_init (line 94) | void encoder_init() {} function encoder_tick (line 95) | void encoder_tick() {} FILE: firmware/chrumm/hid.c function hid_tick (line 22) | void hid_tick() function hid_add (line 32) | void hid_add(uint32_t usage) function hid_remove (line 46) | void hid_remove(uint32_t usage) function addKeycode (line 55) | static void addKeycode(uint8_t code) function removeKeycode (line 79) | static void removeKeycode(uint8_t code) function addConsumer (line 101) | static void addConsumer(uint16_t code) function tud_hid_get_report_cb (line 111) | uint16_t tud_hid_get_report_cb(uint8_t itf, uint8_t id, hid_report_type_... function tud_hid_set_report_cb (line 127) | void tud_hid_set_report_cb(uint8_t itf, uint8_t id, hid_report_type_t ty... FILE: firmware/chrumm/led.c function led_init (line 11) | void led_init() function led_tick (line 18) | void led_tick() function led_blink (line 35) | void led_blink(uint8_t pattern) FILE: firmware/chrumm/main.c function main (line 22) | int main() FILE: firmware/chrumm/matrix.c function matrix_init (line 18) | void matrix_init() function matrix_tick (line 41) | void matrix_tick() function debounce (line 63) | static void debounce(uint key, bool signal) function report (line 110) | static void report(uint key, bool signal) FILE: firmware/chrumm/usb.c function tud_suspend_cb (line 146) | void tud_suspend_cb(bool remote_wakeup_en) FILE: pcb/chrumm/chrumm-plot.py function getRealSize (line 26) | def getRealSize(board):