Now that we have the logical primitives, we can operate on them to produce other logical primitives. An operator is a function that given zero or more primitives as input, produces one or more primitives as output. This is syntactically represented in the following form:
<data_namespace:operator_name> <!-- One or more emergent primitives that are newly declared --> <dialog:emergent_primitives> <data_namespace:type_name id='label'/> </dialog:emergent_primitives> <!-- Zero or more input primitives that have already been declared --> <data_namespace:type_name ref='label'/> ... </data_namespace:operator_name>
For example, the syntax for applying the binary intersection operator to the fluid surface ul_abcd
and the
Euclidean plane surface ul_abcdo
to yield the curve abcd
takes this form:
<tlg1799.tlg001:intersection> <dialog:emergent_primitives> <tlg0552.tlg008:curve id='abcd'/> <dialog:emergent_primitives> <tlg0552.tlg008:fluid_surface ref='ul_abcd'/> <tlg1799.tlg001:plane_surface ref='ul_abcdo'/> </tlg1799.tlg001:intersection>