How do you create a rotation matrix that will represent a rotation of angle theta about a vector (x,y,z)?

This is instead of rotating about an axis.

To create a rotation matrix that represents a rotation of an angle θ about a vector (x, y, z), you can follow these steps:

1. Normalize the vector (x, y, z) to get a unit vector. This can be done by dividing each component of the vector by its magnitude:
magnitude = sqrt(x^2 + y^2 + z^2)
x = x / magnitude
y = y / magnitude
z = z / magnitude

2. Create a skew-symmetric cross-product matrix using the normalized vector (x, y, z):
0 -z y
z 0 -x
-y x 0

3. Calculate the cosine and sine of the rotation angle θ:
cosθ = cos(θ)
sinθ = sin(θ)

4. Create an identity matrix (3x3), and subtract the cross-product matrix multiplied by sinθ from it:
R = I - sinθ * cross-product matrix

5. Multiply the cross-product matrix by itself, and multiply it by (1 - cosθ):
cross-product matrix squared = cross-product matrix * cross-product matrix
cross-product matrix scaled = (1 - cosθ) * cross-product matrix squared

6. Add the scaled cross-product matrix to the matrix R:
R = R + cross-product matrix scaled

The resulting matrix R is the rotation matrix that represents a rotation of angle θ about the vector (x, y, z).