diff options
Diffstat (limited to 'source/blender/editors/mesh/editmesh_tools.c')
-rw-r--r-- | source/blender/editors/mesh/editmesh_tools.c | 162 |
1 files changed, 81 insertions, 81 deletions
diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c index cea7ec33d3a..c59fb01ec99 100644 --- a/source/blender/editors/mesh/editmesh_tools.c +++ b/source/blender/editors/mesh/editmesh_tools.c @@ -58,7 +58,7 @@ editmesh_tool.c: UI called tools for editmesh, geometry changes here, otherwise #include "RNA_access.h" #include "BLI_blenlib.h" -#include "BLI_arithb.h" +#include "BLI_math.h" #include "BLI_editVert.h" #include "BLI_rand.h" #include "BLI_ghash.h" @@ -150,7 +150,7 @@ static void convert_to_triface(EditMesh *em, int direction) if(efa->v4) { if(efa->f & SELECT) { /* choose shortest diagonal for split */ - fac= VecLenf(efa->v1->co, efa->v3->co) - VecLenf(efa->v2->co, efa->v4->co); + fac= len_v3v3(efa->v1->co, efa->v3->co) - len_v3v3(efa->v2->co, efa->v4->co); /* this makes sure exact squares get split different in both cases */ if( (direction==0 && fac<FLT_EPSILON) || (direction && fac>0.0f) ) { efan= EM_face_from_faces(em, efa, NULL, 0, 1, 2, -1); @@ -689,8 +689,8 @@ void extrude_mesh(Scene *scene, Object *obedit, EditMesh *em, wmOperator *op) else { // initTransform(TFM_TRANSLATION, CTX_NO_PET|CTX_NO_MIRROR); if(transmode=='n') { - Mat4MulVecfl(obedit->obmat, nor); - VecSubf(nor, nor, obedit->obmat[3]); + mul_m4_v3(obedit->obmat, nor); + sub_v3_v3v3(nor, nor, obedit->obmat[3]); // BIF_setSingleAxisConstraint(nor, "along normal"); } // Transform(); @@ -816,15 +816,15 @@ static int extrude_repeat_mesh(bContext *C, wmOperator *op) dvec[0]= rv3d->persinv[2][0]; dvec[1]= rv3d->persinv[2][1]; dvec[2]= rv3d->persinv[2][2]; - Normalize(dvec); + normalize_v3(dvec); dvec[0]*= offs; dvec[1]*= offs; dvec[2]*= offs; /* base correction */ - Mat3CpyMat4(bmat, obedit->obmat); - Mat3Inv(tmat, bmat); - Mat3MulVecfl(tmat, dvec); + copy_m3_m4(bmat, obedit->obmat); + invert_m3_m3(tmat, bmat); + mul_m3_v3(tmat, dvec); for(a=0; a<steps; a++) { extrudeflag(obedit, em, SELECT, nor); @@ -879,30 +879,30 @@ static int spin_mesh(bContext *C, wmOperator *op, float *dvec, int steps, float RNA_float_get_array(op->ptr, "center", cent); /* imat and center and size */ - Mat3CpyMat4(bmat, obedit->obmat); - Mat3Inv(imat,bmat); + copy_m3_m4(bmat, obedit->obmat); + invert_m3_m3(imat,bmat); cent[0]-= obedit->obmat[3][0]; cent[1]-= obedit->obmat[3][1]; cent[2]-= obedit->obmat[3][2]; - Mat3MulVecfl(imat, cent); + mul_m3_v3(imat, cent); phi= degr*M_PI/360.0; phi/= steps; if(ts->editbutflag & B_CLOCKWISE) phi= -phi; RNA_float_get_array(op->ptr, "axis", n); - Normalize(n); + normalize_v3(n); q[0]= (float)cos(phi); si= (float)sin(phi); q[1]= n[0]*si; q[2]= n[1]*si; q[3]= n[2]*si; - QuatToMat3(q, cmat); + quat_to_mat3( cmat,q); - Mat3MulMat3(tmat,cmat,bmat); - Mat3MulMat3(bmat,imat,tmat); + mul_m3_m3m3(tmat,cmat,bmat); + mul_m3_m3m3(bmat,imat,tmat); if(dupli==0) if(ts->editbutflag & B_KEEPORIG) @@ -917,7 +917,7 @@ static int spin_mesh(bContext *C, wmOperator *op, float *dvec, int steps, float rotateflag(em, SELECT, cent, bmat); if(dvec) { - Mat3MulVecfl(bmat,dvec); + mul_m3_v3(bmat,dvec); translateflag(em, SELECT, dvec); } } @@ -1362,8 +1362,8 @@ static void alter_co(float *co, EditEdge *edge, float smooth, float fractal, int /* we calculate an offset vector vec1[], to be added to *co */ float len, fac, nor[3], nor1[3], nor2[3]; - VecSubf(nor, edge->v1->co, edge->v2->co); - len= 0.5f*Normalize(nor); + sub_v3_v3v3(nor, edge->v1->co, edge->v2->co); + len= 0.5f*normalize_v3(nor); VECCOPY(nor1, edge->v1->no); VECCOPY(nor2, edge->v2->no); @@ -1394,18 +1394,18 @@ static void alter_co(float *co, EditEdge *edge, float smooth, float fractal, int co[2] += vec1[2]; } else if(beauty & B_SPHERE) { /* subdivide sphere */ - Normalize(co); + normalize_v3(co); co[0]*= smooth; co[1]*= smooth; co[2]*= smooth; } if(beauty & B_FRACTAL) { - fac= fractal*VecLenf(edge->v1->co, edge->v2->co); + fac= fractal*len_v3v3(edge->v1->co, edge->v2->co); vec1[0]= fac*(float)(0.5-BLI_drand()); vec1[1]= fac*(float)(0.5-BLI_drand()); vec1[2]= fac*(float)(0.5-BLI_drand()); - VecAddf(co, co, vec1); + add_v3_v3v3(co, co, vec1); } } @@ -1446,7 +1446,7 @@ static EditVert *subdivide_edge_addvert(EditMesh *em, EditEdge *edge, float smoo ev->no[0] = (edge->v2->no[0]-edge->v1->no[0])*percent + edge->v1->no[0]; ev->no[1] = (edge->v2->no[1]-edge->v1->no[1])*percent + edge->v1->no[1]; ev->no[2] = (edge->v2->no[2]-edge->v1->no[2])*percent + edge->v1->no[2]; - Normalize(ev->no); + normalize_v3(ev->no); return ev; } @@ -1475,11 +1475,11 @@ static void facecopy(EditMesh *em, EditFace *source, EditFace *target) target->flag = source->flag; target->h = source->h; - InterpWeightsQ3Dfl(v1, v2, v3, v4, target->v1->co, w[0]); - InterpWeightsQ3Dfl(v1, v2, v3, v4, target->v2->co, w[1]); - InterpWeightsQ3Dfl(v1, v2, v3, v4, target->v3->co, w[2]); + interp_weights_face_v3( w[0],v1, v2, v3, v4, target->v1->co); + interp_weights_face_v3( w[1],v1, v2, v3, v4, target->v2->co); + interp_weights_face_v3( w[2],v1, v2, v3, v4, target->v3->co); if (target->v4) - InterpWeightsQ3Dfl(v1, v2, v3, v4, target->v4->co, w[3]); + interp_weights_face_v3( w[3],v1, v2, v3, v4, target->v4->co); CustomData_em_interp(&em->fdata, &source->data, NULL, (float*)w, 1, target->data); } @@ -2623,15 +2623,15 @@ void esubdivideflag(Object *obedit, EditMesh *em, int flag, float smooth, float VECCOPY(v2mat, ef->v2->co); VECCOPY(v3mat, ef->v3->co); VECCOPY(v4mat, ef->v4->co); - Mat4Mul3Vecfl(obedit->obmat, v1mat); - Mat4Mul3Vecfl(obedit->obmat, v2mat); - Mat4Mul3Vecfl(obedit->obmat, v3mat); - Mat4Mul3Vecfl(obedit->obmat, v4mat); - - length[0] = VecLenf(v1mat, v2mat); - length[1] = VecLenf(v2mat, v3mat); - length[2] = VecLenf(v3mat, v4mat); - length[3] = VecLenf(v4mat, v1mat); + mul_mat3_m4_v3(obedit->obmat, v1mat); + mul_mat3_m4_v3(obedit->obmat, v2mat); + mul_mat3_m4_v3(obedit->obmat, v3mat); + mul_mat3_m4_v3(obedit->obmat, v4mat); + + length[0] = len_v3v3(v1mat, v2mat); + length[1] = len_v3v3(v2mat, v3mat); + length[2] = len_v3v3(v3mat, v4mat); + length[3] = len_v3v3(v4mat, v1mat); sort[0] = ef->e1; sort[1] = ef->e2; sort[2] = ef->e3; @@ -3121,43 +3121,43 @@ static float measure_facepair(EditVert *v1, EditVert *v2, EditVert *v3, EditVert minarea, maxarea, areaA, areaB; /*First Test: Normal difference*/ - CalcNormFloat(v1->co, v2->co, v3->co, noA1); - CalcNormFloat(v1->co, v3->co, v4->co, noA2); + normal_tri_v3( noA1,v1->co, v2->co, v3->co); + normal_tri_v3( noA2,v1->co, v3->co, v4->co); if(noA1[0] == noA2[0] && noA1[1] == noA2[1] && noA1[2] == noA2[2]) normalADiff = 0.0; - else normalADiff = RAD2DEG(VecAngle2(noA1, noA2)); + else normalADiff = RAD2DEG(angle_v2v2(noA1, noA2)); //if(!normalADiff) normalADiff = 179; - CalcNormFloat(v2->co, v3->co, v4->co, noB1); - CalcNormFloat(v4->co, v1->co, v2->co, noB2); + normal_tri_v3( noB1,v2->co, v3->co, v4->co); + normal_tri_v3( noB2,v4->co, v1->co, v2->co); if(noB1[0] == noB2[0] && noB1[1] == noB2[1] && noB1[2] == noB2[2]) normalBDiff = 0.0; - else normalBDiff = RAD2DEG(VecAngle2(noB1, noB2)); + else normalBDiff = RAD2DEG(angle_v2v2(noB1, noB2)); //if(!normalBDiff) normalBDiff = 179; measure += (normalADiff/360) + (normalBDiff/360); if(measure > limit) return measure; /*Second test: Colinearity*/ - VecSubf(edgeVec1, v1->co, v2->co); - VecSubf(edgeVec2, v2->co, v3->co); - VecSubf(edgeVec3, v3->co, v4->co); - VecSubf(edgeVec4, v4->co, v1->co); + sub_v3_v3v3(edgeVec1, v1->co, v2->co); + sub_v3_v3v3(edgeVec2, v2->co, v3->co); + sub_v3_v3v3(edgeVec3, v3->co, v4->co); + sub_v3_v3v3(edgeVec4, v4->co, v1->co); diff = 0.0; diff = ( - fabs(RAD2DEG(VecAngle2(edgeVec1, edgeVec2)) - 90) + - fabs(RAD2DEG(VecAngle2(edgeVec2, edgeVec3)) - 90) + - fabs(RAD2DEG(VecAngle2(edgeVec3, edgeVec4)) - 90) + - fabs(RAD2DEG(VecAngle2(edgeVec4, edgeVec1)) - 90)) / 360; + fabs(RAD2DEG(angle_v2v2(edgeVec1, edgeVec2)) - 90) + + fabs(RAD2DEG(angle_v2v2(edgeVec2, edgeVec3)) - 90) + + fabs(RAD2DEG(angle_v2v2(edgeVec3, edgeVec4)) - 90) + + fabs(RAD2DEG(angle_v2v2(edgeVec4, edgeVec1)) - 90)) / 360; if(!diff) return 0.0; measure += diff; if(measure > limit) return measure; /*Third test: Concavity*/ - areaA = AreaT3Dfl(v1->co, v2->co, v3->co) + AreaT3Dfl(v1->co, v3->co, v4->co); - areaB = AreaT3Dfl(v2->co, v3->co, v4->co) + AreaT3Dfl(v4->co, v1->co, v2->co); + areaA = area_tri_v3(v1->co, v2->co, v3->co) + area_tri_v3(v1->co, v3->co, v4->co); + areaB = area_tri_v3(v2->co, v3->co, v4->co) + area_tri_v3(v4->co, v1->co, v2->co); if(areaA <= areaB) minarea = areaA; else minarea = areaB; @@ -4370,9 +4370,9 @@ useless: } if(prop == 0) { - len = VecLenf(upVert->co,downVert->co)*((perc+1)/2); + len = len_v3v3(upVert->co,downVert->co)*((perc+1)/2); if(flip == 1) { - len = VecLenf(upVert->co,downVert->co) - len; + len = len_v3v3(upVert->co,downVert->co) - len; } } @@ -4387,7 +4387,7 @@ useless: } else { - len = MIN2(perc, VecLenf(upVert->co,downVert->co)); + len = MIN2(perc, len_v3v3(upVert->co,downVert->co)); len = MAX2(len, 0); } } @@ -4405,13 +4405,13 @@ useless: tempsv = BLI_ghash_lookup(vertgh,ev); tempev = editedge_getOtherVert((perc>=0)?tempsv->up:tempsv->down, ev); - VecLerpf(ev->co, tempsv->origvert.co, tempev->co, fabs(perc)); + interp_v3_v3v3(ev->co, tempsv->origvert.co, tempev->co, fabs(perc)); if (0) { // XXX scene->toolsettings->uvcalc_flag & UVCALC_TRANSFORM_CORRECT) { for (uvlay_idx=0; uvlay_idx<uvlay_tot; uvlay_idx++) { suv = BLI_ghash_lookup( uvarray[uvlay_idx], ev ); if (suv && suv->fuv_list && suv->uv_up && suv->uv_down) { - Vec2Lerpf(uv_tmp, suv->origuv, (perc>=0)?suv->uv_up:suv->uv_down, fabs(perc)); + interp_v2_v2v2(uv_tmp, suv->origuv, (perc>=0)?suv->uv_up:suv->uv_down, fabs(perc)); fuv_link = suv->fuv_list; while (fuv_link) { VECCOPY2D(((float *)fuv_link->link), uv_tmp); @@ -4431,17 +4431,17 @@ useless: float newlen; ev = look->link; tempsv = BLI_ghash_lookup(vertgh,ev); - newlen = (len / VecLenf(editedge_getOtherVert(tempsv->up,ev)->co,editedge_getOtherVert(tempsv->down,ev)->co)); + newlen = (len / len_v3v3(editedge_getOtherVert(tempsv->up,ev)->co,editedge_getOtherVert(tempsv->down,ev)->co)); if(newlen > 1.0) {newlen = 1.0;} if(newlen < 0.0) {newlen = 0.0;} if(flip == 0) { - VecLerpf(ev->co, editedge_getOtherVert(tempsv->down,ev)->co, editedge_getOtherVert(tempsv->up,ev)->co, fabs(newlen)); + interp_v3_v3v3(ev->co, editedge_getOtherVert(tempsv->down,ev)->co, editedge_getOtherVert(tempsv->up,ev)->co, fabs(newlen)); if (0) { // XXX scene->toolsettings->uvcalc_flag & UVCALC_TRANSFORM_CORRECT) { /* dont do anything if no UVs */ for (uvlay_idx=0; uvlay_idx<uvlay_tot; uvlay_idx++) { suv = BLI_ghash_lookup( uvarray[uvlay_idx], ev ); if (suv && suv->fuv_list && suv->uv_up && suv->uv_down) { - Vec2Lerpf(uv_tmp, suv->uv_down, suv->uv_up, fabs(newlen)); + interp_v2_v2v2(uv_tmp, suv->uv_down, suv->uv_up, fabs(newlen)); fuv_link = suv->fuv_list; while (fuv_link) { VECCOPY2D(((float *)fuv_link->link), uv_tmp); @@ -4451,14 +4451,14 @@ useless: } } } else{ - VecLerpf(ev->co, editedge_getOtherVert(tempsv->up,ev)->co, editedge_getOtherVert(tempsv->down,ev)->co, fabs(newlen)); + interp_v3_v3v3(ev->co, editedge_getOtherVert(tempsv->up,ev)->co, editedge_getOtherVert(tempsv->down,ev)->co, fabs(newlen)); if (0) { // XXX scene->toolsettings->uvcalc_flag & UVCALC_TRANSFORM_CORRECT) { /* dont do anything if no UVs */ for (uvlay_idx=0; uvlay_idx<uvlay_tot; uvlay_idx++) { suv = BLI_ghash_lookup( uvarray[uvlay_idx], ev ); if (suv && suv->fuv_list && suv->uv_up && suv->uv_down) { - Vec2Lerpf(uv_tmp, suv->uv_up, suv->uv_down, fabs(newlen)); + interp_v2_v2v2(uv_tmp, suv->uv_up, suv->uv_down, fabs(newlen)); fuv_link = suv->fuv_list; while (fuv_link) { VECCOPY2D(((float *)fuv_link->link), uv_tmp); @@ -4768,7 +4768,7 @@ static float mesh_rip_edgedist(ARegion *ar, float mat[][4], float *co1, float *c mvalf[0]= (float)mval[0]; mvalf[1]= (float)mval[1]; - return PdistVL2Dfl(mvalf, vec1, vec2); + return dist_to_line_segment_v2(mvalf, vec1, vec2); } /* helper for below */ @@ -5120,11 +5120,11 @@ static int blend_from_shape_exec(bContext *C, wmOperator *op) VECCOPY(co, data + eve->keyindex*3); if(add) { - VecMulf(co, blend); - VecAddf(eve->co, eve->co, co); + mul_v3_fl(co, blend); + add_v3_v3v3(eve->co, eve->co, co); } else - VecLerpf(eve->co, eve->co, co, blend); + interp_v3_v3v3(eve->co, eve->co, co, blend); blended= 1; } @@ -5737,7 +5737,7 @@ static void em_snap_to_center(EditMesh *em) for (eve=em->verts.first; eve; eve=eve->next) { if (eve->f & SELECT) { - VecAddf(cent, cent, eve->co); + add_v3_v3v3(cent, cent, eve->co); i++; } } @@ -5745,7 +5745,7 @@ static void em_snap_to_center(EditMesh *em) if (!i) return; - VecMulf(cent, 1.0f / (float)i); + mul_v3_fl(cent, 1.0f / (float)i); for (eve=em->verts.first; eve; eve=eve->next) { if (eve->f & SELECT) { @@ -5762,11 +5762,11 @@ static void em_snap_to_cursor(EditMesh *em, bContext *C) EditVert *eve; float co[3], *vco, invmat[4][4]; - Mat4Invert(invmat, ob->obmat); + invert_m4_m4(invmat, ob->obmat); vco = give_cursor(scene, v3d); VECCOPY(co, vco); - Mat4MulVecfl(invmat, co); + mul_m4_v3(invmat, co); for (eve=em->verts.first; eve; eve=eve->next) { if (eve->f & SELECT) { @@ -5987,7 +5987,7 @@ static int select_vertex_path_exec(bContext *C, wmOperator *op) newpe = MEM_mallocN(sizeof(PathEdge), "Path Edge"); newpe->v = ((PathNode*)eed->v2->tmp.p)->u; if(physical){ - newpe->w = VecLenf(eed->v1->co, eed->v2->co); + newpe->w = len_v3v3(eed->v1->co, eed->v2->co); } else newpe->w = 1; newpe->next = 0; @@ -5999,7 +5999,7 @@ static int select_vertex_path_exec(bContext *C, wmOperator *op) newpe = MEM_mallocN(sizeof(PathEdge), "Path Edge"); newpe->v = ((PathNode*)eed->v1->tmp.p)->u; if(physical){ - newpe->w = VecLenf(eed->v1->co, eed->v2->co); + newpe->w = len_v3v3(eed->v1->co, eed->v2->co); } else newpe->w = 1; newpe->next = 0; @@ -6813,20 +6813,20 @@ static void beauty_fill(EditMesh *em) * the area divided by the total edge lengths */ - len1= VecLenf(v1->co, v2->co); - len2= VecLenf(v2->co, v3->co); - len3= VecLenf(v3->co, v4->co); - len4= VecLenf(v4->co, v1->co); - len5= VecLenf(v1->co, v3->co); - len6= VecLenf(v2->co, v4->co); + len1= len_v3v3(v1->co, v2->co); + len2= len_v3v3(v2->co, v3->co); + len3= len_v3v3(v3->co, v4->co); + len4= len_v3v3(v4->co, v1->co); + len5= len_v3v3(v1->co, v3->co); + len6= len_v3v3(v2->co, v4->co); - opp1= AreaT3Dfl(v1->co, v2->co, v3->co); - opp2= AreaT3Dfl(v1->co, v3->co, v4->co); + opp1= area_tri_v3(v1->co, v2->co, v3->co); + opp2= area_tri_v3(v1->co, v3->co, v4->co); fac1= opp1/(len1+len2+len5) + opp2/(len3+len4+len5); - opp1= AreaT3Dfl(v2->co, v3->co, v4->co); - opp2= AreaT3Dfl(v2->co, v4->co, v1->co); + opp1= area_tri_v3(v2->co, v3->co, v4->co); + opp2= area_tri_v3(v2->co, v4->co, v1->co); fac2= opp1/(len2+len3+len6) + opp2/(len4+len1+len6); |