// // RecomputeSeg // // Fill in the fields 'angle', 'len', 'pdx', 'pdy', etc... // void RecomputeSeg(seg_t *seg) { seg->psx = seg->start->x; seg->psy = seg->start->y; seg->pex = seg->end->x; seg->pey = seg->end->y; seg->pdx = seg->pex - seg->psx; seg->pdy = seg->pey - seg->psy; seg->p_length = UtilComputeDist(seg->pdx, seg->pdy); seg->p_angle = UtilComputeAngle(seg->pdx, seg->pdy); if (seg->p_length <= 0) InternalError("Seg %p has zero p_length.", seg); seg->p_perp = seg->psy * seg->pdx - seg->psx * seg->pdy; seg->p_para = -seg->psx * seg->pdx - seg->psy * seg->pdy; }
// // NewVertexDegenerate // vertex_t *NewVertexDegenerate(vertex_t *start, vertex_t *end) { float_g dx = end->x - start->x; float_g dy = end->y - start->y; float_g dlen = UtilComputeDist(dx, dy); vertex_t *vert = NewVertex(); vert->ref_count = start->ref_count; if (lev_doing_normal) { vert->index = num_normal_vert; num_normal_vert++; } else { vert->index = num_gl_vert | IS_GL_VERTEX; num_gl_vert++; } // compute new coordinates vert->x = start->x; vert->y = start->x; if (dlen == 0) InternalError("NewVertexDegenerate: bad delta !"); dx /= dlen; dy /= dlen; while (I_ROUND(vert->x) == I_ROUND(start->x) && I_ROUND(vert->y) == I_ROUND(start->y)) { vert->x += dx; vert->y += dy; } return vert; }