newx = a*x + b*y + c*z
newy = d*x + e*y + f*z
newz = g*x + h*y + i*z
Matrix3D(x, y, pos2, direction, new_pos);
stock GreateSpiral(float StartPos[3], float EndPos[3], float angles[3], float radius) {
float Cos, Sin;
Cos = Cosine(degree); // degree угол на коорый поворачиваю(в радианы наверно нужно перевести)
Sin = Sine(degree);
vx = angles[0];
vy = angles[1];
vz = angles[2];
while(degree <= PI * t) {
float a = Cos + (1 - Cos) * vx * vx;
float b = (1 - Cos)) * vx * vy - Sin * vz;
float c = (1 - Cos) * vx * vz + Sin * vy;
float d = (1 - Cos) * vy * vx + Sin * vz;
float e = Cos + (1 - Cos) * vy * vy;
float f = (1 - Cos) * vy * vz - Sin * vx;
float g = (1 - Cos) * vz * vx - Sin * vy;
float h = (a - Cos) * vz * vy + Sin * vx;
float i = Cos + (1 - Cos) * vz * vz;
......
......
......
Здесь отрисовка линии......
degree += PI/10.0;
}
}
float a=cos(a)+(1-cos(a))*vx*vx;
float b=(1-cos(a))*vx*vy-sin(a)*vz;
float c=(1-cos(a))*vx*vz+sin(a)*vy;
float d=(1-cos(a))*vy*vx+sin(a)*vz;
float e=cos(a)+(1-cos(a))*vy*vy;
float f=(1-cos(a))*vy*vz-sin(a)*vx;
float g=(1-cos(a))*vz*vx-sin(a)*vy;
float h=(a-cos(a))*vz*vy+sin(a)*vx;
float i=cos(a)+(1-cos(a))*vz*vz;
{
{cos(a)+(1-cos(a))*vx*vx, (1-cos(a))*vx*vy-sin(a)*vz, (1-cos(a))*vx*vz+sin(a)*vy, 0},
{(1-cos(a))*vy*vx+sin(a)*vz, cos(a)+(1-cos(a))*vy*vy, (1-cos(a))*vy*vz-sin(a)*vx, 0},
{(1-cos(a))*vz*vx-sin(a)*vy, (a-cos(a))*vz*vy+sin(a)*vx, cos(a)+(1-cos(a))*vz*vz, 0},
{0, 0, 0, 1}
}
матрицу довольно просто самому расписать.
Достаточно посмотреть что класть в ячейки матрицы поворота.
Как бы объяснить, попытка применения матрицы плавно трансформировалась в направления векторов, из полученных векторов: вектор направления, вектор вверх и вбок. Из них получилось некое подобие матрицы. Отлично работает!
Александр Павлюк Александр Павлюк Огромное спасибо за ответ. Вообще впервые вижу подробный ответ.
Спасибо за матрицу, хоть и не пришлось её применить, но я с ней обязательно поэксперементирую, такое обязательно нужно использовать.
Здесь у меня видео с результатом того, что я и хотел получить.
Цилиндрическая винтовая линия