Компьютерная графика, мультимедиа и игры на Visual C#


         

Глава Изображение и управление трехмерными объектами в трехмерном пространстве - часть 4


    DesigningLine(1, -1, -1, -1, -1, -1);

    DesigningLine(-1, -1, 1, -1, 1, 1);

    DesigningLine(-1, 1, 1, 1, 1, 1);

    DesigningLine(1, 1, 1, 1, -1, 1);

    DesigningLine(1, -1, 1, -1, -1, 1);

    DesigningLine(-1, -1, -1, -1, -1, 1);

    DesigningLine(-1, 1, -1, -1, 1, 1);

    DesigningLine(1, 1, -1, 1, 1, 1);

    DesigningLine(1, -1, -1, 1, -1, 1);

    //Октаэдр (Octahedron):

    Octahedron = NumLines + 1;

    DesigningLine(0, 1, 0, 1, 0, 0);

    DesigningLine(0, 1, 0, -1, 0, 0);

    DesigningLine(0, 1, 0, 0, 0, 1);

    DesigningLine(0, 1, 0, 0, 0, -1);

    DesigningLine(0, -1, 0, 1, 0, 0);

    DesigningLine(0, -1, 0, -1, 0, 0);

    DesigningLine(0, -1, 0, 0, 0, 1);

    DesigningLine(0, -1, 0, 0, 0, -1);

    DesigningLine(0, 0, 1, 1, 0, 0);

    DesigningLine(0, 0, 1, -1, 0, 0);

    DesigningLine(0, 0, -1, 1, 0, 0);

    DesigningLine(0, 0, -1, -1, 0, 0);

    //ДОдекаэдр (Dodecahedron):

    Dodecahedron = NumLines + 1;

    theta1 = (float)(pi * 0.4); theta2 = (float)(pi * 0.8);

    s1 = (float)Math.Sin(theta1);

    c1 = (float)Math.Cos(theta1);

    s2 = (float)Math.Sin(theta2);

    c2 = (float)Math.Cos(theta2);

    M = 1 - (2 - 2 * c1 - 4 * s1 * s1) / (2 * c1 - 2);

    N = (float)Math.Sqrt((2 - 2 * c1) - M * M) *

    (1 + (1 - c2) / (c1 - c2)); R = 2 / N;

    S = (float)(R * Math.Sqrt(2 - 2 * c1));

    A = R * s1; B = R * s2; C = R * c1; D = R * c2;

    H = R * (c1 - s1);

    X = (R * R * (2 - 2 * c1) - 4 * A * A) /

    (2 * C - 2 * R);

    Y = (float)Math.Sqrt(S * S - (R - X) * (R - X));

    y2 = Y * (1 - c2) / (c1 - c2);

    DesigningLine(R, 1, 0, C, 1, A);

    DesigningLine(C, 1, A, D, 1, B);

    DesigningLine(D, 1, B, D, 1, -B);

    DesigningLine(D, 1, -B, C, 1, -A);

    DesigningLine(C, 1, -A, R, 1, 0);

    DesigningLine(R, 1, 0, X, 1 - Y, 0);

    DesigningLine(C, 1, A, X * c1, 1 - Y, X * s1);

    DesigningLine(C, 1, -A, X * c1, 1 - Y, -X * s1);

    DesigningLine(D, 1, B, X * c2, 1 - Y, X * s2);

    DesigningLine(D, 1, -B, X * c2, 1 - Y, -X * s2);




Содержание  Назад  Вперед