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); } _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs