Gamestudio Links
Zorro Links
Newest Posts
AlpacaZorroPlugin v1.3.0 Released
by kzhao. 05/22/24 13:41
Free Live Data for Zorro with Paper Trading?
by AbrahamR. 05/18/24 13:28
Change chart colours
by 7th_zorro. 05/11/24 09:25
Data from CSV not parsed correctly
by dr_panther. 05/06/24 18:50
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
0 registered members (), 811 guests, and 5 spiders.
Key: Admin, Global Mod, Mod
Newest Members
lorikob361, LucasJoshua, Baklazhan, Hanky27, firatv
19054 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
variable 'spiegeln' #259822
04/07/09 21:42
04/07/09 21:42
Joined: Jan 2007
Posts: 1,619
Germany
Scorpion Offline OP
Serious User
Scorpion  Offline OP
Serious User

Joined: Jan 2007
Posts: 1,619
Germany
hallo,
ich suche nach einer kleinen formel, mit der ich eine variable in einen bestimmten zahlenraum bekommen kann. die enginefunktion cycle hilft mir nicht weiter, weil sobald die variable an einer grenze angekommen ist, sozusagen 'zur anderen seite' springt.

Ich brauche es aber so, dass wenn ich die variable hochzähle, keine sprünge, sondern ein linearer übergang vorhanden ist.

Ein kleines Beispiel wenn der zahlen raum 0 bis 1 lautet:

Code:
0.7 => 0.7
1   => 1
1.3 => 0.7
1.6 => 0.4
1.9 => 0.1
2.1 => 0.1
2.4 => 0.4
2.7 => 0.7
3   => 1
3.3 => 0.7


Ich hoffe das ist soweit klar und ihr könnt mir weiterhelfen^^
Scorpion

Last edited by Scorpion; 04/08/09 14:32.
Re: variable 'spiegeln' [Re: Scorpion] #259839
04/07/09 23:21
04/07/09 23:21
Joined: Dec 2008
Posts: 271
Saturnus Offline
Member
Saturnus  Offline
Member

Joined: Dec 2008
Posts: 271
Hallo!

Das gute alte Modulo vielleicht? (wenn ich dich nicht falsch verstanden habe)

2.1 % 1 => 0.1
1.3 % 1 => 0.3
3.0 % 1 => 0.0

Re: variable 'spiegeln' [Re: Saturnus] #259840
04/07/09 23:33
04/07/09 23:33
Joined: Jul 2008
Posts: 170
Germany, near Mainz
Nicotin Offline
Member
Nicotin  Offline
Member

Joined: Jul 2008
Posts: 170
Germany, near Mainz
Naja, für die Zahlenräume 0 bis 1 hätte ich denke ich was. Es funktioniert aber eben nur damit und ist keine engine Funktion.
Denn wenn 0 bis 1 gebraucht werden würde müsste man es mit if machen

Code:
var a = 0 ;//variable die hochgezählt wird
var b = 1;//variable die das ergebnis bekommt
while(1)
{
 a += 0.6;
 if( fraction(a) < 5 ){b = fraction(a)}//Falls Nachkommastelle unter 5 ist bekommt b einfach den wert
 if( fraction(a) >= 5 ){b = 1 - fraction(a)}//andernfalls wird 1 von der nachkommastelle abgezogen
}



Es würde das Ergebnis deines Beispieles bringen (wenn ich grad keinen Knick in der Logik habe). Aber passt eben nur für 0 bis 1

Sorry weiß grade nit mehr.

Last edited by Nicotin; 04/07/09 23:34.


Re: variable 'spiegeln' [Re: Nicotin] #260010
04/08/09 14:38
04/08/09 14:38
Joined: Jan 2007
Posts: 1,619
Germany
Scorpion Offline OP
Serious User
Scorpion  Offline OP
Serious User

Joined: Jan 2007
Posts: 1,619
Germany
es tut mir leid, bei dem beispiel was ich gegeben habe, muss bei 1.6 natürlich 0.4 herauskommen.

Die funktion funktioniert zur hälfe wie das clampen, aber bei jedem 2ten 'überschreiten' muss gespiegelt werden

Als funktion dargestellt soll folgendes erreicht werden:

Code:
 |
1|    /\        /\
 |   /  \      /  \
 |  /    \    /    \    /
 | /      \  /      \  /
 |/________\/________\/__
0      1    2    3    4


Re: variable 'spiegeln' [Re: Scorpion] #260051
04/08/09 17:54
04/08/09 17:54
Joined: Jul 2008
Posts: 170
Germany, near Mainz
Nicotin Offline
Member
Nicotin  Offline
Member

Joined: Jul 2008
Posts: 170
Germany, near Mainz
Ich bin mir aber relativ sicher das mein code genau das tut^^.

EDIT: Neuer Code: Ok, hab den Code jetzt geändert und getestet. Maximum und minimum sind außwählbar und alles sollte funzen^^
Code:
function clamp_new(var variable, var minimum, var maximum)
{
 var temp_max;
 var temp;
 temp_max = maximum - minimum;//erechne das maximum vom Nullpunkt aus
 if (variable < minimum){variable = minimum;}
 if( fraction(variable/temp_max) < 5 ){temp = fraction(variable/temp_max);}//Falls Nachkommastelle unter 5 ist bekommt b einfach den wert
 if( fraction(variable/temp_max) >= 5 ){temp = 1 - fraction(variable/temp_max);}//andernfalls wird 1 von der nachkommastelle abgezogen
 temp *= temp_max;//Rechne die Variable wieder hoch
 
 variable = temp;
 return(variable);
}


Last edited by Nicotin; 04/08/09 18:24.


Re: variable 'spiegeln' [Re: Nicotin] #260062
04/08/09 18:23
04/08/09 18:23
Joined: Jan 2007
Posts: 1,619
Germany
Scorpion Offline OP
Serious User
Scorpion  Offline OP
Serious User

Joined: Jan 2007
Posts: 1,619
Germany
nehmen wir 1.3. herauskommen soll 0.7

dezimalteil von 1.3 ist 0.3 also kleiner als 0.5 (ich vermute das meinst du anstelle von 5). Der Rückgabewert wäre also der Dezimalteil 0.3 und das ist nicht richtig.

Re: variable 'spiegeln' [Re: Scorpion] #260063
04/08/09 18:28
04/08/09 18:28
Joined: Jul 2008
Posts: 170
Germany, near Mainz
Nicotin Offline
Member
Nicotin  Offline
Member

Joined: Jul 2008
Posts: 170
Germany, near Mainz
Achsoooo, jetzt versteh ich erst 100% xD. Nochmal ans Zeichen brett.



Re: variable 'spiegeln' [Re: Nicotin] #260066
04/08/09 18:50
04/08/09 18:50
Joined: Jul 2008
Posts: 170
Germany, near Mainz
Nicotin Offline
Member
Nicotin  Offline
Member

Joined: Jul 2008
Posts: 170
Germany, near Mainz
Ok, der Code is nun getestet und sollte funzen. Versuch es mal bitte^^
Code:
function clamp_new(var variable, var minimum, var maximum)
{
 var temp_max;
 var temp;
 var temp_var;
 
 temp_max = maximum - minimum;//erechne das maximum vom Nullpunkt aus
 if(variable <= minimum || variable <= maximum){return(variable);}
 if (variable < minimum){variable = minimum;}
 temp_var = (variable-minimum) / temp_max;
 
 if (integer(temp_var) < 1){ variable = temp_var;}
 
 if (fraction(integer(temp_var)/2) == 0.5)
 {
  if( fraction(temp_var) > 5 ){temp = fraction(temp_var);}//Falls Nachkommastelle unter 5 ist bekommt b einfach den wert
  if( fraction(temp_var) <= 5 ){temp = 1 - fraction(temp_var);}//andernfalls wird 1 von der nachkommastelle abgezogen
 }
 if (fraction(integer(temp_var)/2) == 0)
 {
  if( fraction(temp_var) < 5 ){temp = fraction(temp_var);}//Falls Nachkommastelle unter 5 ist bekommt b einfach den wert
  if( fraction(temp_var) >= 5 ){temp = 1 - fraction(temp_var);}//andernfalls wird 1 von der nachkommastelle abgezogen
 }
	
	
 
 temp *= temp_max;//Rechne die Variable wieder hoch
 temp += minimum;
 variable = temp;
 return(variable);
}




Re: variable 'spiegeln' [Re: Nicotin] #260069
04/08/09 19:21
04/08/09 19:21
Joined: Jan 2007
Posts: 1,619
Germany
Scorpion Offline OP
Serious User
Scorpion  Offline OP
Serious User

Joined: Jan 2007
Posts: 1,619
Germany
erstmal vielen dank, das ist so schon gut zu gebrauchen. ich habe noch ein bischen dran rumgeschraubt und denke so sollte es im raum von 0..1 klappen

Code:
float mirror(float x){
    x=(var)x%1;
    float tmp = integer(x)*0.5;
    if(tmp==integer(tmp))
        x=1-x;
    return x;
}


Last edited by Scorpion; 04/08/09 19:21.
Re: variable 'spiegeln' [Re: Scorpion] #260073
04/08/09 19:32
04/08/09 19:32
Joined: Jul 2008
Posts: 170
Germany, near Mainz
Nicotin Offline
Member
Nicotin  Offline
Member

Joined: Jul 2008
Posts: 170
Germany, near Mainz
naja, als ich deinen code sah dacht ich nur "warum einfach wenns auch schwer geht" xD. Naja, dann bin ich froh wenn ich wenigstens den anstoß geben konnt




Moderated by  HeelX, Lukas, rayp, Rei_Ayanami, Superku, Tobias, TWO, VeT 

Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1