мне нужно изменить размер прямоугольника в интерактивном отношении, используя точки наказания. Как это на скриншоте
< /p>
Совместное поведение: < /strong>
. Исправлено.
< /p>
ожидаемое поведение заключается в следующем: < /strong> < /p>
Правая точка перетаскивается вправо: < /strong> < /p>
- Повышается ширина прямоугольника. Внешний.
Правая точка перетаскивается влево:
Установка прямоугольника. /> левая тота перетаскивается влево: < /strong> < /p>
Ширина прямоугольника увеличивается. Центр): < /h4>
Ширина прямоугольника уменьшается. Метод:
handleDotDrag(mousePosition, camera) {
if (!this.isResizing || !this.activeDot) return;
// Convert mouse position to world coordinates
const vector = new THREE.Vector3(mousePosition.x, mousePosition.y, 0.5);
vector.unproject(camera);
const centerX = this.rectangle.position.x;
if (this.activeDot.name === "leftDot") {
// Calculate new width based on the left dot's position
const newWidth = Math.abs(centerX - vector.x) * 2;
if (newWidth > 0) {
this.resize(newWidth);
}
} else if (this.activeDot.name === "rightDot") {
// Calculate new width based on the right dot's position
const newWidth = Math.abs(vector.x - centerX) * 2;
if (newWidth > 0) {
this.resize(newWidth);
}
}
}
< /code>
Вопросы: < /strong> < /p>
Как я могу гарантировать, что левый или правый край прямоугольника остается фиксированным при изменении размера? Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/796 ... ne-edge-fi