-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathmatrixBuilder.ts
More file actions
27 lines (26 loc) · 917 Bytes
/
matrixBuilder.ts
File metadata and controls
27 lines (26 loc) · 917 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import { Point } from "@/matrix/Point";
import { LinearBroadcastMatrix } from "@/matrix/linear.mb";
import { RandomBroadcastMatrix } from "@/matrix/random.mb";
import { RippleBroadcastMatrix } from "@/matrix/ripple.mb";
import { FibonacciBroadcastMatrix } from "@/matrix/fibonacci.mb";
export enum MATRIX_TYPE {
Linear = "线性广播",
Ripple = "涟漪广播",
Random = "随机广播",
Fibonacci = "斐波那契广播",
}
export function matrixBuilder(
startPoint: Point,
mType: MATRIX_TYPE = MATRIX_TYPE.Ripple
) /* BM.BroadcastMatrix<Point> */ {
switch (mType) {
case MATRIX_TYPE.Ripple:
return new RippleBroadcastMatrix(startPoint);
case MATRIX_TYPE.Linear:
return new LinearBroadcastMatrix(startPoint);
case MATRIX_TYPE.Random:
return new RandomBroadcastMatrix(startPoint);
case MATRIX_TYPE.Fibonacci:
return new FibonacciBroadcastMatrix(startPoint);
}
}