[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [23056] branches/blender2.5/blender/source /blender/python/generic/vector.c: manual merge trunk -r 23037

Dalai Felinto dfelinto at gmail.com
Tue Sep 8 05:25:01 CEST 2009


Revision: 23056
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23056
Author:   dfelinto
Date:     2009-09-08 05:25:00 +0200 (Tue, 08 Sep 2009)

Log Message:
-----------
manual merge trunk -r 23037
strangely vector.c was skipped in last merge from trunk.

-----------------------------------
Mathutils fix: Vector.reflect
* correct function for reflection and moving it to arithb.c

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/python/generic/vector.c

Modified: branches/blender2.5/blender/source/blender/python/generic/vector.c
===================================================================
--- branches/blender2.5/blender/source/blender/python/generic/vector.c	2009-09-08 02:09:14 UTC (rev 23055)
+++ branches/blender2.5/blender/source/blender/python/generic/vector.c	2009-09-08 03:25:00 UTC (rev 23056)
@@ -354,19 +354,13 @@
 
 /*----------------------------Vector.reflect(mirror) ----------------------
   return a reflected vector on the mirror normal
-  ((2 * DotVecs(vec, mirror)) * mirror) - vec
-  using arithb.c would be nice here */
+   vec - ((2 * DotVecs(vec, mirror)) * mirror)
+*/
 static PyObject *Vector_Reflect( VectorObject * self, VectorObject * value )
 {
-	float mirror[3];
-	float vec[3];
-	float reflect[4] = {0.0f, 0.0f, 0.0f, 0.0f};
-	float dot2;
+	float mirror[3], vec[3];
+	float reflect[3] = {0.0f, 0.0f, 0.0f};
 	
-	/* for normalizing */
-	int i;
-	float norm = 0.0f;
-	
 	if (!VectorObject_Check(value)) {
 		PyErr_SetString( PyExc_TypeError, "vec.reflect(value): expected a vector argument" );
 		return NULL;
@@ -380,27 +374,13 @@
 	if (value->size > 2)	mirror[2] = value->vec[2];
 	else					mirror[2] = 0.0;
 	
-	/* normalize, whos idea was it not to use arithb.c? :-/ */
-	for(i = 0; i < 3; i++) {
-		norm += mirror[i] * mirror[i];
-	}
-	norm = (float) sqrt(norm);
-	for(i = 0; i < 3; i++) {
-		mirror[i] /= norm;
-	}
-	/* done */
-	
 	vec[0] = self->vec[0];
 	vec[1] = self->vec[1];
 	if (self->size > 2)		vec[2] = self->vec[2];
 	else					vec[2] = 0.0;
 	
-	dot2 = 2 * vec[0]*mirror[0]+vec[1]*mirror[1]+vec[2]*mirror[2];
+	VecReflect(reflect, vec, mirror);
 	
-	reflect[0] = (dot2 * mirror[0]) - vec[0];
-	reflect[1] = (dot2 * mirror[1]) - vec[1];
-	reflect[2] = (dot2 * mirror[2]) - vec[2];
-	
 	return newVectorObject(reflect, self->size, Py_NEW, NULL);
 }
 





More information about the Bf-blender-cvs mailing list