help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Oh, no! More Elisp! compute MTB frame size from your height


From: Emanuel Berg
Subject: Oh, no! More Elisp! compute MTB frame size from your height
Date: Mon, 06 May 2019 02:45:23 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux)

Description below good enough for IRC, good
enough for gmane.emacs.help, right? Wrong.

Still good enough for government work, right?

    <incal> just wrote another simple but
            useful program, to compute the
            optimal MTB frame size:
            <https://dataswamp.org/~incal/emacs-init/frame-size.el>
            I should have a 49cm seat tube
            (from the top to the middle of the
            bottom bracket) - actually I'll go
            out right now to see if that's what
            I have :)

    <incal> math should be right tho?
            lineary mapping from one interval
            to another

Comments welcome, as always.

;; This file: http://user.it.uu.se/~embe8573/emacs-init/frame-size.el
;;              https://dataswamp.org/~incal/emacs-init/frame-size.el
;;
;; Updated:   2019-05-06  02:29
;;
;;
;; MTB frame size = length of seat tube
;;
;; measured from the top of the seat tube
;; down to center of bottom bracket
;; 
<https://www.ebicycles.com/bicycle-tools/measure-frame/mountain-bike/hardtail>
;;
;;
;;   rider height           MTB frame size
;;
;;            (cm)                       (cm)
;;
;; 4'10" -    148 -     13" - 14"       33 - 37
;; 5'2"       158
;;
;; 5'2"  -    158 -     15" - 16"       38 - 42
;; 5'6"       168
;;
;; 5'6"  -    168 -     17" - 18"       43 - 47
;; 5'10"      178
;;
;; 5'10" -    178 -     19" - 20"       48 - 52
;; 6'1"       185
;;
;; 6'1"  -    185 -     21" - 22"       53 - 57
;; 6'4"       193
;;
;; 6'4"  -    193 -     23" - 24"       58 - 61
;; 6'6"       198
;;
;;
;; Example how to do the interval math for
;; a particular height
;;
;;     height h = 190cm
;;
;;     h \in [185 193] cm so
;;
;;     MTB frame size m \in [53 57] cm
;;
;;     (190 - 185) / (193 - 185.0) * (57 - 53) + 53 = 55.5cm
;;
;;
;; Table data source:
;;   https://www.evanscycles.com/help/bike-sizing-mountain

(defun in-inclusive (a min max)
  (and (<= min a)
       (<= a max) ))

(defvar *hft*) ; height to frame height table
(setq *hft* '(((148 158) (33 37))
              ((158 168) (38 42))
              ((168 178) (43 47))
              ((178 185) (48 52))
              ((185 193) (53 57))
              ((193 198) (58 61)) ))

(defun compute-mtb-frame-size (h)
  (interactive "nheight (cm): ")
  (let*((intervals (cl-find-if (lambda (e)
                                 (in-inclusive h     (caar e)
                                                 (cl-cadar e) ))
                               *hft*) )
        (h-interval  (car  intervals))
        (m-interval  (cadr intervals))
        (h-min (caar intervals))
        (h-max (cadr h-interval))
        (m-min (car  m-interval))
        (m-max (cadr m-interval))
        (frame (round (+ (* (/ (- h     h-min)
                               (- h-max h-min)
                               1.0)
                            (- m-max m-min) )
                         m-min) )))
    (message "frame size: %dcm" frame) ))
;; (compute-mtb-frame-size 190)
;; (compute-mtb-frame-size 180)

-- 
underground experts united
http://user.it.uu.se/~embe8573




reply via email to

[Prev in Thread] Current Thread [Next in Thread]