0
私はオブジェクト指向を使ってドットの動きをプロットしようとしています。最初の位置にドットを生成し、その位置をベクトルに追加してプロパティを与えます。背景として1000x1000のグリッドがあります。Matlab - OOP変数がリストに更新されない
uav1 = uavclass([10,10,10]);
uav2 = uavclass([-10,-10,-10]);
uav3 = uavclass([20,20,20]);
uav4 = uavclass([-20,-20,-20]);
uav5 = uavclass([30,30,30]);
XY = [];
XY(:,1) = [uav1.position(1),uav2.position(1),uav3.position(1),uav4.position(1),...
uav5.position(1),];
XY(:,2) = [uav1.position(2),uav2.position(2),uav3.position(2),uav4.position(2),...
uav5.position(2),];
UAVs = plot(XY(:,1), XY(:,2), ...
'Marker', '.', ...
'Color', 'r', ...
'LineStyle', 'none', ...
'MarkerSize', 8);
私はそれがプロットされません
while uav2.charge > 25
uav2.position(1) = uav2.position(1) + uav2.maxHorizSpeed;
uav2.position(2) = uav2.position(2) + uav2.maxHorizSpeed;
uav2.position(2)
uav2.charge = uav2.charge - 1;
pause(0.5)
set(UAVs, 'XData', XY(:,1), 'YData', XY(:,2));
end
drawnow
を使用してしかしプロットするために行きます。 uav2.positionの値は増加しますが、ベクトルXYでは増加せず、移動も起こりません。 クラスは、あなたが明示的にXY
を更新しない
classdef uavclass
properties
position = [0,0,0]
charge = 100;
destination = [0,0,0];
maxVertClimb = 2;
maxHorizSpeed = 5;
sensorRange = 25;
unloadingTime = 60;
safeDistance = 5;
chargingTime = 300;
minCruiseAlt = 20;
maxCruiseAlt = 70;
end
methods
function uav = uavclass(pos)
uav.position = pos;
end
end
end