v->x = -v->x;
v->y = -v->y;
}
+// test if one component of float vector is nan
+inline bool vec2_isnan (vec2 v){
+ return (bool)(isnanf (v.x) || isnanf (v.y));
+}
+// test if one component of double vector is nan
+inline bool vec2d_isnan (vec2d v){
+ return (bool)(isnan (v.x) || isnan (v.y));
+}
vec2 vec2_mult (vec2 a, float m);
bool vec2_equ (vec2 a, vec2 b);
vec2 vec2_line_norm (vec2 a, vec2 b);
+bool vec2_isnan (vec2 v);
double vec2d_length(vec2d v);
vec2d vec2d_norm (vec2d a);
vec2d vec2d_sub (vec2d a, vec2d b);
vec2d vec2d_mult (vec2d a, double m);
vec2d vec2d_line_norm(vec2d a, vec2d b);
+bool vec2d_isnan (vec2d v);
vec2 vec2d_to_vec2(vec2d vd);
void vec2_inv (vec2* v);
}
float _build_vb_step (vkvg_context* ctx, Vertex v, float hw, uint32_t iL, uint32_t i, uint32_t iR, bool isCurve){
+ //if two of the three points are equal, normal is null
vec2 v0n = vec2_line_norm(ctx->points[iL], ctx->points[i]);
+ if (vec2_isnan(v0n))
+ return 0;
vec2 v1n = vec2_line_norm(ctx->points[i], ctx->points[iR]);
+ if (vec2_isnan(v1n))
+ return 0;
vec2 bisec = vec2_norm(vec2_add(v0n,v1n));