1
0

Point fixes and asymmetry tests

This commit is contained in:
Bán Dénes 2020-05-31 20:33:23 +02:00
parent cdb081a377
commit afdc467daf
4 changed files with 44 additions and 22 deletions

View File

@ -39,18 +39,27 @@ zones:
- name: thumb - name: thumb
angle: -20 angle: -20
mirror: mirror:
ref: pinky_bottom ref: pinky_home
# The mk1's origin was the bottom left corner of the bottom pinky key. # The mk1's origin was the bottom left corner of the bottom pinky key.
# But it later got rotated by the bottom *right* corner as the pinky angle # But it later got rotated by the bottom *right* corner as the pinky angle
# and then rotated again for the inter-half angle so [0, 0] was nowhere on # and then rotated again for the inter-half angle so [0, 0] was nowhere on
# the actual result. # the actual result.
# #
# Since the new origin is the center of the pinky bottom, we have to convert # Since the new origin is the center of the pinky home, we have to convert
# the old, round 250 width to this new coordinate system if we want backward # the old, round 250 width to this new coordinate system if we want backward
# compatibility. The following snippet was used to arrive at 233.5881016. # compatibility. The following snippet was used to arrive at this distance.
# #
# old_origin = new Point(7, 7) # old_origin = new Point(7, 7 + 19)
# old_origin.rotate(5, [14, 0]) # old_origin.rotate(5, [14, 0])
# old_origin.rotate(-20, [0, 0]) # old_origin.rotate(-20, [0, 0])
# new_width = 250 - (2 * old_origin.x) # new_width = 250 - (2 * old_origin.x)
distance: 233.5881016 distance: 223.7529778
outline:
top:
left: inner_top
right: mirror_inner_top
bottom:
left: far_thumb
right: mirror_far_thumb
hole: 14
expansion: 5

View File

@ -5,7 +5,7 @@ zones:
columns: columns:
- name: pinky - name: pinky
rotate: -5 rotate: -5
origin: [7, -7] origin: [7, -10]
- name: ring - name: ring
stagger: 12 stagger: 12
- name: middle - name: middle
@ -51,29 +51,22 @@ zones:
- name: near - name: near
padding: 16 padding: 16
column_wire: ring column_wire: ring
# TODO: this is just a test for Dan
- name: nearer
column_wire: pinky
rows: rows:
- name: thumb - name: thumb
angle: -20 angle: -20
mirror: mirror:
ref: pinky_bottom ref: pinky_home
# The mk1's origin was the bottom left corner of the bottom pinky key. # The mk1's origin was the bottom left corner of the bottom pinky key.
# But it later got rotated by the bottom *right* corner as the pinky angle # But it later got rotated by the bottom *right* corner as the pinky angle
# and then rotated again for the inter-half angle so [0, 0] was nowhere on # and then rotated again for the inter-half angle so [0, 0] was nowhere on
# the actual result. # the actual result.
# #
# Since the new origin is the center of the pinky bottom, we have to convert # Since the new origin is the center of the pinky home, we have to convert
# the old, round 250 width to this new coordinate system if we want backward # the old, round 250 width to this new coordinate system if we want backward
# compatibility. The following snippet was used to arrive at 233.5881016. # compatibility. The following snippet was used to arrive at this distance.
# #
# old_origin = new Point(7, 7) # old_origin = new Point(7, 7 + 19)
# old_origin.rotate(5, [14, 0]) # old_origin.rotate(5, [14, 0])
# old_origin.rotate(-20, [0, 0]) # old_origin.rotate(-20, [0, 0])
# new_width = 250 - (2 * old_origin.x) # new_width = 250 - (2 * old_origin.x)
# distance: 223.7529778
# TODO: Hahaaa, the squishing fails, because the width reference points are
# NOT stationary! gotta move to distances between some other points
# (definitely something from among the HOME positions!!!)
distance: 233.5881016

View File

@ -1,6 +1,8 @@
const m = require('makerjs') const m = require('makerjs')
const fs = require('fs-extra') const fs = require('fs-extra')
const u = require('./utils')
const Point = exports.Point = class Point { const Point = exports.Point = class Point {
constructor(x=0, y=0, r=0, meta={}) { constructor(x=0, y=0, r=0, meta={}) {
if (Array.isArray(x)) { if (Array.isArray(x)) {
@ -54,7 +56,7 @@ const Point = exports.Point = class Point {
this.x, this.x,
this.y, this.y,
this.r, this.r,
this.meta u.deepcopy(this.meta)
) )
} }
} }
@ -186,10 +188,14 @@ exports.parse = (config) => {
x += (config.mirror.distance || 0) / 2 x += (config.mirror.distance || 0) / 2
const mirrored_points = {} const mirrored_points = {}
for (const [name, p] of Object.entries(points)) { for (const [name, p] of Object.entries(points)) {
if (p.meta.col.asym == 'left' || p.meta.row.asym == 'left') continue
const mp = p.clone().mirror(x) const mp = p.clone().mirror(x)
mp.meta.mirrored = true mp.meta.mirrored = true
const mname = `mirror_${name}` delete mp.meta.asym
mirrored_points[mname] = mp mirrored_points[`mirror_${name}`] = mp
if (p.meta.col.asym == 'right' || p.meta.row.asym == 'right') {
p.meta.col.skip = true
}
} }
Object.assign(points, mirrored_points) Object.assign(points, mirrored_points)
} }

14
helpers/utils.js Normal file
View File

@ -0,0 +1,14 @@
const m = require('makerjs')
const fs = require('fs-extra')
exports.deepcopy = (value) => JSON.parse(JSON.stringify(value))
exports.dump_model = (model, file='model', json=false) => {
const assembly = m.model.originate({
model,
units: 'mm'
})
fs.writeFileSync(`${file}.dxf`, m.exporter.toDXF(assembly))
if (json) fs.writeFileSync(`${file}.json`, JSON.stringify(assembly, null, ' '))
}