Динамический массив класса внутри другого отдельного класса? - PullRequest
0 голосов
/ 03 мая 2010

Я работаю над симулятором локализации робота и создал класс под названием "landmark".

Конечным результатом будет робот, который всегда центрирован и всегда обращен к верхней части экрана. Как оказалось, карта птичьего полета будет вращаться вокруг робота. Для этого я предполагаю, что я могу вращать один класс, а также вращать все элементы внутри него.

Итак, класс ориентира имеет свойства x, y, label и radius. Предполагается, что для имитации расположения деревьев в лесу.

Чтобы проверить все, мне нужны «данные о лесах», и я написал скрипт для генерации 100 деревьев на площади 100 х 100 м. Скрипт автоматически генерирует значения в пределах допустимого диапазона для x, y, радиуса. Сгенерированные данные хранятся в объекте с именем tempForest и имеют размер 100x3.

В идеале я хочу создать класс с именем "landmarks" (множественное число), в котором будет 100 экземпляров наземных ориентиров.

Как мне создать 100 экземпляров ориентира в одном экземпляре ориентиров с использованием этих случайно сгенерированных данных?

В идеале, я бы просто набрал treeBeacons = landmarks (); и он будет случайным образом заполнять 100 (определяемые пользователем, заданные в конфигурационном файле) экземпляры данными x, y, radius.

Я не уверен, как обращаться с динамическим массивом класса "Landmark" внутри другого отдельного класса "landmarks".

Есть идеи?

1 Ответ

1 голос
/ 03 мая 2010

Я бы создал класс 'landmarks', который имеет свойство 'fixedPositions', свойство 'viewDirection' и зависимое свойство 'visiblePositions'.

Если вы введете treeBeacons=landmarks;, вы можете заполнить конструктор fixedPositions, который является списком позиций ваших деревьев. Затем вы устанавливаете treeBeacons.facing в любом направлении, в котором стоит робот, и вы можете получить лес относительно робота как treeBeacons.apparentPositions.

Я не думаю, что ваши деревья должны быть объектами, учитывая ваше описание. Однако, если ваши деревья действительно должны быть отдельными объектами, у вас есть конструктор ориентиров, создающий объекты вместо координат и сохраняющий их в fixedPositions (или trees). Позвольте мне предложить, чтобы вы не использовали и landmarks, и landmark как разные имена переменных. По крайней мере, обычным людям, таким как я, очень трудно отличить их друг от друга.

classdef landmarks
    properties
        fixedPositions %# positions in a fixed coordinate system. [ x, y, radius ]
        facing = 0;%# direction in which the robot is facing
    end
    properties (Dependent)
        apparentPositions
    end
    methods
        function obj = landmarks(numberOfTrees)
             %# set  obj.fixedPositions here depending on the number of trees. 
        end
        function out = get.apparentPositions(obj)
            %# rotate obj.positions using obj.facing to generate the output
        end
        function plotMap(obj,fixedOrApparent)
            %# plots the map, either using fixed or apparent coordinates (good for testing)
        end
    end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...