Самоучитель по 3dsmax 7
Букмекерская контора « Париматч»: делать ставки на спорт очень просто Букмекерская контора работает на легальных основаниях, имеет соответствующую лицензию. Первопроходец в онлайн-беттинге, « Париматч» стала принимать ставки в режиме онлайн на спортивные мероприятия еще в 1990-х гг. и быстро обрела успех. С тех времен сайт компании очень изменился, профессиональные беттеры считают его легким, удобным сервисом.
         

Для нее D = A+a*(B-A)+b*(C-A), так как она лежит в грани


Для нее D = A+a*(B-A)+b*(C-A), так как она лежит в грани. D однозначно задается парой (a,b). Для нее координаты текстуры (из того, что текстура накладывается линейно) будут такие:

Du = Au+a*(Bu-Au)+b*(Cu-Au),
Dv = Av+a*(Bv-Av)+b*(Cv-Av).

Пусть проекция D на экран как раз и имеет координаты (sx,sy), тогда для нее выполнены написанные выше соотношения:

i*DZ = Dx*dist,
j*DZ = Dy*dist.

Подставим сюда координаты D, выраженные через координаты A, B и неизвестные коэффициенты a, b:

i*(Az+a*(Bz-Az)+b*(Cz-Az)+dist) = dist*(Ax+a*(Bx-Ax)+b*(Cx-Ax)),
j*(Az+a*(Bz-Az)+b*(Cz-Az)+dist) = dist*(Ay+a*(By-Ay)+b*(Cy-Ay)),

т.к. мы договорились, что AZ = Az+dist, и, кстати, поэтому BZ-AZ = Bz-Az, это можно чуть укоротить:

i*(AZ+a*(BZ-AZ)+b*(CZ-AZ)) = dist*(Ax+a*(Bx-Ax)+b*(Cx-Ax)),
j*(AZ+a*(BZ-AZ)+b*(CZ-AZ)) = dist*(Ay+a*(By-Ay)+b*(Cy-Ay)).

Выделим a и b:

a*(i*(BZ-AZ)-dist*(Bx-Ax))+b*(i*(CZ-AZ)-dist*(Cx-Ax)) = dist*Ax-i*AZ,


a*(j*(BZ-AZ)-dist*(By-Ay))+b*(j*(CZ-AZ)-dist*(Cy-Ay)) = dist*Ay-j*AZ.

Получили систему двух линейных уравнений, из которой можно найти a и b, а по ним немедленно вычисляются u и v. Введем вектор M = BA (Mx = Bx-Ax и т.д.) и вектор N = CA, обозначим d = dist (все это для краткости записи). Тогда эти два уравнения перепишутся в виде:

a*(i*Mz-d*Mx)+b*(i*Nz-d*Nx) = d*Ax-i*AZ,
a*(j*Mz-d*My)+b*(j*Nz-d*Ny) = d*Ay-j*AZ,

и решая систему (например, по формулам Крамера) получаем: (dAx-iAZ)(jNz-dNy)-(dAy-jAZ)(iNz-dNx) a = ------------------------------------- = (iMz-dMx)(jNz-dNy)-(iNz-dNx)(jMz-dMy) djAxNz-ddAxNy-ijAZNz+idAZNy-diAyNz+ddAyNx+ijNzAZ-djAZNx = ------------------------------------------------------- = ijMzNz-idMzNy-djMxNz+ddMxNy-ijMzNz+idNzMy+djNxMz-ddNxMy dj(AxNz-AZNx)+dd(AyNx-AxNy)+id(AZNy-AyNz) = ----------------------------------------- = id(MyNz-MzNy)+dj(NxMz-MxNz)+dd(MxNy-NxMy) i(AZNy-AyNz)+j(AxNz-AZNx)+d(AyNx-AxNy) = -------------------------------------- i(MyNz-MzNy)+j(NxMz-MxNz)+d(MxNy-NxMy)

аналогично получаем i(AZMy-AyMz)+j(AxMz-AZMx)+d(AyMx-AxMy) b = -------------------------------------- i(MyNz-MzNy)+j(NxMz-MxNz)+d(MxNy-NxMy)

Знаки умножения здесь везде опущены, иначе читать это все совсем невозможно.

Осталось немного, подставить Mx = Bx-Ax и так далее, а потом подставить эти a и b в формулы для Du и Dv.



Содержание раздела