How to skew points on a line towards a given point on that line?

143 Views Asked by At

I'm looking for a function that will skew values towards an arbitrary given value (c) in one-dimensional space.

For example, suppose a student response is scored (s) from 0 to 100. The threshold to be considered correct is c=80. I would like to skew the scores towards 80, so that as scores approach 80, there is less difference between them. Furthermore, scores of 0, 80, and 100 should not change (i.e. the function should intersect the line "y=x" (or rather "s_original = s_skewed") at those points).

I'm picturing some kind of cubic curve that starts at (0,0), arcs slightly above y=x, levels out and passes through (c,c), then curves under the final segment and finally intersects (100,100).

1

There are 1 best solutions below

0
On

Adjust variable c's slider to adjust the threshold. Adjust variable f's slider to adjust the degree of distortion. https://www.desmos.com/calculator/ylol4pbcfs

I noticed something was slightly off with the intersection, but after some careful adjustment, I discovered that the 2/3 exponent should really be closer to 1/1.080435 (through trial and error getting it to intersect better). When I looked up 1.08043... I discovered that value is actually the L. Cot of 45 degrees (see pg. 42 here: Table 4 degrees pg. 42), which is the slope of the x=y line. Since that value results in higher and higher precision, I'm sure it's correct. Or not, just an oddly precise coincidence?