public void Rotate(Line3 pLine, float radians)
{
var vector = (pLine.Point2 - pLine.Point1).NormalizeSafe();
Position -= pLine.Point1;
LookAtPosition -= pLine.Point1;
UpPosition -= pLine.Point1;
Position = Position.RotateAround(vector, radians);
LookAtPosition = LookAtPosition.RotateAround(vector, radians);
UpPosition = UpPosition.RotateAround(vector, radians);
Position += pLine.Point1;
LookAtPosition += pLine.Point1;
UpPosition += pLine.Point1;
}