Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2010-12-12 04:36:10 +0300
committerCampbell Barton <ideasman42@gmail.com>2010-12-12 04:36:10 +0300
commit4f343642b14f67b595720542deac89eaf18852fb (patch)
treee055b9b8426edf00438f540ff1a2d2e4928b0987 /source/blender/blenlib
parent1ad15c37aa60ec223f072cdca2209e1017c3d8ef (diff)
isect_seg_seg_v2_point was modifying the value of line vectors passed.
this could be confusing later on, now swap the pointers rather then changing their values.
Diffstat (limited to 'source/blender/blenlib')
-rw-r--r--source/blender/blenlib/BLI_math_geom.h6
-rw-r--r--source/blender/blenlib/intern/math_geom.c12
2 files changed, 8 insertions, 10 deletions
diff --git a/source/blender/blenlib/BLI_math_geom.h b/source/blender/blenlib/BLI_math_geom.h
index 7dae49f067d..3c2c6312f4d 100644
--- a/source/blender/blenlib/BLI_math_geom.h
+++ b/source/blender/blenlib/BLI_math_geom.h
@@ -71,9 +71,9 @@ void closest_to_line_segment_v3(float r[3], float p[3], float l1[3], float l2[3]
#define ISECT_LINE_LINE_EXACT 1
#define ISECT_LINE_LINE_CROSS 2
-int isect_line_line_v2(float a1[2], float a2[2], float b1[2], float b2[2]);
-int isect_line_line_v2_short(short a1[2], short a2[2], short b1[2], short b2[2]);
-int isect_seg_seg_v2_point(float v1[2], float v2[2], float v3[2], float v4[2], float vi[2]);
+int isect_line_line_v2(const float a1[2], const float a2[2], const float b1[2], const float b2[2]);
+int isect_line_line_v2_short(const short a1[2], const short a2[2], const short b1[2], const short b2[2]);
+int isect_seg_seg_v2_point(const float *v1, const float *v2, const float *v3, const float *v4, float vi[2]);
/* Returns the number of point of interests
* 0 - lines are colinear
diff --git a/source/blender/blenlib/intern/math_geom.c b/source/blender/blenlib/intern/math_geom.c
index ac62eb71e97..673d8113f32 100644
--- a/source/blender/blenlib/intern/math_geom.c
+++ b/source/blender/blenlib/intern/math_geom.c
@@ -233,7 +233,7 @@ float dist_to_line_segment_v3(float *v1, float *v2, float *v3)
/******************************* Intersection ********************************/
/* intersect Line-Line, shorts */
-int isect_line_line_v2_short(short *v1, short *v2, short *v3, short *v4)
+int isect_line_line_v2_short(const short *v1, const short *v2, const short *v3, const short *v4)
{
/* return:
-1: colliniar
@@ -258,7 +258,7 @@ int isect_line_line_v2_short(short *v1, short *v2, short *v3, short *v4)
}
/* intersect Line-Line, floats */
-int isect_line_line_v2(float *v1, float *v2, float *v3, float *v4)
+int isect_line_line_v2(const float *v1, const float *v2, const float *v3, const float *v4)
{
/* return:
-1: colliniar
@@ -285,7 +285,7 @@ int isect_line_line_v2(float *v1, float *v2, float *v3, float *v4)
/* get intersection point of two 2D segments and return intersection type:
-1: colliniar
1: intersection */
-int isect_seg_seg_v2_point(float v1[2], float v2[2], float v3[2], float v4[2], float vi[2])
+int isect_seg_seg_v2_point(const float *v1, const float *v2, const float *v3, const float *v4, float vi[2])
{
float a1, a2, b1, b2, c1, c2, d;
float u, v;
@@ -309,10 +309,8 @@ int isect_seg_seg_v2_point(float v1[2], float v2[2], float v3[2], float v4[2], f
if(len_v2v2(v1, v2)==0.0f) {
if(len_v2v2(v3, v4)>eps) {
/* use non-point segment as basis */
- SWAP(float, v1[0], v3[0]);
- SWAP(float, v1[1], v3[1]);
- SWAP(float, v2[0], v4[0]);
- SWAP(float, v2[1], v4[1]);
+ SWAP(const float *, v1, v3);
+ SWAP(const float *, v2, v4);
} else { /* both of segments are points */
if(equals_v2v2(v1, v3)) { /* points are equal */
copy_v2_v2(vi, v1);