Changeset 13425 for trunk/psLib/src/math/psEllipse.c
- Timestamp:
- May 18, 2007, 4:06:09 AM (19 years ago)
- File:
-
- 1 edited
-
trunk/psLib/src/math/psEllipse.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/math/psEllipse.c
r13076 r13425 46 46 47 47 // ellipse rotation (major, minor, theta) -> (x2, y2, xy) 48 psEllipseAxes psEllipsePolToAxes(psEllipsePol pol, float minMinorAxis) 48 psErrorCode psEllipsePolToAxes(const psEllipsePol pol, 49 const float minMinorAxis, 50 psEllipseAxes *axes) 49 51 { 50 psEllipseAxes axes;52 axes->theta = +0.5 * atan2 (pol.e2, pol.e1); // theta in radians 51 53 52 axes.theta = +0.5 * atan2 (pol.e2, pol.e1); // theta in radians 53 54 double cs = cos(2*axes.theta); 55 double sn = sin(2*axes.theta); 54 double cs = cos(2*axes->theta); 55 double sn = sin(2*axes->theta); 56 56 double ds = 0; 57 57 … … 64 64 float LIMIT = PS_SQR(minMinorAxis); 65 65 if (2.0*(pol.e0 - ds) < LIMIT) { 66 axes .major = sqrt(pol.e0 - LIMIT);67 axes .minor = sqrt(LIMIT);66 axes->major = sqrt(pol.e0 - LIMIT); 67 axes->minor = sqrt(LIMIT); 68 68 } else { 69 axes .major = sqrt(0.5*(pol.e0 + ds));70 axes .minor = sqrt(0.5*(pol.e0 - ds));69 axes->major = sqrt(0.5*(pol.e0 + ds)); 70 axes->minor = sqrt(0.5*(pol.e0 - ds)); 71 71 } 72 72 73 assert (isfinite(axes.major));74 assert (isfinite(axes.minor));75 assert (isfinite(axes.theta));73 if (!isfinite(axes->major) || !isfinite(axes->minor) || !isfinite(axes->theta)) { 74 return psError(PS_ERR_BAD_PARAMETER_VALUE, true, "Shape of object is NaN"); 75 } 76 76 77 return axes;77 return PS_ERR_NONE; 78 78 } 79 79
Note:
See TracChangeset
for help on using the changeset viewer.
