Module: Snow
- Defined in:
- lib/snow-math/version.rb,
lib/snow-math/ptr.rb,
lib/snow-math/mat3.rb,
lib/snow-math/mat4.rb,
lib/snow-math/quat.rb,
lib/snow-math/to_a.rb,
lib/snow-math/vec2.rb,
lib/snow-math/vec3.rb,
lib/snow-math/vec4.rb,
lib/snow-math/inspect.rb,
lib/snow-math/marshal.rb,
lib/snow-math/marshal.rb,
lib/snow-math/swizzle.rb,
lib/snow-math/swizzle.rb,
ext/snow-math/snow-math.c
Overview
This file is part of ruby-snowmath. Copyright © 2013 Noel Raymond Cower. All rights reserved. See COPYING for license details.
Defined Under Namespace
Modules: ArrayMarshalSupport, ArraySupport, BaseMarshalSupport, FiddlePointerSupport, InspectSupport, SwizzleSupport Classes: Mat3, Mat3Array, Mat4, Mat4Array, Quat, QuatArray, Vec2, Vec2Array, Vec3, Vec3Array, Vec4, Vec4Array
Constant Summary collapse
- SNOW_MATH_VERSION =
snow-math bindings version string.
'1.7.0'
- SNOW_MATH_FLOAT_SIZE =
INT2FIX(sizeof(s_float_t))
- SNOW_MATH_DEFAULT_FLOAT_EPSILON =
DBL2NUM(S_FLOAT_EPSILON)
- DEGREES_TO_RADIANS =
DBL2NUM(S_DEG2RAD)
- RADIANS_TO_DEGREES =
DBL2NUM(S_RAD2DEG)
Class Method Summary collapse
-
.float_epsilon ⇒ Float
Gets the float epsilon for snow-math types.
-
.float_epsilon=(value) ⇒ Object
Sets the float epsilon for snow-math types.
Class Method Details
.float_epsilon ⇒ Float
Gets the float epsilon for snow-math types. By default, this is 1e-9 for double-precision floats and 1e-6 for single-precision floats.
6755 6756 6757 6758 |
# File 'ext/snow-math/snow-math.c', line 6755
static VALUE sm_get_float_epsilon(VALUE sm_self)
{
return DBL2NUM(S_FLOAT_EPSILON);
}
|
.float_epsilon=(value) ⇒ Object
Sets the float epsilon for snow-math types. If snow-math is compiled to use single-precision floats, changing the epsilon for floats may cause the assigned value to lose precision itself in the cast, resulting in a subtly different epsilon than intended, as Ruby uses double-precision floats, which may lead you to think you’re setting the epsilon to one value when it’s another similar by not equal value.
Just be aware of what you’re doing and the type of float you’ve compiled snow-math to use.
6776 6777 6778 6779 6780 6781 6782 6783 6784 6785 6786 6787 6788 6789 6790 6791 6792 6793 6794 6795 6796 6797 6798 6799 6800 6801 6802 6803 6804 |
# File 'ext/snow-math/snow-math.c', line 6776
static VALUE sm_set_float_epsilon(VALUE sm_self, VALUE sm_value)
{
switch (TYPE(sm_value)) {
case T_FLOAT:
case T_FIXNUM:
case T_BIGNUM:
case T_RATIONAL:
case T_COMPLEX: {
S_FLOAT_EPSILON = (s_float_t)NUM2DBL(sm_value);
break;
}
default: {
VALUE sm_value_s = rb_any_to_s(sm_value);
if (0) {
case T_STRING:
sm_value_s = sm_value;
}
S_FLOAT_EPSILON =
#ifdef USE_FLOAT
strtof(StringValueCStr(sm_value_s), NULL)
#else
strtod(StringValueCStr(sm_value_s), NULL)
#endif
;
break;
}
} /* switch (TYPE(sm_value)) */
return sm_value;
}
|