Je suis en train d'essayer de convertir ce petit bout de code en PureBasic:
Code : Tout sélectionner
* method noise3D
* description Creates noise using three passed arguments, prime numbers, and bitwise XOR operations.
* param x (Number) -- a real number.
* param y (Number) -- a real number.
* param z (Number) -- a real number.
* return (Number) -- returns the resulting noise value.
**/
static function noise3D(x:Number,y:Number,z:Number):Number
{
var n:Number;
n = Math.floor(x+y*57+z*131);
n = (n<<13)^n;
return (1.000-((n*(n*n*15731+789221)+1376312589) & 0x7FFFFFFF)*0.000000000931322574615478515625);
}
Code : Tout sélectionner
Procedure.f noise3d(x.f,y.f,z.f)
Protected n.f
n=Int(x+y*57+z*131)
n=Pow(n<<13,n)
ProcedureReturn (1.000-((n*(n*n*15731+789221)+1376312589) & $7FFFFFFF)*0.000000000931322574615478515625)
EndProcedure
- les opérateurs binaires de PB ne fonctionnent pas avec des floats
- si je ne mets pas de floats, les valeurs dépassent la capacité des entiers (notamment Pow(n<<13,n) qui est très grand)
Quelqu'un peut-il m'aider ? Merci d'avance!
PS: pour info, il s'agit d'un générateur de nombres pseudo-aléatoires; pour les trois valeurs en entrée, il génère un résultat entre -1 et 1 qui ressemble à du hasard, mais qui est toujours le même pour ces trois valeurs