12 if (val <
epsilon)
return false;
13 (*this) = (*this)/val;
34 const real cos_angle = (
inner(*
this, vv))/ll;
35 const real cos_tol = cos(angle_tolerance);
36 if ( cos_angle >= cos_tol )
38 else if ( cos_angle <= -cos_tol )
55 if ( fabs(
inner(*
this, vv)/ll) <= sin(angle_tolerance) )
69 return (
v[0] != 0.0 ||
v[1] != 0.0) ? true :
false;
84 fprintf(fp,
"(%lg", v[0]);
85 for(
int i = 1; i < 2;++i){
86 fprintf(fp,
" %lg", v[i]);
93 int a = fscanf(fp,
" (");
94 for(
int i = 0; i < 2;++i){
95 a += fscanf(fp,
" %lg", &v[i]);
97 a += fscanf(fp,
" )");
105 for (
int i = 0 ; i < 2 ;++i){
116 for (
int i = 0 ; i < 2 ;++i){
132 if (val <
epsilon)
return false;
133 (*this) = (*this)/val;
154 const real cos_angle = (
inner(*
this, vv))/ll;
155 const real cos_tol = cos(angle_tolerance);
156 if ( cos_angle >= cos_tol )
158 else if ( cos_angle <= -cos_tol )
188 if ( fabs(vv[1]) > fabs(vv[0]) ) {
189 if ( fabs(vv[2]) > fabs(vv[1]) ) {
196 else if ( fabs(vv[2]) >= fabs(vv[0]) ){
212 else if ( fabs(vv[2]) > fabs(vv[0]) ) {
220 else if ( fabs(vv[2]) > fabs(vv[1]) ) {
240 return (a != 0.0) ? true :
false;
249 vec3 V0, V1, V2, N0, N1, N2;
251 v[0] =
v[1] =
v[2] = 0.0;
257 N0 =
cross( V1, V2 );
262 N1 =
cross( V2, V0 );
267 N2 =
cross( V0, V1 );
301 fprintf(fp,
"(%lg", v[0]);
302 for(
int i = 1; i < 3;++i){
303 fprintf(fp,
" %lg", v[i]);
310 int a = fscanf(fp,
" (");
311 for(
int i = 0; i < 3;++i){
312 a += fscanf(fp,
" %lg", &v[i]);
314 a += fscanf(fp,
" )");
322 for (
int i = 0 ; i < 3 ;++i){
333 for (
int i = 0 ; i < 3 ;++i){
348 if (val <
epsilon)
return false;
349 (*this) = (*this)/val;
360 fprintf(fp,
"(%lg", v[0]);
361 for(
int i = 1; i < 4;++i){
362 fprintf(fp,
" %lg", v[i]);
369 int a = fscanf(fp,
" (");
370 for(
int i = 0; i < 4;++i){
371 a += fscanf(fp,
" %lg", &v[i]);
373 a += fscanf(fp,
" )");
381 for (
int i = 0 ; i < 4 ;++i){
392 for (
int i = 0 ; i < 4 ;++i){
403 c(0) = a(0 + 1) * b(0 + 2) - a(0 + 2) * b(0 + 1);
405 c(1) = a(1 + 1) * b(1 + 2) - a(1 + 2) * b(1 + 1);
407 c(2) = a(2 + 1) * b(2 + 2) - a(2 + 2) * b(2 + 1);
int scan(FILE *fp, const vec2 &v)
bool perpendicular(const vec3 &)
real inner(const vec2 &a, const vec2 &b)
structure for 2-dimensional real type vector and its arithmetic.
int is_parallel(const vec2 &, real=angle_tolerance) const
int is_parallel(const vec3 &, real=angle_tolerance) const
structure for 4-dimensional real type vector and its arithmetic.
bool is_perpendicular(const vec3 &, real=angle_tolerance) const
vec3 cross(const vec3 &a, const vec3 &b)
bool perpendicular(const vec2 &)
structure for 3-dimensional real type vector and its arithmetic.
int apx_equal(real x, real y)
void store(FILE *fp, const vec2 &v)
bool is_perpendicular(const vec2 &, real=angle_tolerance) const