324 lines
20 KiB
PHP
324 lines
20 KiB
PHP
<?PHP include("config.php"); ?>
|
|
<!DOCTYPE html >
|
|
<html lang="en">
|
|
<head>
|
|
<title><:: Welcome to Slowtwitch.com ::>: 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 & 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° down from perpendicular, 6 for 6° up; -17° 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>
|
|
|