FUNCTION equal_cregion_pregion
(* SCHEMA Ap242_managed_model_based_3d_engineering_mim_LF; *)
FUNCTION equal_cregion_pregion(crgn : cartesian_complex_number_region;
prgn : polar_complex_number_region) : LOGICAL;
LOCAL
arng, amin, xc, yc : REAL;
aitv, xitv, yitv : real_interval;
c_in : BOOLEAN;
END_LOCAL;
IF NOT EXISTS (crgn) OR NOT EXISTS (prgn) THEN RETURN (FALSE); END_IF;
IF max_exists(prgn.distance_constraint) THEN RETURN (FALSE); END_IF;
IF real_min(prgn.distance_constraint) <> 0.0 THEN RETURN (FALSE); END_IF;
c_in := min_included(prgn.distance_constraint);
aitv := prgn.direction_constraint;
amin := aitv.min;
arng := aitv.max - amin;
xc := prgn.centre.real_part;
yc := prgn.centre.imag_part;
xitv := crgn.real_constraint;
yitv := crgn.imag_constraint;
IF arng = 0.5*PI THEN
IF amin = 0.0 THEN -- quadrant to upper right
RETURN (NOT max_exists(xitv) AND NOT max_exists(yitv) AND min_exists(xitv)
AND min_exists(yitv) AND (real_min(xitv) = xc) AND (real_min(yitv) = yc)
AND ((c_in AND min_included(aitv) AND max_included(aitv)
AND min_included(xitv) AND min_included(yitv))
OR (NOT c_in AND NOT min_included(aitv) AND max_included(aitv)
AND min_included(xitv) AND NOT min_included(yitv))
OR (NOT c_in AND min_included(aitv) AND NOT max_included(aitv)
AND NOT min_included(xitv) AND min_included(yitv))
OR (NOT c_in AND NOT min_included(aitv) AND NOT max_included(aitv)
AND NOT min_included(xitv) AND NOT min_included(yitv))));
END_IF;
IF amin = 0.5*PI THEN -- quadrant to upper left
RETURN (max_exists(xitv) AND NOT max_exists(yitv) AND NOT min_exists(xitv)
AND min_exists(yitv) AND (real_max(xitv) = xc) AND (real_min(yitv) = yc)
AND ((c_in AND min_included(aitv) AND max_included(aitv)
AND max_included(xitv) AND min_included(yitv))
OR (NOT c_in AND NOT min_included(aitv) AND max_included(aitv)
AND max_included(xitv) AND NOT min_included(yitv))
OR (NOT c_in AND min_included(aitv) AND NOT max_included(aitv)
AND NOT max_included(xitv) AND min_included(yitv))
OR (NOT c_in AND NOT min_included(aitv) AND NOT max_included(aitv)
AND NOT max_included(xitv) AND NOT min_included(yitv))));
END_IF;
IF amin = -PI THEN -- quadrant to lower left
RETURN (max_exists(xitv) AND max_exists(yitv) AND NOT min_exists(xitv)
AND NOT min_exists(yitv) AND (real_max(xitv) = xc) AND (real_max(yitv) = yc)
AND ((c_in AND min_included(aitv) AND max_included(aitv)
AND max_included(xitv) AND max_included(yitv))
OR (NOT c_in AND NOT min_included(aitv) AND max_included(aitv)
AND max_included(xitv) AND NOT max_included(yitv))
OR (NOT c_in AND min_included(aitv) AND NOT max_included(aitv)
AND NOT max_included(xitv) AND max_included(yitv))
OR (NOT c_in AND NOT min_included(aitv) AND NOT max_included(aitv)
AND NOT max_included(xitv) AND NOT max_included(yitv))));
END_IF;
IF amin = -0.5*PI THEN -- quadrant to lower right
RETURN (NOT max_exists(xitv) AND max_exists(yitv) AND min_exists(xitv)
AND NOT min_exists(yitv) AND (real_min(xitv) = xc) AND (real_max(yitv) = yc)
AND ((c_in AND min_included(aitv) AND max_included(aitv)
AND min_included(xitv) AND max_included(yitv))
OR (NOT c_in AND NOT min_included(aitv) AND max_included(aitv)
AND min_included(xitv) AND NOT max_included(yitv))
OR (NOT c_in AND min_included(aitv) AND NOT max_included(aitv)
AND NOT min_included(xitv) AND max_included(yitv))
OR (NOT c_in AND NOT min_included(aitv) AND NOT max_included(aitv)
AND NOT min_included(xitv) AND NOT max_included(yitv))));
END_IF;
END_IF;
IF arng = PI THEN
IF amin = 0.0 THEN -- upper half space
RETURN (NOT max_exists(xitv) AND NOT max_exists(yitv) AND NOT min_exists(xitv)
AND min_exists(yitv) AND (real_min(yitv) = yc)
AND ((c_in AND min_included(aitv) AND max_included(aitv)
AND min_included(yitv))
OR (NOT c_in AND NOT min_included(aitv) AND NOT max_included(aitv)
AND NOT min_included(yitv))));
END_IF;
IF amin = 0.5*PI THEN -- left half space
RETURN (max_exists(xitv) AND NOT max_exists(yitv) AND NOT min_exists(xitv)
AND NOT min_exists(yitv) AND (real_max(xitv) = xc)
AND ((c_in AND min_included(aitv) AND max_included(aitv)
AND max_included(xitv))
OR (NOT c_in AND NOT min_included(aitv) AND NOT max_included(aitv)
AND NOT max_included(xitv))));
END_IF;
IF amin = -PI THEN -- lower half space
RETURN (NOT max_exists(xitv) AND max_exists(yitv) AND NOT min_exists(xitv)
AND NOT min_exists(yitv) AND (real_max(yitv) = yc)
AND ((c_in AND min_included(aitv) AND max_included(aitv)
AND max_included(yitv))
OR (NOT c_in AND NOT min_included(aitv) AND NOT max_included(aitv)
AND NOT max_included(yitv))));
END_IF;
IF amin = -0.5*PI THEN -- right half space
RETURN (NOT max_exists(xitv) AND NOT max_exists(yitv) AND min_exists(xitv)
AND NOT min_exists(yitv) AND (real_min(xitv) = xc)
AND ((c_in AND min_included(aitv) AND max_included(aitv)
AND min_included(xitv))
OR (NOT c_in AND NOT min_included(aitv) AND NOT max_included(aitv)
AND NOT min_included(xitv))));
END_IF;
END_IF;
RETURN (FALSE);
END_FUNCTION; -- equal_cregion_pregion
Referenced By
Defintion equal_cregion_pregion is references by the following definitions:
[Top Level Definitions] [Exit]Generated by STEP Tools® EXPRESS to HTML Converter
2012-03-27T17:20:10-04:00