Показать сообщение отдельно
Старый 25.03.2020, 13:15   #1263
sergio1982
Местный
 
Регистрация: 01.09.2019
Сообщений: 424
Сказал(а) спасибо: 52
Поблагодарили 480 раз(а) в 147 сообщениях
Вес репутации: 195
sergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царстве
По умолчанию

Цитата:
Сообщение от Letos Посмотреть сообщение
Для поворота вокруг точки на заданный угол написал функцию и пример как её пользоваться:
Никак не могу это допилить для правильного поворота тел вращения. И у панели иногда вращает не по центру а по краю.

Скрытый текст

Код:
/**
 * Повернуть объект вокруг точки
 * @param {Object3} obj Объект
 * @param {Vector} pointGCS Точка в ГСК
 * @param {Vector} axis Ось поворота
 * @param {Number} angle Угол поворота
 */
function RotateAroundPoint(obj, pointGCS, axis, angle){
    var localPoint = obj.ToObject(pointGCS);
    obj.RotateGCS(axis, angle);
    var newPointGCS = obj.ToGlobal(localPoint);
    console.log(pointGCS);
    console.log(newPointGCS);
    var diff = {
        x: pointGCS.x - newPointGCS.x,
        y: pointGCS.y - newPointGCS.y,
        z: pointGCS.z - newPointGCS.z,
    }
    console.log(diff);
    obj.TranslateGCS(diff);
}
var pan = Model.Selected
// поворот относительно центра панели в нижней точке по оси Y на 90 градусов
RotateAroundPoint(
    pan,
    pan.ToGlobal({
        x: pan.GCenter.x,
        y: 0,
        z: pan.GCenter.z
    }),
    AxisY,
    90);
[свернуть]
sergio1982 вне форума   Ответить с цитированием Вверх