Use std::min_element to find least vertex

This commit is contained in:
Kp 2014-07-17 02:48:51 +00:00
parent c69ff037d6
commit d135e93b94
3 changed files with 9 additions and 27 deletions

View file

@ -262,11 +262,8 @@ static int check_line_to_face(vms_vector *newp,const vms_vector *p0,const vms_ve
vertnum = min(vertex_list[0],vertex_list[2]);
}
else {
int i;
vertnum = vertex_list[0];
for (i=1;i<4;i++)
if (vertex_list[i] < vertnum)
vertnum = vertex_list[i];
auto b = begin(vertex_list);
vertnum = *std::min_element(b, std::next(b, 4));
}
pli = find_plane_line_intersection(newp,&Vertices[vertnum],&norm,p0,p1,rad);

View file

@ -406,14 +406,9 @@ segmasks get_seg_masks(const vms_vector *checkp, int segnum, fix rad, const char
}
else { //only one face on this side
fix dist;
int i;
//use lowest point number
vertnum = vertex_list[0];
for (i=1;i<4;i++)
if (vertex_list[i] < vertnum)
vertnum = vertex_list[i];
auto b = begin(vertex_list);
vertnum = *std::min_element(b, std::next(b, 4));
dist = vm_dist_to_plane(checkp, &s->normals[0], &Vertices[vertnum]);
@ -522,15 +517,10 @@ static ubyte get_side_dists(const vms_vector *checkp,int segnum,fix *side_dists)
}
else { //only one face on this side
fix dist;
int i,vertnum;
//use lowest point number
vertnum = vertex_list[0];
for (i=1;i<4;i++)
if (vertex_list[i] < vertnum)
vertnum = vertex_list[i];
auto b = begin(vertex_list);
auto vertnum = *std::min_element(b, std::next(b, 4));
dist = vm_dist_to_plane(checkp, &s->normals[0], &Vertices[vertnum]);
@ -709,9 +699,6 @@ static int trace_segs(const vms_vector *p0, int oldsegnum, int recursion_count,
return segment_none; //we haven't found a segment
}
int Exhaustive_count=0, Exhaustive_failed_count=0;
//Tries to find a segment for a point, in the following way:
// 1. Check the given segment
// 2. Recursively trace through attached segments

View file

@ -764,7 +764,7 @@ void do_physics_sim(objptridx_t obj)
if (! (WALL_IS_DOORWAY(&Segments[orig_segnum],sidenum) & WID_FLY_FLAG)) {
side *s;
int vertnum,num_faces,i;
int num_faces;
fix dist;
int vertex_list[6];
@ -775,10 +775,8 @@ void do_physics_sim(objptridx_t obj)
create_abs_vertex_lists(&num_faces, vertex_list, orig_segnum, sidenum, __FILE__, __LINE__);
//let's pretend this wall is not triangulated
vertnum = vertex_list[0];
for (i=1;i<4;i++)
if (vertex_list[i] < vertnum)
vertnum = vertex_list[i];
auto b = begin(vertex_list);
auto vertnum = *std::min_element(b, std::next(b, 4));
dist = vm_dist_to_plane(&start_pos, &s->normals[0], &Vertices[vertnum]);
vm_vec_scale_add(&obj->pos,&start_pos,&s->normals[0],obj->size-dist);