Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Float wert an einen anderen "angleichen" über eine Toleranz (https://www.delphipraxis.net/75706-float-wert-einen-anderen-angleichen-ueber-eine-toleranz.html)

static_cast 23. Aug 2006 20:15


Float wert an einen anderen "angleichen" über eine
 
Hi,

ich bin gerade dabei, mehr oder weniger, eine Funktion zu schreiben dir mir einen Wert an einen anderen angleicht, gibt es vllt. schon so etwas in der art:

Delphi-Quellcode:
function Adapt(Value,Target,Tolerance:Extended):Extended;
ich möchte damit schwankende Werte weicher fallen oder ansteigen lassen, also z.B. nicht von 20 runter auf 5 sonder erst auf 15 oder der gleichen.

Habt ihr eine Idee oder einen Denkanstoß dazu? Ich da gerade total das Logik Problem mit :gruebel: :drunken:

Gruß
Daniel

mkinzler 23. Aug 2006 20:19

Re: Float wert an einen anderen "angleichen" über
 
Könnte man mit DIV erreichen

Tubos 23. Aug 2006 20:26

Re: Float wert an einen anderen "angleichen" über
 
Meinst du vielleicht eine Interpolation?

static_cast 23. Aug 2006 20:33

Re: Float wert an einen anderen "angleichen" über
 
Zitat:

Zitat von mkinzler
Könnte man mit DIV erreichen

hehe, witzbold :wink: Ne aber so weit war ich schon...

@Tubos
Interpolation ist ja mehr für Grafiken, aber kann man sicher etwas für meine Zwecke von anwenden, aber gute Idee muss ich mal suchen.


// Edit:
ich glaub ich hab es jetzt soweit hingewurstet das es funktioniert...

Delphi-Quellcode:
function Adapt(Value,Target,Tolerance:Extended):Extended;
var
  MinTolerance,MaxTolerance:Extended;
begin
  Result:=Value;

  MinTolerance:=Target - ((Target / 100) * (Tolerance + 1));
  MaxTolerance:=Target + ((Target / 100) * (Tolerance + 1));

  if NOT ((Value >= MinTolerance) AND (Value <= MaxTolerance)) then
  begin
    Result:=(Target + Value) / 2;
  end;
end;
vllt. hat ja trozdem etwas besseres? ;)

//Noch ein Edit:
Ich glaub ich bin zu blöd dafür irgendwie geht das nicht so wie ich mir das vorstelle, oder ich sollte einfach schlafen gehen und Morgen weitermachen...

Oxmyx 23. Aug 2006 21:23

Re: Float wert an einen anderen "angleichen" über
 
Zitat:

Zitat von static_cast
@Tubos
Interpolation ist ja mehr für Grafiken, aber kann man sicher etwas für meine Zwecke von anwenden, aber gute Idee muss ich mal suchen.

Interpolation ist einfach die Ermittlung von Zwischenwerten. Das hat mit Grafik nichts zu tun. Um einen linearen Zwischenwert zweier Zahlen zu berechnen, kannst du doch die einfachste (lineare) Interpolationsformel nehmen:
Zwischenwert = ZahlA + (ZahlB - ZahlA) * Faktor , wobei 0 < Faktor < 1


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz