catmull-rom: make curves more rounded
See https://github.com/Beep6581/RawTherapee/pull/4701#issuecomment-414054187
This commit is contained in:
parent
e3ea0926c2
commit
4b2392e44a
@ -289,7 +289,8 @@ inline double catmull_rom_tj(double ti,
|
|||||||
double xi, double yi,
|
double xi, double yi,
|
||||||
double xj, double yj)
|
double xj, double yj)
|
||||||
{
|
{
|
||||||
static constexpr double alpha = 0.5;
|
// see https://github.com/Beep6581/RawTherapee/pull/4701#issuecomment-414054187
|
||||||
|
static constexpr double alpha = 0.375;
|
||||||
return pow(sqrt(pow2(xj-xi) + pow2(yj-yi)), alpha) + ti;
|
return pow(sqrt(pow2(xj-xi) + pow2(yj-yi)), alpha) + ti;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -374,10 +375,19 @@ inline void catmull_rom_spline(int n_points,
|
|||||||
inline void catmull_rom_reflect(double px, double py, double cx, double cy,
|
inline void catmull_rom_reflect(double px, double py, double cx, double cy,
|
||||||
double &rx, double &ry)
|
double &rx, double &ry)
|
||||||
{
|
{
|
||||||
|
#if 0
|
||||||
double dx = px - cx;
|
double dx = px - cx;
|
||||||
double dy = py - cy;
|
double dy = py - cy;
|
||||||
rx = cx - dx;
|
rx = cx - dx;
|
||||||
ry = cy - dy;
|
ry = cy - dy;
|
||||||
|
#else
|
||||||
|
// see https://github.com/Beep6581/RawTherapee/pull/4701#issuecomment-414054187
|
||||||
|
static constexpr double epsilon = 1e-5;
|
||||||
|
double dx = px - cx;
|
||||||
|
double dy = py - cy;
|
||||||
|
rx = cx - dx * 0.01;
|
||||||
|
ry = dx > epsilon ? (dy / dx) * (rx - cx) + cy : cy;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user