Russian Qt Forum

Программирование => Алгоритмы => Тема начата: Igors от Август 27, 2014, 13:42



Название: Гнем трубу
Отправлено: Igors от Август 27, 2014, 13:42
Добрый день

Есть труба (модель цилиндра). Есть ф-ция вызывая которую для каждого вертексв мы получаем изгиб трубы (2 картинки справа)
Код
C++ (Qt)
void Bend( QVector3D & position,  // координаты вертекса
               double angle,               // угол изгибв (на картинках оба 90)
               const QVector3D & minimum,                  
               const QVector3D & maximum );  // bounding box в котором гнем
Ф-ция поворачивает вертексы используя их расстояние по оси Y, текущий угол поворота вычисляется как
Код:
cur_angle = (position.y - minimum.y) / (maximum.y - minimum.y) * angle;
поэтому для изначального цилиндоа все хорошо - он стоит ровно по Y.

Вопрос: а как согнуть обе части - верхнюю и нижнюю?

Спасибо


Название: Re: Гнем трубу
Отправлено: Igors от Сентябрь 02, 2014, 16:07
Ну вот, наверное опять слишком сложно для детей ассистентсого подземелья :'( А бывает так резво щебечут напр что же там лучше git или svn? Ну ладно, пара вопросов совсем простых чтобы оживить интерес. Пусть у нас всего ОДИН изгиб. Тогда

1) Как базовая ф-ция (прототип выше) гнет трубу ?
2) Пусть у трубы 100 вертексов. Сколько раз будет вызвана базовая ф-ция?


Название: Re: Гнем трубу
Отправлено: Bepec от Сентябрь 02, 2014, 16:28
Отвечать на вопрос "просто так" желания не возникает. Ну или вы отбили у присутствующих желание отвечать :)