[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [32970] branches/particles-2010/source/ blender/nodes/intern/SIM_nodes/SIM_random.c: Corrected scaling for gaussian and triangular distributions in the random node .

Lukas Toenne lukas.toenne at googlemail.com
Tue Nov 9 18:27:24 CET 2010


Revision: 32970
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32970
Author:   lukastoenne
Date:     2010-11-09 18:27:24 +0100 (Tue, 09 Nov 2010)

Log Message:
-----------
Corrected scaling for gaussian and triangular distributions in the random node.

Modified Paths:
--------------
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_random.c

Modified: branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_random.c
===================================================================
--- branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_random.c	2010-11-09 17:07:17 UTC (rev 32969)
+++ branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_random.c	2010-11-09 17:27:24 UTC (rev 32970)
@@ -66,7 +66,7 @@
 	BLI_srandom(SIM_INPUT_INT(0, global_id) + BLI_rand());
 	switch (node->base->custom1) {
 	case SIM_RANDOM_UNIFORM:
-		r = BLI_frand();
+		r = 2.0f*BLI_frand() - 1.0f;
 		break;
 	case SIM_RANDOM_GAUSSIAN:
 		/* Box-Muller method */
@@ -76,10 +76,11 @@
 		break;
 	case SIM_RANDOM_TRIANGULAR:
 		u1 = BLI_frand();
-		r = 1.0f - sqrt(1.0f - u1);
+		u2 = BLI_frand();
+		r = (u2 < 0.5f ? 1.0f - sqrt(1.0f - u1) : sqrt(1.0f - u1) - 1.0f);
 		break;
 	}
-	*SIM_OUTPUT_FLOAT(0, global_id) = SIM_INPUT_FLOAT(2, global_id) + (2.0f*r - 1.0f) * SIM_INPUT_FLOAT(3, global_id);
+	*SIM_OUTPUT_FLOAT(0, global_id) = SIM_INPUT_FLOAT(2, global_id) + r * SIM_INPUT_FLOAT(3, global_id);
 }
 
 static void enqueue(SimExecData *execdata, SimNodeStack *node, SimDataContext *self)





More information about the Bf-blender-cvs mailing list