Cleanup: math lib naming
Distinguish between line / line_segment
This commit is contained in:
@@ -220,7 +220,7 @@ static void distribute_grid(DerivedMesh *dm, ParticleSystem *psys)
|
||||
copy_v3_v3(v2, mvert[mface->v2].co);
|
||||
copy_v3_v3(v3, mvert[mface->v3].co);
|
||||
|
||||
if (isect_axial_line_tri_v3(a, co1, co2, v2, v3, v1, &lambda)) {
|
||||
if (isect_axial_line_segment_tri_v3(a, co1, co2, v2, v3, v1, &lambda)) {
|
||||
if (from==PART_FROM_FACE)
|
||||
(pa+(int)(lambda*size[a])*a0mul)->flag &= ~PARS_UNEXIST;
|
||||
else /* store number of intersections */
|
||||
@@ -229,7 +229,7 @@ static void distribute_grid(DerivedMesh *dm, ParticleSystem *psys)
|
||||
else if (mface->v4) {
|
||||
copy_v3_v3(v4, mvert[mface->v4].co);
|
||||
|
||||
if (isect_axial_line_tri_v3(a, co1, co2, v4, v1, v3, &lambda)) {
|
||||
if (isect_axial_line_segment_tri_v3(a, co1, co2, v4, v1, v3, &lambda)) {
|
||||
if (from==PART_FROM_FACE)
|
||||
(pa+(int)(lambda*size[a])*a0mul)->flag &= ~PARS_UNEXIST;
|
||||
else
|
||||
|
||||
@@ -1213,9 +1213,9 @@ static int sb_detect_face_collisionCached(float face_v1[3], float face_v2[3], fl
|
||||
sub_v3_v3v3(edge2, nv3, nv2);
|
||||
cross_v3_v3v3(d_nvect, edge2, edge1);
|
||||
normalize_v3(d_nvect);
|
||||
if (isect_line_tri_v3(nv1, nv2, face_v1, face_v2, face_v3, &t, NULL) ||
|
||||
isect_line_tri_v3(nv2, nv3, face_v1, face_v2, face_v3, &t, NULL) ||
|
||||
isect_line_tri_v3(nv3, nv1, face_v1, face_v2, face_v3, &t, NULL) )
|
||||
if (isect_line_segment_tri_v3(nv1, nv2, face_v1, face_v2, face_v3, &t, NULL) ||
|
||||
isect_line_segment_tri_v3(nv2, nv3, face_v1, face_v2, face_v3, &t, NULL) ||
|
||||
isect_line_segment_tri_v3(nv3, nv1, face_v1, face_v2, face_v3, &t, NULL) )
|
||||
{
|
||||
madd_v3_v3fl(force, d_nvect, -0.5f);
|
||||
*damp=tune*ob->pd->pdef_sbdamp;
|
||||
@@ -1396,7 +1396,7 @@ static int sb_detect_edge_collisionCached(float edge_v1[3], float edge_v2[3], fl
|
||||
|
||||
cross_v3_v3v3(d_nvect, edge2, edge1);
|
||||
normalize_v3(d_nvect);
|
||||
if ( isect_line_tri_v3(edge_v1, edge_v2, nv1, nv2, nv3, &t, NULL)) {
|
||||
if (isect_line_segment_tri_v3(edge_v1, edge_v2, nv1, nv2, nv3, &t, NULL)) {
|
||||
float v1[3], v2[3];
|
||||
float intrusiondepth, i1, i2;
|
||||
sub_v3_v3v3(v1, edge_v1, nv2);
|
||||
|
||||
@@ -186,8 +186,9 @@ bool isect_ray_plane_v3(
|
||||
float *r_lambda, const bool clip);
|
||||
|
||||
bool isect_point_planes_v3(float (*planes)[4], int totplane, const float p[3]);
|
||||
bool isect_line_plane_v3(float out[3], const float l1[3], const float l2[3],
|
||||
const float plane_co[3], const float plane_no[3]) ATTR_WARN_UNUSED_RESULT;
|
||||
bool isect_line_plane_v3(
|
||||
float r_isect_co[3], const float l1[3], const float l2[3],
|
||||
const float plane_co[3], const float plane_no[3]) ATTR_WARN_UNUSED_RESULT;
|
||||
|
||||
bool isect_plane_plane_plane_v3(
|
||||
const float plane_a[4], const float plane_b[4], const float plane_c[4],
|
||||
@@ -197,14 +198,18 @@ bool isect_plane_plane_v3(
|
||||
float r_isect_co[3], float r_isect_no[3]) ATTR_WARN_UNUSED_RESULT;
|
||||
|
||||
/* line/ray triangle */
|
||||
bool isect_line_tri_v3(
|
||||
bool isect_line_segment_tri_v3(
|
||||
const float p1[3], const float p2[3],
|
||||
const float v0[3], const float v1[3], const float v2[3],
|
||||
float *r_lambda, float r_uv[2]);
|
||||
bool isect_line_tri_epsilon_v3(
|
||||
bool isect_line_segment_tri_epsilon_v3(
|
||||
const float p1[3], const float p2[3],
|
||||
const float v0[3], const float v1[3], const float v2[3],
|
||||
float *r_lambda, float r_uv[2], const float epsilon);
|
||||
bool isect_axial_line_segment_tri_v3(
|
||||
const int axis, const float p1[3], const float p2[3],
|
||||
const float v0[3], const float v1[3], const float v2[3], float *r_lambda);
|
||||
|
||||
bool isect_ray_tri_v3(
|
||||
const float ray_origin[3], const float ray_direction[3],
|
||||
const float v0[3], const float v1[3], const float v2[3],
|
||||
@@ -279,9 +284,6 @@ bool isect_ray_aabb(const IsectRayAABBData *data, const float bb_min[3], const f
|
||||
bool isect_sweeping_sphere_tri_v3(const float p1[3], const float p2[3], const float radius,
|
||||
const float v0[3], const float v1[3], const float v2[3], float *r_lambda, float ipoint[3]);
|
||||
|
||||
bool isect_axial_line_tri_v3(const int axis, const float co1[3], const float co2[3],
|
||||
const float v0[3], const float v1[3], const float v2[3], float *r_lambda);
|
||||
|
||||
bool clip_segment_v3_plane(float p1[3], float p2[3], const float plane[4]);
|
||||
bool clip_segment_v3_plane_n(float p1[3], float p2[3], float plane_array[][4], const int plane_tot);
|
||||
|
||||
|
||||
@@ -1131,7 +1131,7 @@ int isect_point_quad_v2(const float pt[2], const float v1[2], const float v2[2],
|
||||
* test if the line starting at p1 ending at p2 intersects the triangle v0..v2
|
||||
* return non zero if it does
|
||||
*/
|
||||
bool isect_line_tri_v3(
|
||||
bool isect_line_segment_tri_v3(
|
||||
const float p1[3], const float p2[3],
|
||||
const float v0[3], const float v1[3], const float v2[3],
|
||||
float *r_lambda, float r_uv[2])
|
||||
@@ -1170,8 +1170,8 @@ bool isect_line_tri_v3(
|
||||
return true;
|
||||
}
|
||||
|
||||
/* like isect_line_tri_v3, but allows epsilon tolerance around triangle */
|
||||
bool isect_line_tri_epsilon_v3(
|
||||
/* like isect_line_segment_tri_v3, but allows epsilon tolerance around triangle */
|
||||
bool isect_line_segment_tri_epsilon_v3(
|
||||
const float p1[3], const float p2[3],
|
||||
const float v0[3], const float v1[3], const float v2[3],
|
||||
float *r_lambda, float r_uv[2], const float epsilon)
|
||||
@@ -2002,8 +2002,9 @@ bool isect_sweeping_sphere_tri_v3(const float p1[3], const float p2[3], const fl
|
||||
return found_by_sweep;
|
||||
}
|
||||
|
||||
bool isect_axial_line_tri_v3(const int axis, const float p1[3], const float p2[3],
|
||||
const float v0[3], const float v1[3], const float v2[3], float *r_lambda)
|
||||
bool isect_axial_line_segment_tri_v3(
|
||||
const int axis, const float p1[3], const float p2[3],
|
||||
const float v0[3], const float v1[3], const float v2[3], float *r_lambda)
|
||||
{
|
||||
const float epsilon = 0.000001f;
|
||||
float p[3], e1[3], e2[3];
|
||||
@@ -2011,7 +2012,7 @@ bool isect_axial_line_tri_v3(const int axis, const float p1[3], const float p2[3
|
||||
int a0 = axis, a1 = (axis + 1) % 3, a2 = (axis + 2) % 3;
|
||||
|
||||
#if 0
|
||||
return isect_line_tri_v3(p1, p2, v0, v1, v2, lambda);
|
||||
return isect_line_segment_tri_v3(p1, p2, v0, v1, v2, lambda);
|
||||
|
||||
/* first a simple bounding box test */
|
||||
if (min_fff(v0[a1], v1[a1], v2[a1]) > p1[a1]) return false;
|
||||
|
||||
@@ -344,7 +344,7 @@ static enum ISectType intersect_line_tri(
|
||||
|
||||
/* check ray isn't planar with tri */
|
||||
if (fabsf(dot_v3v3(p_dir, t_nor)) >= e->eps) {
|
||||
if (isect_line_tri_epsilon_v3(p0, p1, t_cos[0], t_cos[1], t_cos[2], &fac, NULL, 0.0f)) {
|
||||
if (isect_line_segment_tri_epsilon_v3(p0, p1, t_cos[0], t_cos[1], t_cos[2], &fac, NULL, 0.0f)) {
|
||||
if ((fac >= e->eps_margin) && (fac <= 1.0f - e->eps_margin)) {
|
||||
interp_v3_v3v3(r_ix, p0, p1, fac);
|
||||
if (min_fff(len_squared_v3v3(t_cos[0], r_ix),
|
||||
|
||||
@@ -3416,7 +3416,7 @@ static int particle_intersect_dm(Scene *scene, Object *ob, DerivedMesh *dm,
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (isect_line_tri_v3(co1, co2, v1, v2, v3, &cur_d, cur_uv)) {
|
||||
if (isect_line_segment_tri_v3(co1, co2, v1, v2, v3, &cur_d, cur_uv)) {
|
||||
if (cur_d<*min_d) {
|
||||
*min_d=cur_d;
|
||||
min_w[0] = 1.0f - cur_uv[0] - cur_uv[1];
|
||||
@@ -3430,7 +3430,7 @@ static int particle_intersect_dm(Scene *scene, Object *ob, DerivedMesh *dm,
|
||||
}
|
||||
}
|
||||
if (mface->v4) {
|
||||
if (isect_line_tri_v3(co1, co2, v1, v3, v4, &cur_d, cur_uv)) {
|
||||
if (isect_line_segment_tri_v3(co1, co2, v1, v3, v4, &cur_d, cur_uv)) {
|
||||
if (cur_d<*min_d) {
|
||||
*min_d=cur_d;
|
||||
min_w[0] = 1.0f - cur_uv[0] - cur_uv[1];
|
||||
|
||||
Reference in New Issue
Block a user