I’m trying to learn how COLLADA 1.5 structures BREP data, and I’m curious about the <line> element, which is a child element of <curve>. Each <line> element requires an <origin> and a <direction>, but I don’t see why they’re necessary. The <edge> formed from the <line> already has a starting vertex and an ending vertex, and that should be all that’s needed to determine the line. Am I missing something?

Also, it’s confusing to give the <line> element an <origin> and give the <curve> element an <origin>. The difference is that the <curve> origin identifies the origin of the transformation and the <line> origin identifies the starting point. Is this correct?

the BREP part of COLLADA 1.5.0 divides into two sections: a) description of geomtery and b) description of topology.

The elements curves, surface_curves and surfaces are containers for geometry descriptions. These geometries are generally specified infinite. Therefore, a line is specified with a point (<origin>) and a direction (<direction>). That’s also the mathematical definition of a line.
Besides this, all the curves are normally described in their own coordinate system. But a curve element may be transformed in space. Therefore you need the origin and orient elements of a curve.

The edge is a topological element. It references a curve element for its geometrical representation. And it is limited by two vertices.

It may be a little bit confusing but that’s the way most of the file formats describe a BREP (e.g. STEP, IGES, CATIA V5, …). There is a clear difference between geometry and topology.