ГОСТ Р ИСО 10303-512—2008
FB22: Объект fbsrass должен состоять из двух сплошных тетраэдров, которые соприкасаются в плоскости
ZX. Один из них является копией размером 3/4 другого после отражения на плоскость.
Е.4 Контекст tetrashelljnstance. используемый в тестах многогранной В-rep модели
Приведенный ниже контекст на языке EXPRESS-I используется в контрольных примерах, описанных в разде
ле Е.З. Этот контекст дает возможность определить простой объект closed_shell четырехгранной формы с верши
нами. расположенными в точках (ore, ore. ore), (lx, ore. ore), (ore. ly. ore) и (ore, ore.
12
). Все границы определяются
объектами p o lyjo o p .
*)
CONTEXT tetrashelljnstance ;
PARAMETER
ore: tength_measure := 0;
lx: lengthjneasure :» 100;
ly: length_measure100;
12
: lengthjneasure :■ 100;
origin: cartesian_point :■carteslan_point (’ ongin \ [ore. ore. ore]);
p_x: cartesian_polnt ;=cartesian_pomt (’ p_x[lx. ore. ore]);
p_y: cartesian_pomt ;=cartesian_point (’ p_y \ [ore. ly. ore]);
p
_2
; cartesian_polnt ;=cartesian_pomt (’ p
_2
[ore. ore.
12
));
neg_x : direction ;= direction (’ n e g _ x [-1, 0. 0J).
neg_y : direction ;= direction (’ n e g _ y [0. -1. 0)).
neg
_2
: direction :« direction ( ’ neg
_2
\ [0. 0. -1]);
dslope . direction ;= direction (’ dslope ’.(1.1, 1]).
dperp : direction := direction (* dperp [1,-1.0));
loop_x: poly_loop ;= potyjoop ( ’ loop_x \ [ongin. p_
2
, p_y]);
loop_y; poly_loop := polyjoop ( ’ loop_y". [origin. p_x, p_
2
]);
loop
_2
: poty_loop :* potyjoop ( 1loop_
2
[origin, p_y, p_x]>;
loop_slope : poty_toop ;= potyjoop ( ’ loop_slope ’. [p_
2
. p_x. p_y]).
a1: axis2_placement_3d := axl$2_placement_3d (’ a1 ’. ongin.
negjc, neg_y);
a2: axis2_placement_3d ;= axls2_placement_3d (’ a2 ’, ongin.
neg_y. neg_x);
a3: axls2_placement_3d ;= axls2_placement_3d (’ a3 ’. ongin,
neg_
2
. neg_y);
a4: axis2_placement_3d :* axls2_placement_3d (■84’. p_x. dslope,
dperp);
p
1
: plane ;= plane ( ’ p 1 ’. a1);
p2: plane ;= plane ( ’ p2 ’. a2).
p3: plane :■ plane ( ‘ p3 ’. a3);
p4: plane :■ plane ( ’ p4 ’. a4).
Ы: face_outer_bound := face_outer_bound ( ’ Ы loop_x. TRUE);
Ь2. face_outer_bound ;» <ace_outer_bound (’ b2 ’. loop_y. TRUE).
b3: face_outer_bound ;= face_outer_bound (* b3 loop_
2
. TRUE):
b4. facejruter_bound :■ <ace_outer_bound ( ‘ b4 ’. toop_slope, TRUE);
fs1 ; face_surface :* face_surtace (’ fsl ’, [Ы ]. p i, TRUE): fs2
: face_surface := face_surface (* fs2 ’, [Ь2]. p2, TRUE); fs3 :
face_surface :* face_surtace (* fs3 *, [ЬЗ]. p3. TRUE): <s4 :
face_surface := face_surface (* fs4 [b4], p4. TRUE);
END_PARAMETER:
SCHEMA_OATA tetra_ctxt:
cfs = connectedJace_set {SUBOF(@trl>; cfsjaces ->
<l@ fs1.@ fs2.@ fs3. @ fs4]);
SUPO F(@tetrashet!):};
trl = topologtcal_representation_item (SUBOF(@rl); SUPOF(@cfs):>.
n = representationjtem (name -> ’ tetrashell’;
24