Page MenuHome

arbitrary_length_array_functions.patch

arbitrary_length_array_functions.patch

Index: source/blender/blenkernel/intern/DerivedMesh.c
===================================================================
--- source/blender/blenkernel/intern/DerivedMesh.c (revision 42109)
+++ source/blender/blenkernel/intern/DerivedMesh.c (working copy)
@@ -2129,9 +2129,9 @@
DM_add_edge_layer(dm, CD_ORIGINDEX, CD_CALLOC, NULL);
DM_add_face_layer(dm, CD_ORIGINDEX, CD_CALLOC, NULL);
- range_vni(DM_get_vert_data_layer(dm, CD_ORIGINDEX), dm->numVertData, 0);
- range_vni(DM_get_edge_data_layer(dm, CD_ORIGINDEX), dm->numEdgeData, 0);
- range_vni(DM_get_face_data_layer(dm, CD_ORIGINDEX), dm->numFaceData, 0);
+ range_vn_i(DM_get_vert_data_layer(dm, CD_ORIGINDEX), dm->numVertData, 0);
+ range_vn_i(DM_get_edge_data_layer(dm, CD_ORIGINDEX), dm->numEdgeData, 0);
+ range_vn_i(DM_get_face_data_layer(dm, CD_ORIGINDEX), dm->numFaceData, 0);
}
}
Index: source/blender/blenlib/BLI_math_vector.h
===================================================================
--- source/blender/blenlib/BLI_math_vector.h (revision 42109)
+++ source/blender/blenlib/BLI_math_vector.h (working copy)
@@ -194,17 +194,20 @@
/***************************** Array Functions *******************************/
/* attempted to follow fixed length vertex functions. names could be improved*/
-void range_vni(int *array, const int size, const int start);
+float dot_vn_vn(const float *array_src_a, const float *array_src_b, const int size);
+float normalize_vn_vn(float *array_tar, const float *array_src, const int size);
+float normalize_vn(float *array_tar, const int size);
+void range_vn_i(int *array_tar, const int size, const int start);
void negate_vn(float *array_tar, const int size);
void negate_vn_vn(float *array_tar, const float *array_src, const int size);
-void mul_vn_fl(float *array, const int size, const float f);
-void mul_vn_vn_fl(float *array_tar, const float *array_src, const int size, const float f);
+void mul_vn_fl(float *array_tar, const int size, const float f);
+void mul_vn_vnfl(float *array_tar, const float *array_src, const int size, const float f);
void add_vn_vn(float *array_tar, const float *array_src, const int size);
void add_vn_vnvn(float *array_tar, const float *array_src_a, const float *array_src_b, const int size);
void sub_vn_vn(float *array_tar, const float *array_src, const int size);
void sub_vn_vnvn(float *array_tar, const float *array_src_a, const float *array_src_b, const int size);
-void fill_vni(int *array_tar, const int size, const int val);
-void fill_vn(float *array_tar, const int size, const float val);
+void fill_vn_i(int *array_tar, const int size, const int val);
+void fill_vn_fl(float *array_tar, const int size, const float val);
#ifdef __cplusplus
}
Index: source/blender/blenlib/intern/math_vector.c
===================================================================
--- source/blender/blenlib/intern/math_vector.c (revision 42109)
+++ source/blender/blenlib/intern/math_vector.c (working copy)
@@ -378,8 +378,37 @@
/***************************** Array Functions *******************************/
-void range_vni(int *array_tar, const int size, const int start)
+float dot_vn_vn(const float *array_src_a, const float *array_src_b, const int size)
{
+ float d= 0.0f;
+ const float *array_pt_a= array_src_a + (size-1);
+ const float *array_pt_b= array_src_b + (size-1);
+ int i= size;
+ while(i--) { d += *(array_pt_a--) * *(array_pt_b--); }
+ return d;
+}
+
+float normalize_vn_vn(float *array_tar, const float *array_src, const int size)
+{
+ float d= dot_vn_vn(array_tar, array_src, size);
+ if (d > 1.0e-35f) {
+ d= sqrtf(d);
+ mul_vn_vnfl(array_tar, array_src, size, 1.0f/d);
+ }
+ else {
+ fill_vn_fl(array_tar, size, 0.0f);
+ d= 0.0f;
+ }
+ return d;
+}
+
+float normalize_vn(float *array_tar, const int size)
+{
+ return normalize_vn_vn(array_tar, array_tar, size);
+}
+
+void range_vn_i(int *array_tar, const int size, const int start)
+{
int *array_pt= array_tar + (size-1);
int j= start + (size-1);
int i= size;
@@ -408,7 +437,7 @@
while(i--) { *(array_pt--) *= f; }
}
-void mul_vn_vn_fl(float *array_tar, const float *array_src, const int size, const float f)
+void mul_vn_vnfl(float *array_tar, const float *array_src, const int size, const float f)
{
float *tar= array_tar + (size-1);
const float *src= array_src + (size-1);
@@ -450,14 +479,14 @@
while(i--) { *(tar--) = *(src_a--) - *(src_b--); }
}
-void fill_vni(int *array_tar, const int size, const int val)
+void fill_vn_i(int *array_tar, const int size, const int val)
{
int *tar= array_tar + (size-1);
int i= size;
while(i--) { *(tar--) = val; }
}
-void fill_vn(float *array_tar, const int size, const float val)
+void fill_vn_fl(float *array_tar, const int size, const float val)
{
float *tar= array_tar + (size-1);
int i= size;
Index: source/blender/editors/render/render_opengl.c
===================================================================
--- source/blender/editors/render/render_opengl.c (revision 42109)
+++ source/blender/editors/render/render_opengl.c (working copy)
@@ -180,7 +180,7 @@
add_vn_vn(accum_buffer, accum_tmp, sizex*sizey*sizeof(float));
}
- mul_vn_vn_fl(rr->rectf, accum_buffer, sizex*sizey*sizeof(float), 1.0/SAMPLES);
+ mul_vn_vnfl(rr->rectf, accum_buffer, sizex*sizey*sizeof(float), 1.0/SAMPLES);
MEM_freeN(accum_buffer);
MEM_freeN(accum_tmp);
Index: source/blender/makesrna/intern/rna_object.c
===================================================================
--- source/blender/makesrna/intern/rna_object.c (revision 42109)
+++ source/blender/makesrna/intern/rna_object.c (working copy)
@@ -1193,7 +1193,7 @@
memcpy(values, bb->vec, sizeof(bb->vec));
}
else {
- fill_vn(values, sizeof(bb->vec)/sizeof(float), 0.0f);
+ fill_vn_fl(values, sizeof(bb->vec)/sizeof(float), 0.0f);
}
}
Index: source/blender/python/mathutils/mathutils_Color.c
===================================================================
--- source/blender/python/mathutils/mathutils_Color.c (revision 42109)
+++ source/blender/python/mathutils/mathutils_Color.c (working copy)
@@ -464,7 +464,7 @@
static PyObject *color_mul_float(ColorObject *color, const float scalar)
{
float tcol[COLOR_SIZE];
- mul_vn_vn_fl(tcol, color->col, COLOR_SIZE, scalar);
+ mul_vn_vnfl(tcol, color->col, COLOR_SIZE, scalar);
return newColorObject(tcol, Py_NEW, Py_TYPE(color));
}
Index: source/blender/python/mathutils/mathutils_Matrix.c
===================================================================
--- source/blender/python/mathutils/mathutils_Matrix.c (revision 42109)
+++ source/blender/python/mathutils/mathutils_Matrix.c (working copy)
@@ -1223,7 +1223,7 @@
);
static PyObject *Matrix_zero(MatrixObject *self)
{
- fill_vn(self->contigPtr, self->row_size * self->col_size, 0.0f);
+ fill_vn_fl(self->contigPtr, self->row_size * self->col_size, 0.0f);
if (BaseMath_WriteCallback(self) == -1)
return NULL;
@@ -1554,7 +1554,7 @@
static PyObject *matrix_mul_float(MatrixObject *mat, const float scalar)
{
float tmat[16];
- mul_vn_vn_fl(tmat, mat->contigPtr, mat->row_size * mat->col_size, scalar);
+ mul_vn_vnfl(tmat, mat->contigPtr, mat->row_size * mat->col_size, scalar);
return newMatrixObject(tmat, mat->row_size, mat->col_size, Py_NEW, Py_TYPE(mat));
}
Index: source/blender/python/mathutils/mathutils_Vector.c
===================================================================
--- source/blender/python/mathutils/mathutils_Vector.c (revision 42109)
+++ source/blender/python/mathutils/mathutils_Vector.c (working copy)
@@ -95,7 +95,7 @@
);
static PyObject *Vector_zero(VectorObject *self)
{
- fill_vn(self->vec, self->size, 0.0f);
+ fill_vn_fl(self->vec, self->size, 0.0f);
if (BaseMath_WriteCallback(self) == -1)
return NULL;
@@ -1122,7 +1122,7 @@
static PyObject *vector_mul_float(VectorObject *vec, const float scalar)
{
float tvec[MAX_DIMENSIONS];
- mul_vn_vn_fl(tvec, vec->vec, vec->size, scalar);
+ mul_vn_vnfl(tvec, vec->vec, vec->size, scalar);
return newVectorObject(tvec, vec->size, Py_NEW, Py_TYPE(vec));
}
@@ -1661,7 +1661,7 @@
return -1;
}
if (param == 0.0) {
- fill_vn(self->vec, self->size, 0.0f);
+ fill_vn_fl(self->vec, self->size, 0.0f);
return 0;
}
@@ -2432,7 +2432,7 @@
memcpy(self->vec, vec, size * sizeof(float));
}
else { /* new empty */
- fill_vn(self->vec, size, 0.0f);
+ fill_vn_fl(self->vec, size, 0.0f);
if (size == 4) { /* do the homogenous thing */
self->vec[3] = 1.0f;
}

File Metadata

Mime Type
text/x-diff
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
a7/14/243d9d62bc1b833b35c8b6422ed4

Event Timeline