storing quaternion animations

hello
currently i’m coding a COLLADA exporter, which exports some 3d-models, which are animated using 3d-vector translation and quaternion rotation

as i’ve figured out, the code will look like this:


<library_animations>

	<animation id="animation">

		<source id="timing">

			<float-array id="timing_array" count="2">
				0.0 1.0
			</float-array>

			<technique_common>

				<accessor source="#timing_array" count="2" stride="1">
					<param name="TIME" type="float"/>
				</accessor>

			</technique_common>

		</source>


		<source id="transformations">

			<float_array id="transformations_array" count="32">
				1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1
				2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2
			</float_array>

			<technique_common>

				<accessor source="#transformations_array" count="2" stride="16">
					<param name="(0)(0)" type="float4x4"/>
				</accessor>

			</technique_common>

		</source>

		<source id="interpolations">

			<Name_array id="interpolations_array" count="2">LINEAR LINEAR</Name_array>

			<technique_common>

				<accessor source="#interpolations_array" count="2" stride="1">
					<param name="INTERPOLATION" type="Name"/>
				</accessor>

			</technique_common>

		</source>

		<sampler id="sampler">
			<input semantic="INPUT" source="#timing"/>
			<input semantic="OUTPUT" source="#transformations"/>
			<input semantic="INTERPOLATION" source="#interpolations"/>
		</sampler>

		<channel source="#sampler" target="#3d-object-node/transformation"/>

	</animation>

</library_animations>


// scene


<library_visual_scenes>

	<visual_scene id="scene" name="scene">

		<node id="3d-object-node" name="3d-object-node" type="NODE">

			<matrix sid="transformation">1 0 0 0  0 1 0 0  0 0 1 0  0 0 0 1</matrix>

			<instance_geometry> ... </instance_geometry>

		</node>

	</visual_scene>

</library_visual_scenes>


// also here i’ve omitted interpolation, intangents and outtangents - what do they mean? can anybody explain me?

so i can output animation transformations as OpenGL matrices
but what if what i’m aiming for is to separate translation from quaternion rotation in the output file?
can i specify not 16D “float4x4” but some types for 3D translation vector and 4D quaternion?