2011-12-09

Torus - mapowanie wypukłości

Procedura jest bardzo podobna do tej dla sfery. Wektor X może się wyzerować jeśli r>R i Pos znajduje się w dołku. Możemy taki punkt dla przyjętego mapowania nazwać osobliwym i nie przejmować się mapowaniem w nim.

public override void GetTangents(
    Intersection a_intersection, out Vector3 a_tangent_x,
    out Vector3 a_tangent_y)
{
    a_tangent_x = Vector3.CrossProduct(Up, a_intersection.Pos).Normalized;

    if (a_intersection.BackHit)
    {
        a_tangent_y = Vector3.CrossProduct(a_intersection.Normal, 
            a_tangent_x).Normalized;
    }
    else
    {
        a_tangent_y = Vector3.CrossProduct(a_tangent_x, 
            a_intersection.Normal).Normalized;
    }
}

Brak komentarzy:

Prześlij komentarz