forked from bartvdbraak/blender
VecAngle3_2D, VecAngle2 and VecAngle3 returned degrees, in arithb.c degrees are most common.
- These now return radians - added macro RAD2DEG(rad) - renamed VecAngle3_2D to Vec2Angle3 since Vec2* is used in arithb.c for 2D vector functions.
This commit is contained in:
parent
0f25d9bb54
commit
474378a0e8
@ -1616,7 +1616,7 @@ static void bevel_list_flip_tangents(BevList *bl)
|
|||||||
|
|
||||||
nr= bl->nr;
|
nr= bl->nr;
|
||||||
while(nr--) {
|
while(nr--) {
|
||||||
if(VecAngle2(bevp0->tan, bevp1->tan) > 90)
|
if(RAD2DEG(VecAngle2(bevp0->tan, bevp1->tan)) > 90)
|
||||||
VecNegf(bevp1->tan);
|
VecNegf(bevp1->tan);
|
||||||
|
|
||||||
bevp0= bevp1;
|
bevp0= bevp1;
|
||||||
|
@ -401,7 +401,7 @@ float VecAngle2(float *v1, float *v2);
|
|||||||
float VecAngle3(float *v1, float *v2, float *v3);
|
float VecAngle3(float *v1, float *v2, float *v3);
|
||||||
float NormalizedVecAngle2(float *v1, float *v2);
|
float NormalizedVecAngle2(float *v1, float *v2);
|
||||||
|
|
||||||
float VecAngle3_2D(float *v1, float *v2, float *v3);
|
float Vec2Angle3(float *v1, float *v2, float *v3);
|
||||||
float NormalizedVecAngle2_2D(float *v1, float *v2);
|
float NormalizedVecAngle2_2D(float *v1, float *v2);
|
||||||
|
|
||||||
void NormalShortToFloat(float *out, short *in);
|
void NormalShortToFloat(float *out, short *in);
|
||||||
@ -454,6 +454,8 @@ void i_window(
|
|||||||
#define BLI_CS_REC709 1
|
#define BLI_CS_REC709 1
|
||||||
#define BLI_CS_CIE 2
|
#define BLI_CS_CIE 2
|
||||||
|
|
||||||
|
#define RAD2DEG(_rad) ((_rad)*(180.0/M_PI))
|
||||||
|
|
||||||
void hsv_to_rgb(float h, float s, float v, float *r, float *g, float *b);
|
void hsv_to_rgb(float h, float s, float v, float *r, float *g, float *b);
|
||||||
void hex_to_rgb(char *hexcol, float *r, float *g, float *b);
|
void hex_to_rgb(char *hexcol, float *r, float *g, float *b);
|
||||||
void rgb_to_yuv(float r, float g, float b, float *ly, float *lu, float *lv);
|
void rgb_to_yuv(float r, float g, float b, float *ly, float *lu, float *lv);
|
||||||
|
@ -3548,10 +3548,10 @@ float VecAngle3(float *v1, float *v2, float *v3)
|
|||||||
Normalize(vec1);
|
Normalize(vec1);
|
||||||
Normalize(vec2);
|
Normalize(vec2);
|
||||||
|
|
||||||
return NormalizedVecAngle2(vec1, vec2) * (float)(180.0/M_PI);
|
return NormalizedVecAngle2(vec1, vec2);
|
||||||
}
|
}
|
||||||
|
|
||||||
float VecAngle3_2D(float *v1, float *v2, float *v3)
|
float Vec2Angle3(float *v1, float *v2, float *v3)
|
||||||
{
|
{
|
||||||
float vec1[2], vec2[2];
|
float vec1[2], vec2[2];
|
||||||
|
|
||||||
@ -3564,7 +3564,7 @@ float VecAngle3_2D(float *v1, float *v2, float *v3)
|
|||||||
Normalize2(vec1);
|
Normalize2(vec1);
|
||||||
Normalize2(vec2);
|
Normalize2(vec2);
|
||||||
|
|
||||||
return NormalizedVecAngle2_2D(vec1, vec2) * (float)(180.0/M_PI);
|
return NormalizedVecAngle2_2D(vec1, vec2);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return the shortest angle in degrees between the 2 vectors */
|
/* Return the shortest angle in degrees between the 2 vectors */
|
||||||
@ -3577,7 +3577,7 @@ float VecAngle2(float *v1, float *v2)
|
|||||||
Normalize(vec1);
|
Normalize(vec1);
|
||||||
Normalize(vec2);
|
Normalize(vec2);
|
||||||
|
|
||||||
return NormalizedVecAngle2(vec1, vec2)* (float)(180.0/M_PI);
|
return NormalizedVecAngle2(vec1, vec2);
|
||||||
}
|
}
|
||||||
|
|
||||||
float NormalizedVecAngle2(float *v1, float *v2)
|
float NormalizedVecAngle2(float *v1, float *v2)
|
||||||
|
@ -1814,7 +1814,7 @@ int sk_detectTrimGesture(bContext *C, SK_Gesture *gest, SK_Sketch *sketch)
|
|||||||
VecSubf(s1, gest->segments->points[1].p, gest->segments->points[0].p);
|
VecSubf(s1, gest->segments->points[1].p, gest->segments->points[0].p);
|
||||||
VecSubf(s2, gest->segments->points[2].p, gest->segments->points[1].p);
|
VecSubf(s2, gest->segments->points[2].p, gest->segments->points[1].p);
|
||||||
|
|
||||||
angle = VecAngle2(s1, s2);
|
angle = RAD2DEG(VecAngle2(s1, s2));
|
||||||
|
|
||||||
if (angle > 60 && angle < 120)
|
if (angle > 60 && angle < 120)
|
||||||
{
|
{
|
||||||
@ -1932,7 +1932,7 @@ int sk_detectDeleteGesture(bContext *C, SK_Gesture *gest, SK_Sketch *sketch)
|
|||||||
VecSubf(s1, gest->segments->points[1].p, gest->segments->points[0].p);
|
VecSubf(s1, gest->segments->points[1].p, gest->segments->points[0].p);
|
||||||
VecSubf(s2, gest->segments->points[2].p, gest->segments->points[1].p);
|
VecSubf(s2, gest->segments->points[2].p, gest->segments->points[1].p);
|
||||||
|
|
||||||
angle = VecAngle2(s1, s2);
|
angle = RAD2DEG(VecAngle2(s1, s2));
|
||||||
|
|
||||||
if (angle > 120)
|
if (angle > 120)
|
||||||
{
|
{
|
||||||
@ -2064,7 +2064,7 @@ int sk_detectReverseGesture(bContext *C, SK_Gesture *gest, SK_Sketch *sketch)
|
|||||||
VecSubf(end_v, sk_lastStrokePoint(gest->stk)->p, isect->p);
|
VecSubf(end_v, sk_lastStrokePoint(gest->stk)->p, isect->p);
|
||||||
}
|
}
|
||||||
|
|
||||||
angle = VecAngle2(start_v, end_v);
|
angle = RAD2DEG(VecAngle2(start_v, end_v));
|
||||||
|
|
||||||
if (angle > 120)
|
if (angle > 120)
|
||||||
{
|
{
|
||||||
|
@ -176,9 +176,9 @@ static void laplacian_triangle_area(LaplacianSystem *sys, int i1, int i2, int i3
|
|||||||
t2= cotan_weight(v2, v3, v1);
|
t2= cotan_weight(v2, v3, v1);
|
||||||
t3= cotan_weight(v3, v1, v2);
|
t3= cotan_weight(v3, v1, v2);
|
||||||
|
|
||||||
if(VecAngle3(v2, v1, v3) > 90) obtuse= 1;
|
if(RAD2DEG(VecAngle3(v2, v1, v3)) > 90) obtuse= 1;
|
||||||
else if(VecAngle3(v1, v2, v3) > 90) obtuse= 2;
|
else if(RAD2DEG(VecAngle3(v1, v2, v3)) > 90) obtuse= 2;
|
||||||
else if(VecAngle3(v1, v3, v2) > 90) obtuse= 3;
|
else if(RAD2DEG(VecAngle3(v1, v3, v2)) > 90) obtuse= 3;
|
||||||
|
|
||||||
if (obtuse > 0) {
|
if (obtuse > 0) {
|
||||||
area= AreaT3Dfl(v1, v2, v3);
|
area= AreaT3Dfl(v1, v2, v3);
|
||||||
|
@ -761,7 +761,7 @@ static int similar_face_select__internal(Scene *scene, EditMesh *em, int mode)
|
|||||||
float angle;
|
float angle;
|
||||||
for(efa= em->faces.first; efa; efa= efa->next) {
|
for(efa= em->faces.first; efa; efa= efa->next) {
|
||||||
if (!(efa->f & SELECT) && !efa->h) {
|
if (!(efa->f & SELECT) && !efa->h) {
|
||||||
angle= VecAngle2(base_efa->n, efa->n);
|
angle= RAD2DEG(VecAngle2(base_efa->n, efa->n));
|
||||||
if (angle/180.0<=thresh) {
|
if (angle/180.0<=thresh) {
|
||||||
EM_select_face(efa, 1);
|
EM_select_face(efa, 1);
|
||||||
selcount++;
|
selcount++;
|
||||||
@ -776,7 +776,7 @@ static int similar_face_select__internal(Scene *scene, EditMesh *em, int mode)
|
|||||||
base_dot= Inpf(base_efa->cent, base_efa->n);
|
base_dot= Inpf(base_efa->cent, base_efa->n);
|
||||||
for(efa= em->faces.first; efa; efa= efa->next) {
|
for(efa= em->faces.first; efa; efa= efa->next) {
|
||||||
if (!(efa->f & SELECT) && !efa->h) {
|
if (!(efa->f & SELECT) && !efa->h) {
|
||||||
angle= VecAngle2(base_efa->n, efa->n);
|
angle= RAD2DEG(VecAngle2(base_efa->n, efa->n));
|
||||||
if (angle/180.0<=thresh) {
|
if (angle/180.0<=thresh) {
|
||||||
dot=Inpf(efa->cent, base_efa->n);
|
dot=Inpf(efa->cent, base_efa->n);
|
||||||
if (fabs(base_dot-dot) <= thresh) {
|
if (fabs(base_dot-dot) <= thresh) {
|
||||||
@ -916,7 +916,7 @@ static int similar_edge_select__internal(ToolSettings *ts, EditMesh *em, int mod
|
|||||||
else if (eed->f2==0) /* first access, assign the face */
|
else if (eed->f2==0) /* first access, assign the face */
|
||||||
eed->tmp.f= efa;
|
eed->tmp.f= efa;
|
||||||
else if (eed->f2==1) /* second, we assign the angle*/
|
else if (eed->f2==1) /* second, we assign the angle*/
|
||||||
eed->tmp.fp= VecAngle2(eed->tmp.f->n, efa->n)/180;
|
eed->tmp.fp= RAD2DEG(VecAngle2(eed->tmp.f->n, efa->n))/180;
|
||||||
eed->f2++; /* f2==0 no face assigned. f2==1 one face found. f2==2 angle calculated.*/
|
eed->f2++; /* f2==0 no face assigned. f2==1 one face found. f2==2 angle calculated.*/
|
||||||
}
|
}
|
||||||
j++;
|
j++;
|
||||||
@ -946,7 +946,7 @@ static int similar_edge_select__internal(ToolSettings *ts, EditMesh *em, int mod
|
|||||||
for(eed= em->edges.first; eed; eed= eed->next) {
|
for(eed= em->edges.first; eed; eed= eed->next) {
|
||||||
if (!(eed->f & SELECT) && !eed->h) {
|
if (!(eed->f & SELECT) && !eed->h) {
|
||||||
VecSubf(dir, eed->v1->co, eed->v2->co);
|
VecSubf(dir, eed->v1->co, eed->v2->co);
|
||||||
angle= VecAngle2(base_dir, dir);
|
angle= RAD2DEG(VecAngle2(base_dir, dir));
|
||||||
|
|
||||||
if (angle>90) /* use the smallest angle between the edges */
|
if (angle>90) /* use the smallest angle between the edges */
|
||||||
angle= fabs(angle-180.0f);
|
angle= fabs(angle-180.0f);
|
||||||
@ -1137,7 +1137,7 @@ static int similar_vert_select_exec(bContext *C, wmOperator *op)
|
|||||||
float angle;
|
float angle;
|
||||||
for(eve= em->verts.first; eve; eve= eve->next) {
|
for(eve= em->verts.first; eve; eve= eve->next) {
|
||||||
if (!(eve->f & SELECT) && !eve->h) {
|
if (!(eve->f & SELECT) && !eve->h) {
|
||||||
angle= VecAngle2(base_eve->no, eve->no);
|
angle= RAD2DEG(VecAngle2(base_eve->no, eve->no));
|
||||||
if (angle/180.0<=thresh) {
|
if (angle/180.0<=thresh) {
|
||||||
eve->f |= SELECT;
|
eve->f |= SELECT;
|
||||||
selcount++;
|
selcount++;
|
||||||
|
@ -3121,13 +3121,13 @@ static float measure_facepair(EditVert *v1, EditVert *v2, EditVert *v3, EditVert
|
|||||||
CalcNormFloat(v1->co, v3->co, v4->co, noA2);
|
CalcNormFloat(v1->co, v3->co, v4->co, noA2);
|
||||||
|
|
||||||
if(noA1[0] == noA2[0] && noA1[1] == noA2[1] && noA1[2] == noA2[2]) normalADiff = 0.0;
|
if(noA1[0] == noA2[0] && noA1[1] == noA2[1] && noA1[2] == noA2[2]) normalADiff = 0.0;
|
||||||
else normalADiff = VecAngle2(noA1, noA2);
|
else normalADiff = RAD2DEG(VecAngle2(noA1, noA2));
|
||||||
//if(!normalADiff) normalADiff = 179;
|
//if(!normalADiff) normalADiff = 179;
|
||||||
CalcNormFloat(v2->co, v3->co, v4->co, noB1);
|
CalcNormFloat(v2->co, v3->co, v4->co, noB1);
|
||||||
CalcNormFloat(v4->co, v1->co, v2->co, noB2);
|
CalcNormFloat(v4->co, v1->co, v2->co, noB2);
|
||||||
|
|
||||||
if(noB1[0] == noB2[0] && noB1[1] == noB2[1] && noB1[2] == noB2[2]) normalBDiff = 0.0;
|
if(noB1[0] == noB2[0] && noB1[1] == noB2[1] && noB1[2] == noB2[2]) normalBDiff = 0.0;
|
||||||
else normalBDiff = VecAngle2(noB1, noB2);
|
else normalBDiff = RAD2DEG(VecAngle2(noB1, noB2));
|
||||||
//if(!normalBDiff) normalBDiff = 179;
|
//if(!normalBDiff) normalBDiff = 179;
|
||||||
|
|
||||||
measure += (normalADiff/360) + (normalBDiff/360);
|
measure += (normalADiff/360) + (normalBDiff/360);
|
||||||
@ -3142,10 +3142,10 @@ static float measure_facepair(EditVert *v1, EditVert *v2, EditVert *v3, EditVert
|
|||||||
diff = 0.0;
|
diff = 0.0;
|
||||||
|
|
||||||
diff = (
|
diff = (
|
||||||
fabs(VecAngle2(edgeVec1, edgeVec2) - 90) +
|
fabs(RAD2DEG(VecAngle2(edgeVec1, edgeVec2)) - 90) +
|
||||||
fabs(VecAngle2(edgeVec2, edgeVec3) - 90) +
|
fabs(RAD2DEG(VecAngle2(edgeVec2, edgeVec3)) - 90) +
|
||||||
fabs(VecAngle2(edgeVec3, edgeVec4) - 90) +
|
fabs(RAD2DEG(VecAngle2(edgeVec3, edgeVec4)) - 90) +
|
||||||
fabs(VecAngle2(edgeVec4, edgeVec1) - 90)) / 360;
|
fabs(RAD2DEG(VecAngle2(edgeVec4, edgeVec1)) - 90)) / 360;
|
||||||
if(!diff) return 0.0;
|
if(!diff) return 0.0;
|
||||||
|
|
||||||
measure += diff;
|
measure += diff;
|
||||||
|
@ -1991,29 +1991,29 @@ static void draw_em_measure_stats(View3D *v3d, RegionView3D *rv3d, Object *ob, E
|
|||||||
|
|
||||||
if( (e4->f & e1->f & SELECT) || (G.moving && (efa->v1->f & SELECT)) ) {
|
if( (e4->f & e1->f & SELECT) || (G.moving && (efa->v1->f & SELECT)) ) {
|
||||||
/* Vec 1 */
|
/* Vec 1 */
|
||||||
sprintf(val,"%.3f", VecAngle3(v4, v1, v2));
|
sprintf(val,"%.3f", RAD2DEG(VecAngle3(v4, v1, v2)));
|
||||||
VecLerpf(fvec, efa->cent, efa->v1->co, 0.8f);
|
VecLerpf(fvec, efa->cent, efa->v1->co, 0.8f);
|
||||||
view3d_object_text_draw_add(efa->cent[0], efa->cent[1], efa->cent[2], val, 0);
|
view3d_object_text_draw_add(efa->cent[0], efa->cent[1], efa->cent[2], val, 0);
|
||||||
}
|
}
|
||||||
if( (e1->f & e2->f & SELECT) || (G.moving && (efa->v2->f & SELECT)) ) {
|
if( (e1->f & e2->f & SELECT) || (G.moving && (efa->v2->f & SELECT)) ) {
|
||||||
/* Vec 2 */
|
/* Vec 2 */
|
||||||
sprintf(val,"%.3f", VecAngle3(v1, v2, v3));
|
sprintf(val,"%.3f", RAD2DEG(VecAngle3(v1, v2, v3)));
|
||||||
VecLerpf(fvec, efa->cent, efa->v2->co, 0.8f);
|
VecLerpf(fvec, efa->cent, efa->v2->co, 0.8f);
|
||||||
view3d_object_text_draw_add(fvec[0], fvec[1], fvec[2], val, 0);
|
view3d_object_text_draw_add(fvec[0], fvec[1], fvec[2], val, 0);
|
||||||
}
|
}
|
||||||
if( (e2->f & e3->f & SELECT) || (G.moving && (efa->v3->f & SELECT)) ) {
|
if( (e2->f & e3->f & SELECT) || (G.moving && (efa->v3->f & SELECT)) ) {
|
||||||
/* Vec 3 */
|
/* Vec 3 */
|
||||||
if(efa->v4)
|
if(efa->v4)
|
||||||
sprintf(val,"%.3f", VecAngle3(v2, v3, v4));
|
sprintf(val,"%.3f", RAD2DEG(VecAngle3(v2, v3, v4)));
|
||||||
else
|
else
|
||||||
sprintf(val,"%.3f", VecAngle3(v2, v3, v1));
|
sprintf(val,"%.3f", RAD2DEG(VecAngle3(v2, v3, v1)));
|
||||||
VecLerpf(fvec, efa->cent, efa->v3->co, 0.8f);
|
VecLerpf(fvec, efa->cent, efa->v3->co, 0.8f);
|
||||||
view3d_object_text_draw_add(fvec[0], fvec[1], fvec[2], val, 0);
|
view3d_object_text_draw_add(fvec[0], fvec[1], fvec[2], val, 0);
|
||||||
}
|
}
|
||||||
/* Vec 4 */
|
/* Vec 4 */
|
||||||
if(efa->v4) {
|
if(efa->v4) {
|
||||||
if( (e3->f & e4->f & SELECT) || (G.moving && (efa->v4->f & SELECT)) ) {
|
if( (e3->f & e4->f & SELECT) || (G.moving && (efa->v4->f & SELECT)) ) {
|
||||||
sprintf(val,"%.3f", VecAngle3(v3, v4, v1));
|
sprintf(val,"%.3f", RAD2DEG(VecAngle3(v3, v4, v1)));
|
||||||
VecLerpf(fvec, efa->cent, efa->v4->co, 0.8f);
|
VecLerpf(fvec, efa->cent, efa->v4->co, 0.8f);
|
||||||
view3d_object_text_draw_add(fvec[0], fvec[1], fvec[2], val, 0);
|
view3d_object_text_draw_add(fvec[0], fvec[1], fvec[2], val, 0);
|
||||||
}
|
}
|
||||||
|
@ -251,17 +251,17 @@ static void draw_uvs_stretch(SpaceImage *sima, Scene *scene, EditMesh *em, MTFac
|
|||||||
if(efa->v4) {
|
if(efa->v4) {
|
||||||
|
|
||||||
#if 0 /* Simple but slow, better reuse normalized vectors */
|
#if 0 /* Simple but slow, better reuse normalized vectors */
|
||||||
uvang1 = VecAngle3_2D(tf_uv[3], tf_uv[0], tf_uv[1]);
|
uvang1 = RAD2DEG(Vec2Angle3(tf_uv[3], tf_uv[0], tf_uv[1]));
|
||||||
ang1 = VecAngle3(efa->v4->co, efa->v1->co, efa->v2->co);
|
ang1 = RAD2DEG(VecAngle3(efa->v4->co, efa->v1->co, efa->v2->co));
|
||||||
|
|
||||||
uvang2 = VecAngle3_2D(tf_uv[0], tf_uv[1], tf_uv[2]);
|
uvang2 = RAD2DEG(Vec2Angle3(tf_uv[0], tf_uv[1], tf_uv[2]));
|
||||||
ang2 = VecAngle3(efa->v1->co, efa->v2->co, efa->v3->co);
|
ang2 = RAD2DEG(VecAngle3(efa->v1->co, efa->v2->co, efa->v3->co));
|
||||||
|
|
||||||
uvang3 = VecAngle3_2D(tf_uv[1], tf_uv[2], tf_uv[3]);
|
uvang3 = RAD2DEG(Vec2Angle3(tf_uv[1], tf_uv[2], tf_uv[3]));
|
||||||
ang3 = VecAngle3(efa->v2->co, efa->v3->co, efa->v4->co);
|
ang3 = RAD2DEG(VecAngle3(efa->v2->co, efa->v3->co, efa->v4->co));
|
||||||
|
|
||||||
uvang4 = VecAngle3_2D(tf_uv[2], tf_uv[3], tf_uv[0]);
|
uvang4 = RAD2DEG(Vec2Angle3(tf_uv[2], tf_uv[3], tf_uv[0]));
|
||||||
ang4 = VecAngle3(efa->v3->co, efa->v4->co, efa->v1->co);
|
ang4 = RAD2DEG(VecAngle3(efa->v3->co, efa->v4->co, efa->v1->co));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* uv angles */
|
/* uv angles */
|
||||||
@ -315,14 +315,14 @@ static void draw_uvs_stretch(SpaceImage *sima, Scene *scene, EditMesh *em, MTFac
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
#if 0 /* Simple but slow, better reuse normalized vectors */
|
#if 0 /* Simple but slow, better reuse normalized vectors */
|
||||||
uvang1 = VecAngle3_2D(tf_uv[2], tf_uv[0], tf_uv[1]);
|
uvang1 = RAD2DEG(Vec2Angle3(tf_uv[2], tf_uv[0], tf_uv[1]));
|
||||||
ang1 = VecAngle3(efa->v3->co, efa->v1->co, efa->v2->co);
|
ang1 = RAD2DEG(VecAngle3(efa->v3->co, efa->v1->co, efa->v2->co));
|
||||||
|
|
||||||
uvang2 = VecAngle3_2D(tf_uv[0], tf_uv[1], tf_uv[2]);
|
uvang2 = RAD2DEG(Vec2Angle3(tf_uv[0], tf_uv[1], tf_uv[2]));
|
||||||
ang2 = VecAngle3(efa->v1->co, efa->v2->co, efa->v3->co);
|
ang2 = RAD2DEG(VecAngle3(efa->v1->co, efa->v2->co, efa->v3->co));
|
||||||
|
|
||||||
uvang3 = 180-(uvang1+uvang2);
|
uvang3 = M_PI-(uvang1+uvang2);
|
||||||
ang3 = 180-(ang1+ang2);
|
ang3 = M_PI-(ang1+ang2);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* uv angles */
|
/* uv angles */
|
||||||
|
Loading…
Reference in New Issue
Block a user