Ho questo codice per la generazione di rumore 1D in obj-c, che sta funzionando benissimo:Perlin generatore di rumore a Swift
- (float)makeNoise1D:(int)x {
x = (x >> 13)^x;
x = (x * (x * x * (int)_seed + 19990303) + 1376312589) & RAND_MAX;
return (1.0 - ((x * (x * x * 15731 + 789221) + 1376312589) & RAND_MAX)/1073741824.0);
}
ora sto cercando di riprodurlo in Swift, ma sempre esito negativo e spettacoli EXEC_BAD_INSTRUCTION al ritorno. Ecco come sembra ora, ho dovuto sputare l'espressione finale, ma sono abbastanza sicuro che non è questo il problema.
func makeNoise1D(var x : Int) -> Float{
x = (x >> 13)^x;
x = (x * (x * x * seed! + 19990303) + 1376312589) & 0x7fffffff
var inner = (x * (x * x * 15731 + 789221) + 1376312589) & 0x7fffffff
return (1.0 - (Float(inner))/1073741824.0)
}
Ho già provato molti cast diversi e suddivido in sotto espressioni, ma ancora non funziona. L'unica cosa che ho capito è che la prima e l'ultima linea funzionano. (La maggior parte dei miei casi di test x era impostata su 20 e seed su 10, solo per renderla semplice)
Grazie per l'aiuto!
Avete pensato su come modificare questo metodo per accettare un Float, invece di un Int, come parametro? – Kat