You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: dihedralAngle.m
    path of file: ./repos/matGeom/matGeom/geom3d
    
    the code of the file until where you have to start completion: function theta = dihedralAngle(plane1, plane2)
%DIHEDRALANGLE Compute dihedral angle between 2 planes.
%
%   THETA = dihedralAngle(PLANE1, PLANE2)
%   PLANE1 and PLANE2 are plane representations given in the following
%   format:
%   [x0 y0 z0 dx1 dy1 dz1 dx2 dy2 dz2]
%   THETA is the angle between the two vectors given by plane normals,
%   given between 0 and PI.
%
%   References
%   http://en.wikipedia.org/wiki/Dihedral_angle
%   http://mathworld.wolfram.com/DihedralAngle.html
%
%   See also 
%   planes3d, lines3d, angles3d, planesBisector

% ------
% Author: David Legland 

    
function theta = dihedralAngle(plane1, plane2)
%DIHEDRALANGLE Compute dihedral angle between 2 planes.
%
%   THETA = dihedralAngle(PLANE1, PLANE2)
%   PLANE1 and PLANE2 are plane representations given in the following
%   format:
%   [x0 y0 z0 dx1 dy1 dz1 dx2 dy2 dz2]
%   THETA is the angle between the two vectors given by plane normals,
%   given between 0 and PI.
%
%   References
%   http://en.wikipedia.org/wiki/Dihedral_angle
%   http://mathworld.wolfram.com/DihedralAngle.html
%
%   See also 
%   planes3d, lines3d, angles3d, planesBisector

% ------
% Author: David Legland 
% E-mail: david.legland@inrae.fr
% Created: 2005-02-21
% Copyright 2005-2023 INRA - TPV URPOI - BIA IMASTE

% compute plane normals
v1 = planeNormal(plane1);
v2 = planeNormal(plane2);

% number of vectors
n1 = size(v1, 1);
n2 = size(v2, 1);

% ensures vectors have same dimension
if n1 ~= n2
    if n1 == 1
        v1 = repmat(v1, [n2 1]);
    elseif n2 == 1
        v2 = repmat(v2, [n1 1]);
    else
        error('Arguments V1 and V2 must have the same size');
    end