一个类的动态数组,在另一个单独的类中?

时间:2010-05-03 03:31:48

标签: graphics matlab

我正在研究一个机器人本地化模拟器,我创建了一个名为“landmark”的类。

最终结果将是一个始终居中并始终面向屏幕顶部的机器人。随着它的转动,鸟瞰图将围绕机器人旋转。为了实现这一点,我假设我可以旋转一个类并且内部的所有元素都可以旋转。

因此,地标类具有属性x,y,标签和半径。这是为了模拟森林中的树位置。

为了测试一切,我需要“森林数据”,我写了一个脚本,在100米x 100米的区域内生成100棵树。该脚本自动生成x,y,radius可接受范围内的值。生成的数据存储在名为tempForest的对象中,为100x3。

理想情况下,我想创建一个名为“landmarks”(复数)的类,里面有100个地标实例。

如何使用随机生成的数据在一个地标实例中实例化100个地标实例?

理想情况下,我只需输入treeBeacons = landmarks();它将随机填充100(用户可定义,在配置文件中设置)实例与x,y,radius数据。

我不确定如何在另一个单一的“地标”中处理动态数组“Landmark”。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我创建了一个类'landmarks',它具有属性'fixedPositions',属性'viewDirection'和依赖属性'apparentPositions'。

如果您键入treeBeacons=landmarks;,您可以让构造函数填入fixedPositions,这是您树木的位置列表。然后将treeBeacons.facing设置为机器人面向的任何方向,您可以将相对于机器人的森林设置为treeBeacons.apparentPositions

根据您的描述,我认为没有必要让您的树成为对象。但是,如果您的树确实需要是单个对象,则您可以使用标记的构造函数创建对象而不是坐标,并将它们存储在fixedPositions(或trees)中。我建议您不要同时使用landmarkslandmark作为不同的变量名。至少像我这样的普通人很难分清两人。

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