Offset added in scaling

This commit is contained in:
Pascal Brisset
2008-11-27 09:34:47 +00:00
parent b74bbc0651
commit d3a7fd89ae
2 changed files with 15 additions and 13 deletions
+5 -5
View File
@@ -342,10 +342,10 @@ let add_ac_submenu = fun ?(factor=object method text="1" end) plot menubar (curv
(* Build the field menus *)
List.iter
(fun (f, values) ->
let name = sprintf "%s:%s:%s" menu_name msg_name f in
let callback = fun _ ->
let factor = try float_of_string factor#text with _ -> 1. in
let values = Array.map (fun (t,v) -> (t, v*.factor)) values in
let name = sprintf "%s:%s:%s:%s" menu_name msg_name f factor#text in
let (a, b) = Ocaml_tools.affine_transform factor#text in
let values = Array.map (fun (t,v) -> (t, v*.a+.b)) values in
let curve = plot#add_curve name values in
let eb = GBin.event_box ~width:10 ~height:10 () in
eb#coerce#misc#modify_bg [`NORMAL, `NAME curve.color];
@@ -578,8 +578,8 @@ let rec plot_window = fun init ->
tooltips#set_tip cst#coerce ~text:"Enter value for a constant curve";
(* Factor *)
let factor_label, factor = labelled_entry ~width_chars:5 "Scale next by" "1." h in
tooltips#set_tip factor#coerce ~text:"Scale next curve (e.g. 0.0174 to convert deg in rad, 57.3 to convert rad in deg)";
let factor_label, factor = labelled_entry ~width_chars:5 "Scale next by" "1+0" h in
tooltips#set_tip factor#coerce ~text:"Scale next curve (e.g. 0.0174 to convert deg in rad, 57.3 to convert rad in deg, 1.8+32 to convert Celsius into Fahrenheit)";
List.iter
(fun (ac, menu_name, msgs) ->
+10 -8
View File
@@ -42,8 +42,8 @@ let parse_dnd =
let sep = Str.regexp ":" in
fun s ->
match Str.split sep s with
[s; c; m; f] -> (s, c, m, f, 1.)
| [s; c; m; f; factor] -> (s, c, m, f, float_of_string factor)
[s; c; m; f] -> (s, c, m, f, (1.,0.))
| [s; c; m; f; factor] -> (s, c, m, f, Ocaml_tools.affine_transform factor)
| _ -> failwith (Printf.sprintf "parse_dnd: %s" s)
@@ -419,12 +419,14 @@ let rec plot_window = fun window ->
stdev_value#set_text (sprintf "%.6f" curve.stdev#value) in
ignore (curve.stdev#connect#value_changed update_stdev_value) in
let add_curve = fun ?(factor=1.) name ->
let (sender, class_name, msg_name, field_name, factor') = parse_dnd name in
let factor = factor *. factor' in
let name = Printf.sprintf "%s:%f" name factor in
let add_curve = fun ?(factor=(1.,0.)) name ->
let (a, b) = factor in
let (sender, class_name, msg_name, field_name, (a',b')) = parse_dnd name in
let a = a *. a' and b = a*.b' +. b in
let offset = if a <> 0. then sprintf "%.2f" b else "" in
let name = Printf.sprintf "%s:%f%s" name a offset in
let cb = fun _sender values ->
let v = float_of_string (Pprz.string_assoc field_name values) *. factor in
let v = float_of_string (Pprz.string_assoc field_name values) *. a +. b in
plot#add_value name v in
let module P = Pprz.Messages (struct let name = class_name end) in
@@ -439,7 +441,7 @@ let rec plot_window = fun window ->
(* Drag and drop handler *)
let data_received = fun context ~x ~y data ~info ~time ->
let factor = float_of_string factor#text in
let factor = Ocaml_tools.affine_transform factor#text in
try
let name = data#data in
add_curve ~factor name