Fifth pass at adding key files
This commit is contained in:
157
site/Fit_Calculator/bar_bore_calc.php
Normal file
157
site/Fit_Calculator/bar_bore_calc.php
Normal file
@@ -0,0 +1,157 @@
|
||||
<?PHP include("config.php"); ?>
|
||||
<!DOCTYPE html >
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title><:: Welcome to Slowtwitch.com ::>: Bar to Head Tube Calculator</title>
|
||||
<meta name="KEYWORDS" content="bike, geometry, custom" />
|
||||
<meta name="DESCRIPTION" content="Need to know stack and reach from an X-Y bar-bore measurement? 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. Bar to Head Tube Calculator</h1>
|
||||
<hr class="line" />
|
||||
<p>All values are in millimeters!</p>
|
||||
<form name="calcForm" id="calcForm" method="post" action="bar_bore_calc_X.php">
|
||||
<div class="dtable form">
|
||||
<div class="drow">
|
||||
<div class="dcell name">Bar-Bore Y</div>
|
||||
<div class="dcell divider"></div>
|
||||
<div class="dcell value">
|
||||
<input type="text" id="serottaX" name="barboreY" class="txt shotext" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="drow">
|
||||
<div class="dcell name">Bar-Bore X</div>
|
||||
<div class="dcell divider"></div>
|
||||
<div class="dcell value">
|
||||
<input type="text" id="serottaY" name="barboreX" class="txt shotext" />
|
||||
</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_tube_angle" name="head_tube_angle" value="73" class="txt shotext" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="drow">
|
||||
<div class="dcell name">Stem Length</div>
|
||||
<div class="dcell divider"></div>
|
||||
<div class="dcell value">
|
||||
<input type="text" id="stem_length" name="stem_length" class="txt shotext" />
|
||||
</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" value="40" 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" />
|
||||
</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>
|
||||
<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>
|
||||
<h3>TERMS OF USE</h3>
|
||||
<p>
|
||||
<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>
|
||||
|
||||
|
144
site/Fit_Calculator/bar_bore_calc_X.php
Normal file
144
site/Fit_Calculator/bar_bore_calc_X.php
Normal file
@@ -0,0 +1,144 @@
|
||||
<?PHP
|
||||
include("config.php");
|
||||
foreach ( $_POST as $key ) {
|
||||
|
||||
}
|
||||
|
||||
$xser = (float)$_POST['barboreX'];
|
||||
$yser = (float)$_POST['barboreY'];
|
||||
$stemlength = (float)$_POST['stem_length'];
|
||||
$headangle = (float)$_POST['head_tube_angle'];
|
||||
$stemangle = (float)$_POST['stem_angle'];
|
||||
$clamp = (float)$_POST['clamp'];
|
||||
$spacer = (float)$_POST['spacer'];
|
||||
$headset = (float)$_POST['headset'];
|
||||
|
||||
$reach = 0;
|
||||
$stack = 0;
|
||||
|
||||
// calculate stack and reach
|
||||
$reach = $xser - ($stemlength*cos(deg2rad(90-$headangle+$stemangle))) + (($clamp/2) + $spacer + $headset)*cos(deg2rad($headangle));
|
||||
$stack = $yser - ($stemlength*sin(deg2rad(90-$headangle+$stemangle))) - (($clamp/2) + $spacer + $headset)*sin(deg2rad($headangle));
|
||||
|
||||
//echo($xser." - (".$stemlength."*cos(deg2rad(90-".$headangle."+".$stemangle."))) - ((".$clamp."/2) + ".$spacer." + ".$headset.")*cos(deg2rad(".$headangle."))");
|
||||
//$stack = $yser - ($stemlength*sin(deg2rad(90-$headangle+$stemangle))) - (($clamp/2) + $spacer + $headset)*sin(deg2rad($headangle));
|
||||
|
||||
$reach = round($reach, 0);
|
||||
$stack = round($stack, 0);
|
||||
|
||||
//echo ("STACK: ".$stack);
|
||||
//echo ("REACH: ".$reach);
|
||||
//exit();
|
||||
?>
|
||||
<!DOCTYPE html >
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title><:: Welcome to Slowtwitch.com ::>: Bar to Head Tube Calculator</title>
|
||||
<meta name="KEYWORDS" content="bike, geometry, custom" />
|
||||
<meta name="DESCRIPTION" content="Need to know stack and reach from an X-Y bar-bore measurement? 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. Bar to Head Tube Calculator</h1>
|
||||
<hr class="line" />
|
||||
<div class="clearfix">
|
||||
<div class="col-2-3">
|
||||
<h3 class="section-title">Input</h3>
|
||||
<div class="dtable form">
|
||||
<div class="drow">
|
||||
<div class="dcell name">Bar-Bore Y</div>
|
||||
<div class="dcell divider"></div>
|
||||
<div class="dcell value"><? echo $yser."mm"; ?></div>
|
||||
</div>
|
||||
<div class="drow">
|
||||
<div class="dcell name">Bar-Bore X</div>
|
||||
<div class="dcell divider"></div>
|
||||
<div class="dcell value"><? echo $xser."mm"; ?></div>
|
||||
</div>
|
||||
<div class="drow">
|
||||
<div class="dcell name">Head Tube Angle</div>
|
||||
<div class="dcell divider"></div>
|
||||
<div class="dcell value"><? echo $headangle."°"; ?></div>
|
||||
</div>
|
||||
<div class="drow">
|
||||
<div class="dcell name">Stem Length</div>
|
||||
<div class="dcell divider"></div>
|
||||
<div class="dcell value"><? echo $stemlength."mm"; ?></div>
|
||||
</div>
|
||||
<div class="drow">
|
||||
<div class="dcell name">Stem Angle</div>
|
||||
<div class="dcell divider"></div>
|
||||
<div class="dcell value"><? echo $stemangle."°"; ?></div>
|
||||
</div>
|
||||
<div class="drow">
|
||||
<div class="dcell name">Stem Clamp Height</div>
|
||||
<div class="dcell divider"></div>
|
||||
<div class="dcell value"><? echo $clamp."mm"; ?></div>
|
||||
</div>
|
||||
<div class="drow">
|
||||
<div class="dcell name">Spacer Height</div>
|
||||
<div class="dcell divider"></div>
|
||||
<div class="dcell value"><? echo $spacer."mm"; ?></div>
|
||||
</div>
|
||||
<div class="drow">
|
||||
<div class="dcell name">Headset Topcap</div>
|
||||
<div class="dcell divider"></div>
|
||||
<div class="dcell value"><? echo $headset."mm"; ?></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-1-3">
|
||||
<h3 class="section-title">Output</h3>
|
||||
<p>Stack: <? echo $stack."mm"; ?></p>
|
||||
<p>Reach: <? echo $reach."mm"; ?></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="center">
|
||||
<a href="bar_bore_calc.php" class="btn default">Return to the Bar-Bore to X-Y Calculator</a>
|
||||
</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>
|
||||
</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>
|
||||
|
||||
|
21
site/Fit_Calculator/config.php
Normal file
21
site/Fit_Calculator/config.php
Normal file
@@ -0,0 +1,21 @@
|
||||
<?
|
||||
include("../local/settings.php");
|
||||
|
||||
$sql = "SELECT * FROM ".$prefix."ResourceStates ORDER BY stateid";
|
||||
$result = mysql_query($sql) OR die(mysql_error());
|
||||
$state_list = array();
|
||||
$state_tag_list = array();
|
||||
while ($row = mysql_fetch_array($result)) {
|
||||
$state_list[$row['stateid']] = $row['statelong'];
|
||||
$state_tag_list[] = $row['statetag'];
|
||||
}
|
||||
|
||||
function curPageURL() {
|
||||
$isHTTPS = (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on");
|
||||
$port = (isset($_SERVER["SERVER_PORT"]) && ((!$isHTTPS && $_SERVER["SERVER_PORT"] != "80") || ($isHTTPS && $_SERVER["SERVER_PORT"] != "443")));
|
||||
$port = ($port) ? ':'.$_SERVER["SERVER_PORT"] : '';
|
||||
$url = ($isHTTPS ? 'https://' : 'http://').$_SERVER["SERVER_NAME"].$port.$_SERVER["REQUEST_URI"];
|
||||
return $url;
|
||||
}
|
||||
|
||||
?>
|
214
site/Fit_Calculator/do_calc.php
Normal file
214
site/Fit_Calculator/do_calc.php
Normal file
@@ -0,0 +1,214 @@
|
||||
<?PHP
|
||||
|
||||
if ($_POST['coordinates'] == 'serotta_xy') {
|
||||
|
||||
foreach ( $_POST as $key )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
$xser = (float)$_POST['serottaX'];
|
||||
$yser = (float)$_POST['serottaY'];
|
||||
$stemlength = (float)$_POST['stem_length'];
|
||||
$headangle = (float)$_POST['head_angle'];
|
||||
$stemangle = (float)$_POST['stem_angle'];
|
||||
$clamp = (float)$_POST['clamp'];
|
||||
$spacer = (float)$_POST['spacer'];
|
||||
$headset = (float)$_POST['headset'];
|
||||
|
||||
$reach = 0;
|
||||
$stack = 0;
|
||||
|
||||
// calculate stack and reach
|
||||
$reach = $xser - ($stemlength*cos(deg2rad(90-$headangle+$stemangle))) + (($clamp/2) + $spacer + $headset)*cos(deg2rad($headangle));
|
||||
$stack = $yser - ($stemlength*sin(deg2rad(90-$headangle+$stemangle))) - (($clamp/2) + $spacer + $headset)*sin(deg2rad($headangle));
|
||||
|
||||
//echo($xser." - (".$stemlength."*cos(deg2rad(90-".$headangle."+".$stemangle."))) - ((".$clamp."/2) + ".$spacer." + ".$headset.")*cos(deg2rad(".$headangle."))");
|
||||
//$stack = $yser - ($stemlength*sin(deg2rad(90-$headangle+$stemangle))) - (($clamp/2) + $spacer + $headset)*sin(deg2rad($headangle));
|
||||
|
||||
$reach = round($reach, 0);
|
||||
$stack = round($stack, 0);
|
||||
|
||||
//echo ("STACK: ".$stack);
|
||||
//echo ("REACH: ".$reach);
|
||||
//exit();
|
||||
} else {
|
||||
$stack = (float)$_POST['stack'];
|
||||
$reach = (float)$_POST['reach'];
|
||||
}
|
||||
$seat_angle = (float)deg2rad((float)$_POST['seat_angle']);
|
||||
$head_angle = (float)deg2rad((float)$_POST['head_angle']);
|
||||
$fork_offset = (float)$_POST['fork_offset'];
|
||||
$fork_length = (float)$_POST['fork_length'];
|
||||
$bb_drop = (float)$_POST['bb_drop'];
|
||||
$chain_stay = (float)$_POST['chain_stay'];
|
||||
$rear_wheel = (float)$_POST['rear_wheel'];
|
||||
$hs_lower_stack = (float)$_POST['hs_lower_stack'];
|
||||
$wheel_size = (int)$_POST['wheel_size'];
|
||||
|
||||
$bb_height = round($rear_wheel - $bb_drop, 1);
|
||||
|
||||
$trail = round(($rear_wheel * cos($head_angle) - $fork_offset) / sin($head_angle), 1);
|
||||
|
||||
$tt_eff = round($reach + $stack / tan($seat_angle), 1);
|
||||
|
||||
$ht_length = round(($stack - $bb_drop) / sin($head_angle) + $fork_offset / tan($head_angle) - $fork_length - $hs_lower_stack, 1);
|
||||
|
||||
$front_center = round(pow(pow(($reach + ($stack - $bb_drop) / tan($head_angle) + $fork_offset / sin($head_angle)), 2) + pow($bb_drop, 2), 0.5), 1);
|
||||
|
||||
$wheelbase = round(pow(pow($chain_stay, 2) - pow($bb_drop, 2), 0.5) + pow(pow($front_center, 2) - pow($bb_drop, 2), 0.5), 1);
|
||||
?>
|
||||
<?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"); ?>
|
||||
<script src="js/fit_calculator.js" type="text/javascript" language="JavaScript"></script>
|
||||
</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">
|
||||
<h1>F.I.S.T Custom Bike Calculator</h1>
|
||||
<div class="clearfix">
|
||||
<div class="col-1-2">
|
||||
<h3 class="section-title">Input</h3>
|
||||
<div class="dtable form">
|
||||
<div class="drow">
|
||||
<div class="dcell name">Stack</div>
|
||||
<div class="dcell divider"></div>
|
||||
<div class="dcell value"><? echo $stack; ?></div>
|
||||
</div>
|
||||
<div class="drow">
|
||||
<div class="dcell name">Reach</div>
|
||||
<div class="dcell divider"></div>
|
||||
<div class="dcell value"><? echo $reach; ?></div>
|
||||
</div>
|
||||
<div class="drow">
|
||||
<div class="dcell name">Seat Angle</div>
|
||||
<div class="dcell divider"></div>
|
||||
<div class="dcell value"><? echo rad2deg($seat_angle); ?></div>
|
||||
</div>
|
||||
<div class="drow">
|
||||
<div class="dcell name">Head Tube Angle</div>
|
||||
<div class="dcell divider"></div>
|
||||
<div class="dcell value"><? echo rad2deg($head_angle); ?></div>
|
||||
</div>
|
||||
<div class="drow">
|
||||
<div class="dcell name">Fork Offset</div>
|
||||
<div class="dcell divider"></div>
|
||||
<div class="dcell value"><? echo rad2deg($fork_offset); ?></div>
|
||||
</div>
|
||||
<div class="drow">
|
||||
<div class="dcell name">Fork Length</div>
|
||||
<div class="dcell divider"></div>
|
||||
<div class="dcell value"><? echo rad2deg($fork_length); ?></div>
|
||||
</div>
|
||||
<div class="drow">
|
||||
<div class="dcell name">BB Drop</div>
|
||||
<div class="dcell divider"></div>
|
||||
<div class="dcell value"><? echo rad2deg($bb_drop); ?></div>
|
||||
</div>
|
||||
<div class="drow">
|
||||
<div class="dcell name">Chainstay</div>
|
||||
<div class="dcell divider"></div>
|
||||
<div class="dcell value"><? echo rad2deg($chain_stay); ?></div>
|
||||
</div>
|
||||
<div class="drow">
|
||||
<div class="dcell name">Rear Wheel</div>
|
||||
<div class="dcell divider"></div>
|
||||
<div class="dcell value"><? echo rad2deg($rear_wheel); ?></div>
|
||||
</div>
|
||||
<div class="drow">
|
||||
<div class="dcell name">Headset Lower Stack</div>
|
||||
<div class="dcell divider"></div>
|
||||
<div class="dcell value"><? echo rad2deg($hs_lower_stack); ?></div>
|
||||
</div>
|
||||
<div class="drow">
|
||||
<div class="dcell name">Wheel Size</div>
|
||||
<div class="dcell divider"></div>
|
||||
<div class="dcell value"><? echo rad2deg($wheel_size); ?></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-1-2">
|
||||
<h3 class="section-title">Frame Measurements</h3>
|
||||
<div class="dtable form">
|
||||
<div class="drow">
|
||||
<div class="dcell name">BB Height</div>
|
||||
<div class="dcell divider"></div>
|
||||
<div class="dcell value"><? echo $bb_height; ?></div>
|
||||
</div>
|
||||
<div class="drow">
|
||||
<div class="dcell name">Trail</div>
|
||||
<div class="dcell divider"></div>
|
||||
<div class="dcell value"><? echo $trail; ?></div>
|
||||
</div>
|
||||
<div class="drow">
|
||||
<div class="dcell name">Eff. Top Tube Length</div>
|
||||
<div class="dcell divider"></div>
|
||||
<div class="dcell value"><? echo $tt_eff; ?></div>
|
||||
</div>
|
||||
<div class="drow">
|
||||
<div class="dcell name">Head Tube Length</div>
|
||||
<div class="dcell divider"></div>
|
||||
<div class="dcell value"><? echo $ht_length; ?></div>
|
||||
</div>
|
||||
<div class="drow">
|
||||
<div class="dcell name">Wheelbase</div>
|
||||
<div class="dcell divider"></div>
|
||||
<div class="dcell value"><? echo $wheelbase; ?></div>
|
||||
</div>
|
||||
<div class="drow">
|
||||
<div class="dcell name">Front Center</div>
|
||||
<div class="dcell divider"></div>
|
||||
<div class="dcell value"><? echo $front_center; ?></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?
|
||||
if( ($front_center < 560) && ($wheel_size == 700) ){
|
||||
echo '<p class="error"><strong>WARNING: Your front center is too short!</strong></p>';
|
||||
}
|
||||
|
||||
if( ($front_center < 525) && ($wheel_size == 650) ){
|
||||
echo '<p class="error"><strong>WARNING: Your front center is too short!</strong></p>';
|
||||
}
|
||||
|
||||
?>
|
||||
<div class="center">
|
||||
<a href="fit_calculator.php" class="btn default">Return to the Geometry Calculator</a>
|
||||
</div>
|
||||
|
||||
</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>
|
||||
|
323
site/Fit_Calculator/fit_calculator.php
Normal file
323
site/Fit_Calculator/fit_calculator.php
Normal file
@@ -0,0 +1,323 @@
|
||||
<?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>
|
||||
|
5
site/Fit_Calculator/include_breadcrumb.php
Normal file
5
site/Fit_Calculator/include_breadcrumb.php
Normal file
@@ -0,0 +1,5 @@
|
||||
<div class="breadcrumb">
|
||||
<a href="<? echo $main_site_url ?>">Home</a> >
|
||||
<a href="<? echo $main_site_url . "/Bike_Fit/index.html" ?>">Bike Fit</a> >
|
||||
<span class="lasttitle">F.I.S.T Custom Bike Calculator</span>
|
||||
</div>
|
5
site/Fit_Calculator/include_sidebar.php
Normal file
5
site/Fit_Calculator/include_sidebar.php
Normal file
@@ -0,0 +1,5 @@
|
||||
<? include($common_path . "/templates/include_local_listing.php"); ?>
|
||||
<div class="widget-divider"></div>
|
||||
<div class="advert hide-on-mobile">
|
||||
<? include($common_path . "/ads/ad_300x600.html"); ?>
|
||||
</div>
|
151
site/Fit_Calculator/stem_calc.php
Normal file
151
site/Fit_Calculator/stem_calc.php
Normal file
@@ -0,0 +1,151 @@
|
||||
<?PHP include("config.php"); ?>
|
||||
<!DOCTYPE html >
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title><:: Welcome to Slowtwitch.com ::>: F.I.S.T STEM Calculator</title>
|
||||
<meta name="KEYWORDS" content="bike, geometry, custom" />
|
||||
<meta name="DESCRIPTION" content="Are you trying to calculate the rise and stretch of a stem? Use our calculator to help."/>
|
||||
<? include($common_path . "/templates/include_global_head.php"); ?>
|
||||
<? include($common_path . "/templates/google_analytics.html"); ?>
|
||||
<!-- Begine script for calculator -->
|
||||
<script src="js/fit_calculator.js" type="text/javascript" language="JavaScript"></script>
|
||||
<!-- end script for calculator -->
|
||||
</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 STEM Calculator</h1>
|
||||
<hr class="line" />
|
||||
<p>All values are in millimeters! Except for angles, which are in degrees.</p>
|
||||
|
||||
<form name="calcForm" id="calcForm" method="post" action="stem_calc_X.php">
|
||||
<div class="dtable form">
|
||||
<div class="drow">
|
||||
<div class="dcell name">Head Angle</div>
|
||||
<div class="dcell divider"></div>
|
||||
<div class="dcell value">
|
||||
<input type="text" id="head_tube_angle" name="head_tube_angle" value="73" class="txt shotext" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="drow">
|
||||
<div class="dcell name">Stem Length</div>
|
||||
<div class="dcell divider"></div>
|
||||
<div class="dcell value">
|
||||
<input type="text" id="stem_length" name="stem_length" class="txt shotext" />
|
||||
</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.</td>
|
||||
</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" value="40" 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" />
|
||||
</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 <a href="#terms">Terms</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="drow actions">
|
||||
<div class="dcell name"></div>
|
||||
<div class="dcell divider"></div>
|
||||
<div class="dcell value">
|
||||
<input type="hidden" name="coordinates" value="serotta_xy" />
|
||||
<input type="hidden" name="stack" />
|
||||
<input type="hidden" name="reach" />
|
||||
<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>
|
||||
<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>
|
||||
<h3>TERMS OF USE</h3>
|
||||
<p>
|
||||
<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>
|
||||
|
146
site/Fit_Calculator/stem_calc_X.php
Normal file
146
site/Fit_Calculator/stem_calc_X.php
Normal file
@@ -0,0 +1,146 @@
|
||||
<?PHP
|
||||
|
||||
foreach ( $_POST as $key )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
$stemlength = (float)$_POST['stem_length'];
|
||||
$headangle = (float)$_POST['head_tube_angle'];
|
||||
$stemangle = (float)$_POST['stem_angle'];
|
||||
$clamp = (float)$_POST['clamp'];
|
||||
$spacer = (float)$_POST['spacer'];
|
||||
$headset = (float)$_POST['headset'];
|
||||
|
||||
$reach = 0;
|
||||
$stack = 0;
|
||||
|
||||
// calculate stack and reach
|
||||
$stretch = ($stemlength*cos(deg2rad(90-$headangle+$stemangle))) - (($clamp/2) + $spacer + $headset)*cos(deg2rad($headangle));
|
||||
$rise = ($stemlength*sin(deg2rad(90-$headangle+$stemangle))) + (($clamp/2) + $spacer + $headset)*sin(deg2rad($headangle));
|
||||
|
||||
//echo($xser." - (".$stemlength."*cos(deg2rad(90-".$headangle."+".$stemangle."))) - ((".$clamp."/2) + ".$spacer." + ".$headset.")*cos(deg2rad(".$headangle."))");
|
||||
//$stack = $yser - ($stemlength*sin(deg2rad(90-$headangle+$stemangle))) - (($clamp/2) + $spacer + $headset)*sin(deg2rad($headangle));
|
||||
|
||||
$rise = round($rise, 0);
|
||||
$stretch = round($stretch, 0);
|
||||
|
||||
//echo ("STACK: ".$stack);
|
||||
//echo ("REACH: ".$reach);
|
||||
//exit();
|
||||
|
||||
?>
|
||||
<?PHP include("config.php"); ?>
|
||||
<!DOCTYPE html >
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title><:: Welcome to Slowtwitch.com ::>: Stem Rise & Stretch Calculator</title>
|
||||
<meta name="KEYWORDS" content="bike, geometry, custom" />
|
||||
<meta name="DESCRIPTION" content="Are you trying to calculate the rise and stretch of a stem? Use our calculator to help."/>
|
||||
<? include($common_path . "/templates/include_global_head.php"); ?>
|
||||
<? include($common_path . "/templates/google_analytics.html"); ?>
|
||||
<!-- Begine script for calculator -->
|
||||
<script src="js/fit_calculator.js" type="text/javascript" language="JavaScript"></script>
|
||||
<!-- end script for calculator -->
|
||||
</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 Stem Calculator</h1>
|
||||
<hr class="line" />
|
||||
<div class="clearfix">
|
||||
<div class="col-2-3">
|
||||
<h3>Input</h3>
|
||||
<div class="dtable form">
|
||||
<div class="drow">
|
||||
<div class="dcell name">Head Tube Angle</div>
|
||||
<div class="dcell divider"></div>
|
||||
<div class="dcell value">
|
||||
<? echo $headangle."°"; ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="drow">
|
||||
<div class="dcell name">Stem Length</div>
|
||||
<div class="dcell divider"></div>
|
||||
<div class="dcell value">
|
||||
<? echo $stemlength."mm"; ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="drow">
|
||||
<div class="dcell name">Stem Angle</div>
|
||||
<div class="dcell divider"></div>
|
||||
<div class="dcell value">
|
||||
<? echo $stemangle."°"; ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="drow">
|
||||
<div class="dcell name">Stem Clamp Height</div>
|
||||
<div class="dcell divider"></div>
|
||||
<div class="dcell value">
|
||||
<? echo $clamp."mm"; ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="drow">
|
||||
<div class="dcell name">Spacer Height</div>
|
||||
<div class="dcell divider"></div>
|
||||
<div class="dcell value">
|
||||
<? echo $spacer."mm"; ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="drow">
|
||||
<div class="dcell name">Headset Topcap</div>
|
||||
<div class="dcell divider"></div>
|
||||
<div class="dcell value">
|
||||
<? echo $headset."mm"; ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-1-3">
|
||||
<h3>Output</h3>
|
||||
<p>Rise: <? echo $rise."mm"; ?></p>
|
||||
<p>Stretch: <? echo $stretch."mm"; ?></p>
|
||||
</div>
|
||||
</div>
|
||||
<p class="center"><a href="stem_calc.php" class="btn default">Return to the Stem Calculator</a></p>
|
||||
<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>
|
||||
</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>
|
||||
|
Reference in New Issue
Block a user