swanrnd
@swanrnd
Издатель HTML5 игр

Как лучше хранить данные точке на плоскости?

Есть путь -- массив точек на плоскости.

Есть стены. Надо проверить, что бы точки пути не пересекали стены.
Стены - это точки.
(х,у)

В чем лучше хранить точки стен?
Dictionary<string, bool> wall = 
            new Dictionary<string, bool>();
            wall['1_1']=true;
        if (!wall.ContainsKey("1_1"))
        {
            // стена !!
        }


Ну а есть лучше идеи?
  • Вопрос задан
  • 277 просмотров
Пригласить эксперта
Ответы на вопрос 3
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Путь - это стэк.
Стены - это точки?! Может отрезки, соединённые точками?!
Стены=отрезки - лучше хранить в структурном массиве "walls": x0,y0 и x1,y1 (координаты начала и конца отрезка)
Чтобы не пересекали - формула пересечения двух прямых из геометрии.
Ответ написан
@GreatRash
Всё храните в векторах. В принципе точка - это вектор с нулевой длиной (ща меня математики побьют, да и пёс с ними). Ну а дальше ищите пересечения :)
Ответ написан
@abcd0x00
Есть стены. Надо проверить, что бы точки пути не пересекали стены.

У тебя есть путь - это ломаная, которая состоит из отрезков, которые состоят из точек.
У тебя есть стена - это ломаная, которая состоит из отрезков, которые состоят из точек.

(0, 1) - это одна точка
{(0, 1), (2, 3)} - это один отрезок
{{(0, 1), (2, 3)}, {(2, 3), (4, 5)}, {(4, 5), (6, 7)}} - это одна ломаная

Вот так и храни: это нужно делать класс точки, класс отрезка и класс ломаной.

Чтобы определить пересекает ли путь стену, нужно определить пересекаются ли отрезки пути с отрезками стены.

В классе ломаной должен быть метод, который проверяет пересечение ломаной с другой ломаной.
В классе отрезка должен быть метод, который проверяет пересечение отрезка с другим отрезком.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы