mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-05-25 06:15:43 +08:00
Offset added in scaling
This commit is contained in:
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user