A struct to describe a left-handed axis tripod of three orthonormalized vectors
Exemplo n.º 1
0
    /*
     * Create an axis tripod from a supplied forward- and up-axis
     * */
    public static AxisTripod AxisTripodFromForwardUp(Vector3 forward, Vector3 up)
    {
        AxisTripod tripod = new AxisTripod();
        Quaternion q      = Quaternion.LookRotation(forward, up);

        tripod.forward = q * Vector3.forward;
        tripod.up      = q * Vector3.up;
        tripod.right   = q * Vector3.right;
        return(tripod);
    }
Exemplo n.º 2
0
    /*
     * Create an axis tripod from a supplied up-vector
     * */
    public static AxisTripod AxisTripodFromUp(Vector3 up)
    {
        AxisTripod tripod = new AxisTripod();

        tripod.up    = up.normalized;
        tripod.right = Vector3.right;
        float dot = Vector3.Dot(tripod.up, tripod.right);

        if (dot == 1f)
        {
            tripod.right = Vector3.forward;
        }
        else if (dot == -1f)
        {
            tripod.right = Vector3.back;
        }
        tripod.forward = Vector3.Cross(tripod.right, tripod.up).normalized;
        tripod.right   = Vector3.Cross(tripod.up, tripod.forward);
        return(tripod);
    }
Exemplo n.º 3
0
	/*
	 * Create an axis tripod from a supplied forward- and up-axis
	 * */
	public static AxisTripod AxisTripodFromForwardUp(Vector3 forward, Vector3 up)
	{
		AxisTripod tripod = new AxisTripod();
		Quaternion q = Quaternion.LookRotation(forward, up);
		tripod.forward = q*Vector3.forward;
		tripod.up = q*Vector3.up;
		tripod.right = q*Vector3.right;
		return tripod;
	}
Exemplo n.º 4
0
	/*
	 * Create an axis tripod from a supplied up-vector
	 * */
	public static AxisTripod AxisTripodFromUp(Vector3 up)
	{
		AxisTripod tripod = new AxisTripod();
		tripod.up = up.normalized;
		tripod.right = Vector3.right;
		float dot = Vector3.Dot(tripod.up, tripod.right);
		if (dot==1f) tripod.right = Vector3.forward;
		else if (dot==-1f) tripod.right = Vector3.back;
		tripod.forward = Vector3.Cross(tripod.right, tripod.up).normalized;
		tripod.right = Vector3.Cross(tripod.up, tripod.forward);
		return tripod;
	}