GrxUIonEclipse-project-0.9.8
src
com
generalrobotix
ui
view
graph
DataSeries.java
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2008, AIST, the University of Tokyo and General Robotix Inc.
3
* All rights reserved. This program is made available under the terms of the
4
* Eclipse Public License v1.0 which accompanies this distribution, and is
5
* available at http://www.eclipse.org/legal/epl-v10.html
6
* Contributors:
7
* General Robotix Inc.
8
* National Institute of Advanced Industrial Science and Technology (AIST)
9
*/
10
package
com.generalrobotix.ui.view.graph;
11
18
public
class
DataSeries
{
19
20
// -----------------------------------------------------------------
21
// インスタンス変数
22
private
int
size_
;
// データ点数
23
private
double
[
/*size_*/
]
data_
;
// データのY座標値(Double.NaNはデータの欠落を示す)
24
private
int
headPos_
;
// データ先頭添字
25
private
double
xOffset_
;
// X座標値オフセット
26
private
double
xStep_
;
// X座標値刻み幅
27
28
// -----------------------------------------------------------------
29
// コンストラクタ
37
public
DataSeries
(
38
int
size
,
39
double
xOffset,
40
double
xStep
41
) {
42
size_
=
size
;
43
xOffset_
= xOffset;
44
xStep_
= xStep;
45
headPos_
= 0;
46
data_
=
new
double
[
size
];
47
for
(
int
i
= 0;
i
<
size
;
i
++) {
48
data_
[
i
] = Double.NaN;
49
}
50
}
51
52
// -----------------------------------------------------------------
53
// インスタンスメソッド
59
public
void
setSize
(
60
int
size
61
) {
62
size_
=
size
;
63
headPos_
= 0;
64
data_
=
new
double
[
size
];
65
for
(
int
i
= 0;
i
<
size
;
i
++) {
66
data_
[
i
] = Double.NaN;
67
}
68
}
69
75
public
void
setXOffset
(
76
double
xOffset
77
) {
78
xOffset_
= xOffset;
79
}
80
86
public
void
setXStep
(
87
double
xStep
88
) {
89
xStep_
= xStep;
90
}
91
97
public
int
getSize
() {
98
return
size_
;
99
}
100
106
public
double
getXOffset
() {
107
return
xOffset_
;
108
}
109
115
public
double
getXStep
() {
116
return
xStep_
;
117
}
118
124
public
double
[]
getData
() {
125
return
data_
;
126
}
127
133
public
int
getHeadPos
() {
134
return
headPos_
;
135
}
136
145
public
void
setHead
(
146
int
pos,
147
double
[]
data
148
) {
149
// 配列長チェック
150
int
len =
data
.length;
151
if
(len < 1) {
// 空の配列?
152
return
;
// なにもしない
153
}
154
155
// 開始位置チェック
156
if
(pos >=
size_
) {
// 開始位置が不正?
157
return
;
// なにもしない
158
}
159
int
ofs = 0;
160
if
(pos < 0) {
161
if
(len <= -pos) {
// 長さが足りない(先頭に届かない)?
162
return
;
// なにもしない
163
}
164
ofs = -pos;
// オフセット設定
165
pos = 0;
// 開始位置更新
166
len -= ofs;
// 配列長更新
167
}
168
169
// 配列長チェック
170
if
(len >
size_
- pos) {
// 与えられた配列が長すぎる?
171
len =
size_
- pos;
// 長さをカット
172
}
173
174
// データのコピー
175
int
former =
size_
-
headPos_
;
176
if
(pos < former) {
// 開始位置が前半にある?
177
int
remain = former - pos;
178
if
(len <= remain) {
// 全て前半に収まる?
179
System.arraycopy(
180
data
, ofs,
181
data_
,
headPos_
+ pos,
182
len
183
);
// 全て前半にコピー
184
}
else
{
185
System.arraycopy(
186
data
, ofs,
187
data_
,
headPos_
+ pos,
188
remain
189
);
// 前半にコピー
190
System.arraycopy(
191
data
, ofs + remain,
192
data_
, 0,
193
len - remain
194
);
// 後半にコピー
195
}
196
}
else
{
// 開始位置が後半にある?
197
System.arraycopy(
198
data
, ofs,
199
data_
, pos - former,
200
len
201
);
// 全て後半にコピー
202
}
203
}
204
213
public
void
setTail
(
214
int
pos,
215
double
[]
data
216
) {
217
setHead
(
size_
- 1 - pos,
data
);
218
}
219
232
public
void
shift
(
233
int
count
234
) {
235
// 移動量チェック
236
if
(count == 0) {
// 移動しない?
237
return
;
// なにもしない
238
}
239
xOffset_
+=
xStep_
* count;
// X座標値オフセット更新
240
if
(count >=
size_
|| count <= -
size_
) {
// 配列長を超える移動?
241
for
(
int
i
= 0;
i
<
size_
;
i
++) {
// NaNクリア
242
data_
[
i
] = Double.NaN;
243
}
244
return
;
245
}
246
247
// シフト
248
int
prevHead =
headPos_
;
// 古い先頭位置
249
int
newHead = prevHead + count;
// 新しい先頭位置
250
if
(count > 0) {
// 正の移動?
251
for
(
int
i
= prevHead;
i
< newHead;
i
++) {
// 新たにできた場所をループ
252
data_
[
i
%
size_
] = Double.NaN;
// NaNクリア
253
}
254
headPos_
= newHead %
size_
;
// 先頭位置更新
255
}
else
{
// 負の移動?
256
int
ind;
257
for
(
int
i
= newHead;
i
< prevHead;
i
++) {
// 新たにできた場所をループ
258
ind =
i
%
size_
;
259
if
(ind < 0) {
260
ind +=
size_
;
261
}
262
data_
[ind] = Double.NaN;
// NaNクリア
263
}
264
// 先頭位置更新
265
headPos_
= newHead %
size_
;
266
if
(
headPos_
< 0) {
267
headPos_
+=
size_
;
268
}
269
}
270
}
271
279
public
void
addLast
(
280
double
value
281
) {
282
xOffset_
+=
xStep_
;
// X座標値オフセット更新
283
data_
[
headPos_
] =
value
;
// データ書込み
284
headPos_
= (
headPos_
+ 1) %
size_
;
// 先頭位置移動
285
}
286
294
public
void
set
(
295
int
pos,
296
double
value
297
) {
298
int
setPos = (
headPos_
+ pos) %
size_
;
299
data_
[setPos] =
value
;
300
}
301
}
com.generalrobotix.ui.view.graph.DataSeries.headPos_
int headPos_
Definition:
DataSeries.java:24
size
png_uint_32 size
Definition:
png.h:1518
i
png_uint_32 i
Definition:
png.h:2732
com.generalrobotix.ui.view.graph.DataSeries.getXOffset
double getXOffset()
Definition:
DataSeries.java:106
com.generalrobotix.ui.view.graph.DataSeries.setHead
void setHead(int pos, double[] data)
Definition:
DataSeries.java:145
com.generalrobotix.ui.view.graph.DataSeries.getHeadPos
int getHeadPos()
Definition:
DataSeries.java:133
com.generalrobotix.ui.view.graph.DataSeries
Definition:
DataSeries.java:18
com.generalrobotix.ui.view.graph.DataSeries.setXStep
void setXStep(double xStep)
Definition:
DataSeries.java:86
com.generalrobotix.ui.view.graph.DataSeries.getData
double[] getData()
Definition:
DataSeries.java:124
com.generalrobotix.ui.view.graph.DataSeries.size_
int size_
Definition:
DataSeries.java:22
com.generalrobotix.ui.view.graph.DataSeries.data_
double[] data_
Definition:
DataSeries.java:23
com.generalrobotix.ui.view.graph.DataSeries.xOffset_
double xOffset_
Definition:
DataSeries.java:25
com.generalrobotix.ui.view.graph.DataSeries.addLast
void addLast(double value)
Definition:
DataSeries.java:279
com.generalrobotix.ui.view.graph.DataSeries.getXStep
double getXStep()
Definition:
DataSeries.java:115
value
png_voidp int value
Definition:
png.h:2110
data
JSAMPIMAGE data
Definition:
jpeglib.h:945
com.generalrobotix.ui.view.graph.DataSeries.shift
void shift(int count)
Definition:
DataSeries.java:232
com.generalrobotix.ui.view.graph.DataSeries.DataSeries
DataSeries(int size, double xOffset, double xStep)
Definition:
DataSeries.java:37
com.generalrobotix.ui.view.graph.DataSeries.xStep_
double xStep_
Definition:
DataSeries.java:26
com.generalrobotix.ui.view.graph.DataSeries.setTail
void setTail(int pos, double[] data)
Definition:
DataSeries.java:213
com.generalrobotix.ui.view.graph.DataSeries.setXOffset
void setXOffset(double xOffset)
Definition:
DataSeries.java:75
com.generalrobotix.ui.view.graph.DataSeries.setSize
void setSize(int size)
Definition:
DataSeries.java:59
com.generalrobotix.ui.view.graph.DataSeries.getSize
int getSize()
Definition:
DataSeries.java:97
openhrp3
Author(s): AIST, General Robotix Inc., Nakamura Lab of Dept. of Mechano Informatics at University of Tokyo
autogenerated on Wed Sep 7 2022 02:51:02