<?PHP include("config.php"); ?>
<!DOCTYPE html >
<html lang="en">
<head>
<title>&lt;:: Welcome to Slowtwitch.com ::&gt;: Custom Tri Geometry Calculator</title>
<meta name="KEYWORDS" content="bike, geometry, custom" />
<meta name="DESCRIPTION" content="Are you trying to find custom geometry based off a fitting session? Use our calculator to help."/>
<? include($common_path . "/templates/include_global_head.php"); ?>
<? include($common_path . "/templates/google_analytics.html"); ?>
</head>

<body id="home">
  <? include($common_path . "/ads/ad_wallpaper.html"); ?>

  <div class="container">
    <? include($common_path . "/templates/include_header.php"); ?>
    <div class="main">
      <div class="contentwrapper clearfix">
        <? include("include_breadcrumb.php"); ?>

        <section class="section listings section-has-widgets section-static remove-sidebar">
          <div class="sidebar-b">
            <? include("include_sidebar.php") ?>
          </div>

          <div class="content content-has-widgets">
            <div class="grid">

              <div class="clearfix">
                <h1>F.I.S.T Custom Bike Calculator</h1>
                <hr class="line" />
                  <p>All values are in millimeters!</p>
                  <form name="calcForm" id="calcForm" method="post" action="do_calc.php">
                    <div class="dtable form">
                        <? if ($_GET['use'] == 'serotta') { /** begin Serotta XY **/ ?>
                        <div class="drow">
                            <div class="dcell name">Serotta X</div>
                            <div class="dcell divider"></div>
                            <div class="dcell value">
                                <input type="text" id="serottaX" name="serottaX" class="txt shotext" /> <a href="fit_calculator.php?">Click here to use Stack &amp; Reach</a>
                            </div>
                        </div>
                        <div class="drow">
                            <div class="dcell name">Head Angle</div>
                            <div class="dcell divider"></div>
                            <div class="dcell value">
                                <input type="text" id="head_angle" name="head_angle" class="txt shotext" />
                            </div>
                        </div>
                        <div class="drow">
                            <div class="dcell name">Stem Length</div>
                            <div class="dcell divider"></div>
                            <div class="dcell value">
                                <select id="stem_length" name="stem_length">
                                    <option value="50">50 mm</option>
                                    <option value="60">60 mm</option>
                                    <option value="70">70 mm</option>
                                    <option value="80">80 mm</option>
                                    <option value="90">90 mm</option>
                                    <option value="100">100 mm</option>
                                    <option value="110">110 mm</option>
                                    <option value="120">120 mm</option>
                                    <option value="130">130 mm</option>
                                    <option value="140">140 mm</option>
                                    <option value="150">150 mm</option>
                                </select>
                            </div>
                        </div>
                        <div class="drow">
                            <div class="dcell name">Stem Angle</div>
                            <div class="dcell divider"></div>
                            <div class="dcell value">
                                <input type="text" id="stem_angle" name="stem_angle" class="txt shotext" /><br />
                                Plug in actual stem pitch. Write 0 [the number zero] for an extension <strong>perpendicular to the steerer</strong>; -6 for 6&deg; down from perpendicular, 6 for 6&deg; up; -17&deg; for a "7-shaped" stem; and so forth.
                            </div>
                        </div>
                        <div class="drow">
                            <div class="dcell name">Stem Clamp Height</div>
                            <div class="dcell divider"></div>
                            <div class="dcell value">
                                <input type="text" id="clamp" name="clamp" class="txt shotext" />
                            </div>
                        </div>
                        <div class="drow">
                            <div class="dcell name">Spacer Height</div>
                            <div class="dcell divider"></div>
                            <div class="dcell value">
                                <input type="text" id="spacer" name="spacer" class="txt shotext" />
                            </div>
                        </div>
                        <div class="drow">
                            <div class="dcell name">Headset Topcap</div>
                            <div class="dcell divider"></div>
                            <div class="dcell value">
                                <input type="text" id="headset" name="headset" class="txt shotext" />
                                <input type="hidden" id="coordinates" name="coordinates" value="serotta_xy" />
                                <input type="hidden" name="stack" />
                                <input type="hidden" name="reach" />
                            </div>
                        </div>
                        <? } else { ?>
                        <div class="drow">
                            <div class="dcell name">Stack</div>
                            <div class="dcell divider"></div>
                            <div class="dcell value">
                                <input type="text" id="stack" name="stack" class="txt shotext" /> <a href="fit_calculator.php?use=serotta">Click here to use Serotta XY</a>
                            </div>
                        </div>
                        <div class="drow">
                            <div class="dcell name">Reach</div>
                            <div class="dcell divider"></div>
                            <div class="dcell value">
                                <input type="text" id="reach" name="reach" class="txt shotext" />
                            </div>
                        </div>
                        <? } // endif ?>
                        <div class="drow">
                            <div class="dcell name">Chain Stay</div>
                            <div class="dcell divider"></div>
                            <div class="dcell value">
                                <input type="text" id="chain_stay" name="chain_stay" class="txt shotext" /><br />
                                (Note that some custom tri bike makers have a standard chain
                                stay length, because these builders fair the rear wheel with the trailing
                                edge of the seat tube.  Find your chosen bike maker's chain
                                stay value before you send him calcs generated here.)
                            </div>
                        </div>
                        <div class="drow">
                            <div class="dcell name">Seat Angle</div>
                            <div class="dcell divider"></div>
                            <div class="dcell value">
                                <input type="text" id="seat_angle" name="seat_angle" class="txt shotext" />
                            </div>
                        </div>
                        <? if ($_GET['use'] != 'serotta') { ?>
                        <div class="drow">
                            <div class="dcell name">Head Angle</div>
                            <div class="dcell divider"></div>
                            <div class="dcell value">
                                <input type="text" id="head_angle" name="head_angle" class="txt shotext" />
                            </div>
                        </div>
                        <? } // endif ?>
                        <div class="drow">
                            <div class="dcell name">Fork Offset</div>
                            <div class="dcell divider"></div>
                            <div class="dcell value">
                                <input type="text" id="fork_offset" name="fork_offset" class="txt shotext" />
                            </div>
                        </div>
                        <div class="drow">
                            <div class="dcell name">Fork Length</div>
                            <div class="dcell divider"></div>
                            <div class="dcell value">
                                <input type="text" id="fork_length" name="fork_length" class="txt shotext" />
                            </div>
                        </div>
                        <div class="drow">
                            <div class="dcell name"></div>
                            <div class="dcell divider"></div>
                            <div class="dcell value">
                            </div>
                        </div>
                        <div class="drow">
                            <div class="dcell name">HS Lower Stack</div>
                            <div class="dcell divider"></div>
                            <div class="dcell value">
                                <input type="text" id="hs_lower_stack" name="hs_lower_stack" class="txt shotext" /><br />
                                (1.5mm is a typical value for integrated headsets; you'll want to change this if your custom builder builds with external headsets, which is frequently the case.  The oft-used Chris King headset has a lower stack of 13.7mm.)
                            </div>
                        </div>
                        <div class="drow">
                            <div class="dcell name">BB Drop</div>
                            <div class="dcell divider"></div>
                            <div class="dcell value">
                                <input type="text" id="bb_drop" name="bb_drop" class="txt shotext" />
                            </div>
                        </div>
                        <div class="drow">
                            <div class="dcell name">Rear Wheel</div>
                            <div class="dcell divider"></div>
                            <div class="dcell value">
                                <input type="text" id="rear_wheel" name="rear_wheel" class="txt shotext" />
                            </div>
                        </div>
                        <div class="drow">
                            <div class="dcell name">Wheel Size</div>
                            <div class="dcell divider"></div>
                            <div class="dcell value">
                                <input type="radio" id="wheel_size" name="wheel_size" checked onclick="set700Defaults();" value="700" /> 700C (Note: Changing this will reset certain values) </br>
                                <input type="radio" id="wheel_size" name="wheel_size" onclick="set650Defaults();" value="650" /> 650C
                            </div>
                        </div>
                        <div class="drow">
                            <div class="dcell name">Morphology</div>
                            <div class="dcell divider"></div>
                            <div class="dcell value">
                                <input type="radio" id="morphology" name="morphology" checked onclick="setStandardLeggedDefaultValues();" /> Standard (Note: Changing this will reset certain values)<br />
                                <input type="radio" id="morphology" name="morphology" onclick="setLongLeggedDefaultValues();" /> Long Legged
                            </div>
                        </div>
                        <div class="drow">
                            <div class="dcell name"></div>
                            <div class="dcell divider"></div>
                            <div class="dcell value">
                                <input type="checkbox" name="terms"> Agree to Terms
                            </div>
                        </div>
                        <div class="drow actions">
                            <div class="dcell name"></div>
                            <div class="dcell divider"></div>
                            <div class="dcell value">
                                <input type="button" name="calculateButton" value="Calculate" onclick="checkAgreeToTerms();" class="btn"/>
                                <input type="button" name="allDefaultButton" value="Reset all Defaults" onclick="setAllDefaults();"  class="btn" />
                            </div>
                        </div>
                    </div>
                  </form>

                    <p>The calculator above is designed to help fitters trained in the F.I.S.T. tri
                    bike fit protocol to generate geometries for custom triathlon bikes.  Note
                    that the inputs required to use this calculator include "stack" and "reach."
                    These values are described at length in our <a href="/Bike_Fit/The_F.I.S.T._Method_for_fitting_triathletes_to_their_bikes_16.html ">tri bike fit articles</a> on Slowtwitch.com.
                    </p>
                    <p>
                    The F.I.S.T. fitting protocol is a two-step process:  First, the fitter
                    finds the rider's "fit coordinates," aka his "points in space."  The second
                    part of the protocol focuses on finding the right production bike to match
                    those fit coordinates or, in this case, generating a custom geometry that
                    matches the fit coordinates.  But, know this: It is remarkably easy to
                    calculate a "bad" custom geometry for a rider.  The culprit is most often a
                    badly executed "Part I" of this protocol, that is, the fitter executed a
                    poor fit session.  If this happens, the calculator below will faithfully
                    generate the geometry for a bad bike to perfectly match the bad fit.
                    Forewarned is forearmed.
                    </p>
                    <div class="advert float-right">
                        <? include($common_path . "/ads/ad_300x250_roadblocks.html"); ?>
                    </div>
                    <p>
                    Even if the fit is performed correctly, pitfalls loom.  You must have the
                    tools to accurately find the stack and reach of the bike that fits under the
                    rider.  The fitter is required to account for the stem length, stem pitch,
                    height of the stem clamp, headset upper stack, spacers under the stem if
                    any, and of course the choice of aerobar.  He then must have an accurate way
                    of generating the stack and reach measures, using either a fit bike (best is
                    the bike made by Exit Cycling) that accurately generates these values
                    (taking into consideration <a href="/Bike_Fit/Fudging_for_negative_reach_123.html">negative reach</a> if applicable), or he must use an external tool, such
                    as Serotta's X/Y tool.
                    </p><p>
                    Anyone who uses this calculator can change any of the defaults below.
                    Toggling from 700c to 650c, or from standard to long-legged morphology, will
                    change the defaults, but you can still override our defaults and insert your
                    own values.  There are explanatory notes below, and you are encouraged to
                    heed them.
                    </p><p>
                    <h3>OTHER NOTES</h3>
                    This calculator "refuses" to return geometry for bikes with
                    front/center values less than 560mm on a 700c bike and 525mm on a 650c bike.
                    This, because of shoe overlap.  Some bike makers think these minimum values
                    should be even higher, by 5mm or 10mm.  If the calculator displays this
                    error message, you'll need to add reach; or you'll need to shallow the head
                    angle and add fork offset; or both.
                    </p><p>
                    All bike makers, custom makers included, feature a minimum head tube length
                    for the bikes they can build.  Find this value out, from your chosen custom
                    builder(s), because this calculator doesn't know what those minimum values
                    are for each builder.  Keep in mind that if your custom builder builds with
                    external headsets, you must change the default lower headset stack in the
                    calculator, and you must account for the potentially significant upper
                    stack.
                    </p><p>
                    Morphologies:  The calculator generates a geometry for long-legged,
                    short-torsoed riders by employing two tactical changes, designed to grant
                    the rider a lower center of mass, and a longer base of support for his
                    otherwise high center of mass.  When you select "Long Legged" the calculator
                    drops the bottom bracket 10 extra millimeters below the bike's centerline;
                    and it also shallows the head angle one degree, and adds 6mm of fork offset
                    in order to keep the trail a constant value (our default settings generate a
                    trail of about 61mm, more or less).  Of course, you can override these
                    defaults, and if your rider wishes (let us say) a higher bottom bracket
                    notwithstanding his high center of mass, so be it.  Just change the default.
                    </p><p>
                    Yes, lengthening the front/center of the bike while keeping the cockpit
                    distance and trail constant can be achieved through shallowing the head
                    angle while adding to the fork offset.  The calculator will employ this
                    tactic when you choose the long legged morphology option.  This may result
                    in a fork with an offset greater than 45mm.  Not many fork manufacturers
                    make forks with offsets greater than 45mm, so you'll want to check
                    availability before you build or cause to have built a bike requiring this
                    fork offset.
                    </p><p>
                    <h3>TERMS OF USE</h3>
                    <a name="terms"></a>
                    This calculator consists of a set of trigonometric and geometric equations.
                    It solves math equations.  That's all it does.  There are no warranties
                    expressed or implied that these geometries cause a bike to be safe, or
                    comfortable, or powerful, or aerodynamic, or even be ridden; or indeed can
                    even be built.   Should you build or cause to build a bike based on
                    geometries calculated by this generator, you do so at your own risk.  You
                    agree to hold harmless Slowtwitch.com, its owners, employees and contractors
                    against all claims arising out of your use of this calculator.  You agree to
                    assume all risk and liability associated with using this calculator.  You
                    agree that the final determination of an appropriate geometry rests with you
                    and/or any customer for whom you may be building this bike, or causing it to
                    be built, and with the company building the bike.
                    </p>

              </div><!-- end col-2/3 -->

            </div><!-- end grid -->
          </div><!-- end content -->
        </section>

      </div><!-- end contentwrapper -->
    </div> <!-- end main -->

  <? include($common_path . "/templates/include_footer.php") ?>
  </div> <!-- container  -->
</body>
<? include($common_path . "/templates/include_global_js.php") ?>
</html>

