мышь как точка схода

0

В этом скрипте вы можете увидеть мою реализацию.

Он в основном работает как измененный, но есть некоторые пятна, где угол изменяется резко и не гладко. Играйте с помощью мыши и узнайте. (Когда X-Position мыши находится вокруг X-позиции исчезающей линии). Также я не понимаю, почему исчезающая линия не следует за мышью дальше 45 °.

lineRad = Math.asin(Math.sin(vertDist / mouseLineDist));

lineRad = (mouseX - lineX) >= 0 ? lineRad : -lineRad  + Math.PI;
lineRad = (mouseY - lineY) >= 0 ? lineRad : -lineRad;

Это может быть причиной прыжков, но я не уверен.

Я просто проверил это под Firefox. Похоже, что у него серьезные проблемы с производительностью. Итак, этот прототип работает в Chrome. Любые предложения по производительности и совместимости с браузером также приветствуются.

Теги:
performance
geometry

1 ответ

1
Лучший ответ

Вам не хватает функции atan2, она идеально решает вашу проблему в одной строке:

horDist = (mouseX - lineX);
vertDist = (mouseY - lineY);

lineRad = Math.atan2(vertDist, horDist);

играть на скрипке

Кроме того, вероятно, вы получите лучшее исполнение, определяющее происхождение трансформирования как апрофессию, вместо установки дополнительного перевода

Ещё вопросы

Сообщество Overcoder
Наверх
Меню