Intereting Posts
Как использовать autofac в приложении UWP? linq запрос для возврата различных значений поля из списка объектов Как создать общий метод расширения? Как выполнить команды командной строки из кода Почему у структур не может быть деструкторов? Существует ли стандартный способ реализации проприетарного пула соединений в .net? Как преобразовать строку запроса в строку json? Обработка событий c # между двумя формами Неверный заголовок Content-Type, сгенерированный с помощью MultipartFormDataContent Как реализовать multithreading и параллельное выполнение нескольких задач? Мне нужно открыть конструктор в WCF DataContract, чтобы он работал во время создания объекта на клиенте? Высота автоподстрочной линии объединенной ячейки в EPPlus Могу ли я использовать инициализатор коллекции для словарей записей? Кэш Asp.net или ручное кэширование Получите значение Y серии из позиции X-курсора, где нажимается ChartArea

Отскакивание шара от стены с произвольным углом?

Я пытаюсь позволить пользователю нарисовать весло, которое они могут использовать, чтобы нанести удар по мячу. Тем не менее, я не могу заставить мяч отскочить правильно, потому что x и y компоненты скорости шара не выровнены со стенкой. Как я могу обойти это?

Я попробовал совет, данный Гаретом Рисом здесь , но, по-видимому, я недостаточно знаю об векторах, чтобы иметь возможность следовать за ним. Например, я не знаю, что именно вы храните в векторе – я знаю, что это значение с направлением, но вы сохраняете 2 точки между ними, угол наклона, угол?

То, что мне действительно нужно, дается угол стены и скорости x и y по мере попадания шара, чтобы впоследствии найти новые скорости x и y.

    Гарет Рис получил правильную формулу, но я нахожу фотографии и объяснения здесь немного более ясными. То есть основная формула:

    Vnew = -2*(V dot N)*N + V where V = Incoming Velocity Vector N = The Normal Vector of the wall 

    Поскольку вы не знакомы с векторной нотацией, вот что вам нужно знать для этой формулы: векторы – это в основном просто x, y пары, поэтому V = (vx, vy) и N = (nx, ny) . Самолеты лучше всего описываются нормалью к плоскости, то есть вектором единичной длины, перпендикулярным плоскости. Тогда несколько формул, b*V = (b*vx, b*vy) ; V dot N = vx*n.x+vy*ny , то есть это скаляр; и A + B = (a.x+bx, a.y+by) . Наконец, чтобы найти единичный вектор, основанный на произвольном векторе, это N = M/sqrt(M dot M) .

    Если поверхность изогнута, используйте нормаль в точке контакта.