-
Notifications
You must be signed in to change notification settings - Fork 0
/
3d.scad
120 lines (91 loc) · 4.86 KB
/
3d.scad
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
/*- TO CHANGE START */
// Number of XPs in a day for each months
jan = [6433, 12574, 12013, 14896, 6242, 12306, 11732, 22842, 25780, 7375, 1030, 2676, 8857, 7948, 11429, 21389, 13025, 5335, 8942, 4457, 14171, 9951, 10766, 7780, 29865, 24567, 7702, 24382, 17697, 12100, 16698];
feb = [21093, 2887, 10773, 10345, 5897, 6255, 20849, 17071, 17168, 8504, 27323, 33772, 16624, 16915, 14535, 10766, 24339, 14177, 24986, 13760, 47418, 59739, 19918, 12892, 20671, 13143, 9618, 9389, 0, 0];
mar = [23643, 29897, 23874, 26867, 20092, 8363, 6073, 10425, 26663, 111087, 30647, 19681, 19344, 15507, 17636, 12541, 7369, 17568, 17077, 15472, 9506, 6338, 8851, 21544, 24243, 7023, 5401, 7157, 20584, 23584, 16505];
apr = [18005, 20973, 15606, 31164, 19681, 6483, 9336, 19675, 16235, 20264, 24966, 5373, 15940, 11196, 31502, 19592, 12128, 5567, 4127, 16426, 12003, 9349, 30876, 16646, 17918, 10468, 29463, 17615, 33916, 26946];
may = [7170, 23252, 9804, 31352, 15586, 14805, 11428, 1109, 17412, 10792, 15063, 26795, 21759, 16454, 6553, 4298, 18480, 12895, 9416, 15555, 11009, 8964, 12185, 14078, 13741, 12137, 16978, 9225, 5745, 11983, 16882];
jun = [18025, 9358, 14984, 9903, 8786, 9800, 4640, 10981, 243, 9525, 23704, 6319, 5829, 15594, 27113, 21561, 12550, 7705, 5961, 17777, 5608, 23655, 15029, 6724, 17000, 10188, 656, 2250, 15440, 14002];
jul = [28390, 11561, 7373, 6742, 17094, 29206, 11565, 8060, 14140, 30700, 24018, 20970, 12356, 23407, 15595, 18958, 27610, 22698, 14382, 18506, 11033, 26381, 15258, 7264, 16294, 20051, 7199, 3656, 9122, 12367, 7399];
aug = [37781, 16170, 5423, 7281, 625, 17514, 14275, 11376, 4164, 6922, 12616, 14079, 5546, 10987, 0, 2947, 16041, 9591, 8883, 8308, 10195, 12063, 13868, 8181, 11185, 19938, 9788, 6687, 12555, 22733, 5933];
sep = [8156, 14355, 7410, 7958, 5638, 1974, 7015, 3924, 559, 8996, 19943, 28816, 26180, 18516, 9069, 14086, 7128, 11096, 16909, 10968, 15450, 7919, 10128, 7433, 3533, 12644, 25574, 30150, 21302, 10383];
oct = [7109, 11067, 13580, 24341, 10774, 11742, 19973, 23626, 30664, 9417, 16783, 9260, 14108, 9489, 4830, 28002, 21885, 16954, 15868, 16902, 19634, 22134, 24960, 11625, 10090, 13084, 20795, 8160, 11223, 5578, 1741];
nov = [0, 13537, 30169, 11276, 6862, 13438, 10021, 14033, 11938, 10941, 3634, 23317, 33661, 22821, 30040, 13944, 13980, 10466, 8872, 9020, 10166, 37281, 31896, 15089, 15184, 14277, 8070, 13321, 11396, 9223];
dec = [8826, 11600, 5676, 8647, 8214, 26350, 12609, 9070, 21900, 17233, 11803, 17161, 12652, 2534, 5066, 26487, 27623, 21798, 17840, 11337, 3662, 9396, 16589, 242, 0, 0, 2674, 1892, 98, 10846, 9384];
// the maximum number of XPs in a day
max = 111087;
// the minimum number of XPs in a day
min = 0;
// Left aligned text for the username
text = "Aviortheking";
// Right aligned text for the year
year = "2021";
/* TO CHANGE END -*/
// Define the maximum height
maxHeight = 100;
// Define the spacing between values
spacing = 0;
// Define the base height
baseHeight = 20;
// Define the text height
textHeight = baseHeight / 2;
// define the minimum value to be before displaying
minValue = 0;
barSize = 10;
// 33 = 31 days + 2 border)
baseWidth = barSize * 33;
// 14 = 12 months + 2 border
baseLength = barSize * 14;
// Function that generate a whole month
module generateMonth(month, offset = 0) {
// loop through each days for the month
for (index = [0 : len(month) -1 ]) {
// get the XP
it = month[index];
// Render the bar
translate([
barSize + (barSize + spacing) * index,
barSize + (barSize + spacing) * offset,
baseHeight - 1 // put it in the bottom part to make sure they are one
]) {
cube([
barSize,
barSize,
it < minValue ? 0 : it * maxHeight / max + 1 // make it higher for the reason of the comment above
]);
}
}
}
// merge everyting
union() {
// remove part of bottom with text
difference() {
cube([baseWidth, baseLength, baseHeight]);
// if year is specified
if (len(year) > 0) {
// move the year to the right
translate([baseWidth - 5, 1.9, (baseHeight - textHeight) / 2]) {
// rotate it
rotate([90, 0, 0]) {
// extrude the base
linear_extrude(2)
text(year, size=textHeight, halign="right");
}
}
}
// move the username to the left
translate([5, 1.9, (baseHeight - textHeight) / 2]) {
// rotate it
rotate([90, 0, 0]) {
// extrude the base
linear_extrude(2)
text(text, size=textHeight);
}
}
}
// Generate each months :D
months = [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec];
for (monthIndex = [ 0 : 11 ]) {
generateMonth(months[monthIndex], monthIndex);
}
}