Похоже, что вы делаете точную работу по отбору образцов цилиндра, ориентированного по оси, с центром одного конца в начале координат.
Но ваш целевой цилиндр не выровнен по оси и не прибит к исходной точке.
Вам необходимо преобразовать создаваемые точки в соответствующую область в пространстве.
Построить единичный вектор в направлении от C1
до C2
и две взаимно перпендикулярные единичные нормали к нему. 1 Эти три вектора (которые я назову b1
, b2
и b3
) образуют основу, а преобразованная точка -
p = C1 + (b1 * x + b2 * y + b3 * z)
где я назвал единичный вектор вдоль оси b3
.
1 Какую пару из них вы построите, совершенно произвольно, и наивным способом было бы взять перекрестное произведение b3
с любым вектором, не (анти) параллельным ему, чтобы получить первое нормальное направление (b1
) и затем b3
cross b1
, чтобы получить второе нормальное направление. Единственная складка - это выбор исходного вектора, не параллельного b3
.