Линейные уравнения / пересечение плоских линий / 3d координаты плоских точек в Unity - PullRequest
0 голосов
/ 22 февраля 2020

Кто-нибудь знает библиотеку / функцию для решения линейных уравнений в Unity? Мой предыдущий поиск только что нашел старые результаты, которые в основном показывают, что не было много рабочих опций: /

Поскольку для моего текущего проекта я хотел бы вычислить точку попадания на плоскости в трехмерном пространстве и получить эту точку попадания в относительной координаты плоскости, чтобы впоследствии использовать ее для ViewportPointToRay Raycast.

Я надеялся, что смогу решить ее самостоятельно, получив точки попадания и 3-угловые точки плоскостей, а затем получу 3 уравнения с 2 переменными, которые должны быть решены с помощью сам. К сожалению, по какой-то причине, точка удара, которую я получаю, находится не в плоскости 3 угловых точек плоскости, а за ней. (Я получаю угловые точки по списку вершин сетки и использую на плоскости коллайдер Me sh. Поэтому я не знаю, почему это так).

В любом случае, он все еще должен быть решаем, как я знаю 2 точки линии и могу видеть, что она пересекается с Debug.DrawLine, так что я бы просто получил эту линию и проверил точку пересечения с плоскостью, но математика немного сложнее. Или я не могу придумать легкий путь, потому что я никогда не был так хорош в математике D:

Итак, я с нетерпением жду каких-либо предложений! :)

1 Ответ

0 голосов
/ 24 февраля 2020

Вы можете легко рассчитать точку пересечения линии / плоскости. Убедитесь, что это в мировых координатах.

ресурсов (лучшие хиты Google):

https://math.stackexchange.com/questions/2041296/algorithm-for-line-in-plane-intersection-in-3d

https://en.wikipedia.org/wiki/Line –Plane_intersection

https://ocw.mit.edu/courses/mathematics/18-02sc-multivariable-calculus-fall-2010/1.-vectors-and-matrices/part-c-parametric-equations-for-curves/session-16-intersection-of-a-line-and-a-plane/MIT18_02SC_we_9_comb.pdf

Затем, чтобы получить его в координатах плоскости, используйте

plane.transform.InverseTransformPoint(worldPositionOfIntersection).

Это преобразует мировые координаты в локальные координаты плоскости. https://docs.unity3d.com/ScriptReference/Transform.InverseTransformPoint.html

Теперь вы можете делать то, что хотите.

...