From 89ca55a3da9685cd180d960e91474ecd59f3a1bc Mon Sep 17 00:00:00 2001 From: cTn Date: Wed, 25 Sep 2013 20:57:21 +0200 Subject: [PATCH] receiver tab with interactive curves special thanks to englishman for the math magic involved --- css/style.css | 34 +++++++++++++++++++++------------ js/main.js | 1 - tabs/receiver.html | 20 ++++++++++---------- tabs/receiver.js | 47 ++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 79 insertions(+), 23 deletions(-) diff --git a/css/style.css b/css/style.css index c62d7b18..4d795932 100644 --- a/css/style.css +++ b/css/style.css @@ -599,18 +599,6 @@ a:hover { border: 1px solid silver; text-align: right; } - .tab-receiver .info { - display: block; - float: right; - - width: 220px; - - margin-bottom: 20px; - - padding: 5px; - - border: 1px dotted silver; - } .tab-receiver .update { display: block; float: right; @@ -644,6 +632,28 @@ a:hover { width: 880px; height: 250px; } + .tab-receiver .throttle_curve { + float: right; + + margin-bottom: 20px; + margin-right: 10px; + + width: 220px; + height: 58px; + + border: 1px solid silver; + } + .tab-receiver .pitch_roll_curve { + float: right; + + margin-right: 10px; + + width: 220px; + height: 58px; + + border: 1px solid silver; + } + .tab-auxiliary_configuration { } diff --git a/js/main.js b/js/main.js index 41395a8c..6701d232 100644 --- a/js/main.js +++ b/js/main.js @@ -80,5 +80,4 @@ $(document).ready(function() { }); // temporary - //$('#content').load("./tabs/sensors.html", tab_initialize_sensors); }); \ No newline at end of file diff --git a/tabs/receiver.html b/tabs/receiver.html index 69dfbd82..dac8cb61 100644 --- a/tabs/receiver.html +++ b/tabs/receiver.html @@ -48,8 +48,8 @@ Throttle EXPO - - + + @@ -58,18 +58,18 @@ - - + +
Pitch & Roll Expo
Save -

- some info text goes here -

-

- some info text goes here -

+
+ +
+
+ +
diff --git a/tabs/receiver.js b/tabs/receiver.js index 2c03a205..06c6d80a 100644 --- a/tabs/receiver.js +++ b/tabs/receiver.js @@ -56,6 +56,53 @@ function tab_initialize_receiver() { $('a.update').addClass('active'); }); + // curves + $('.tunings .throttle input').change(function() { + var mid = parseFloat($('.tunings .throttle input[name="mid"]').val()); + var expo = parseFloat($('.tunings .throttle input[name="expo"]').val()); + + var throttle_curve = document.getElementById("throttle_curve_c"); + var context = throttle_curve.getContext("2d"); + context.clearRect(0, 0, 220, 58); + + // math magic by englishman + var midx = 220 * mid; + var midxl = midx * .5; + var midxr = (((220 - midx) * .5) + midx); + var midy = 58 - (midx * (58 / 220)); + var midyl = 58 - ((58 - midy) * .5 *(expo + 1)); + var midyr = (midy / 2) * (expo + 1); + + context.beginPath(); + context.moveTo(0, 58); + context.quadraticCurveTo(midxl, midyl, midx, midy); + context.moveTo(midx, midy); + context.quadraticCurveTo(midxr, midyr, 220, 0); + + context.lineWidth = 2; + context.stroke(); + }); + $('.tunings .throttle input').trigger('change'); // initial software trigger + + $('.tunings .rate input').change(function() { + var rate = parseFloat($('.tunings .rate input[name="rate"]').val()); + var expo = parseFloat($('.tunings .rate input[name="expo"]').val()); + + var pitch_roll_curve = document.getElementById("pitch_roll_curve_c"); + var context = pitch_roll_curve.getContext("2d"); + context.clearRect(0, 0, 220, 58); + + // math magic by englishman + var ratey = 58 * rate; + + context.beginPath(); + context.moveTo(0, 58); + context.quadraticCurveTo(110, 58 - ((ratey / 2) * (1 - expo)), 220, 58 - ratey); + context.lineWidth = 2; + context.stroke(); + }); + $('.tunings .rate input').trigger('change'); // initial software trigger + $('a.update').click(function() { if ($(this).hasClass('active')) { // catch RC_tuning changes