MCPcopy Index your code
hub / github.com/ChartGPU/ChartGPU / createLinearScale

Function createLinearScale

src/utils/scales.ts:84–135  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

82 * domain [0, 1] -> range [0, 1]
83 */
84export function createLinearScale(): LinearScale {
85 let domainMin = 0;
86 let domainMax = 1;
87 let rangeMin = 0;
88 let rangeMax = 1;
89
90 const self: LinearScale = {
91 domain(min: number, max: number) {
92 assertFinite('domain min', min);
93 assertFinite('domain max', max);
94 domainMin = min;
95 domainMax = max;
96 return self;
97 },
98
99 range(min: number, max: number) {
100 assertFinite('range min', min);
101 assertFinite('range max', max);
102 rangeMin = min;
103 rangeMax = max;
104 return self;
105 },
106
107 scale(value: number) {
108 if (!Number.isFinite(value)) return Number.NaN;
109
110 if (domainMin === domainMax) {
111 return (rangeMin + rangeMax) / 2;
112 }
113
114 const t = (value - domainMin) / (domainMax - domainMin);
115 return rangeMin + t * (rangeMax - rangeMin);
116 },
117
118 invert(pixel: number) {
119 if (!Number.isFinite(pixel)) return Number.NaN;
120
121 if (domainMin === domainMax) {
122 return domainMin;
123 }
124
125 if (rangeMin === rangeMax) {
126 return (domainMin + domainMax) / 2;
127 }
128
129 const t = (pixel - rangeMin) / (rangeMax - rangeMin);
130 return domainMin + t * (domainMax - domainMin);
131 },
132 };
133
134 return self;
135}
136
137/**
138 * Creates a category scale for mapping string categories to evenly spaced

Callers 4

renderFunction · 0.90
mainFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected