Динамически масштабируемый объект, уложенный поверх другого

Я делаю проект с three.js, где пользователь может динамически изменять размеры модели. Вопрос очень похож на этот, который я опубликовал, но я боюсь, что он не работает с этого времени, я работаю с экструзией планарной формы. У фрагмента кода, где возникают проблемы, является следующее:

cubeY.onChange(function(value){
     cube.scale.y = value;
     cube.position.y = (cubeHeight * value) / 2;
     roof.position.y = (roofHeight * roof.scale.y) / 2 + cube.position.y * 2 - roofHeight;});;
roofY.onChange(function(value){
    roof.scale.y = value;
    roof.position.y = ((roofHeight * value) + cube.position.y * 2) - value * roofHeight;
});

Как вы можете заметить, когда я изменяю roof.scale.y, объект движется, но он должен оставаться неподвижным в верхней части куба. Знаете ли вы, что я делаю неправильно? Это jsfiddle с полным кодом.

Заранее благодарим за ваши ответы!

Ответ 1

Масштабируемая высота куба cubeHeight * cube.scale.y, а крыша roofHeight * roof.scale.y.

Верхнее центральное положение куба (высота куба) cube.position.y + cubeHeight/2 * cube.scale.y или просто cubeHeight * cube.scale.y

Геометрический центр крыши не является центром системы координат, поэтому его положение представляет собой высоту куба за вычетом половины высоты крыши.

cube.position.y  + cubeHeight/2 * cube.scale.y  - roofHeight/2 * roof.scale.y

Пример Jsfiddle