pricecharts

track prices of consumer electronics
Log | Files | Refs | README

commit 8d78199340c48094e18ff5fa4a7619f784d86e9e
parent a8d14d30d0508b2a7ba4ab56457be000b5a3872d
Author: Kyle Milz <kyle@getaddrinfo.net>
Date:   Sun, 26 Apr 2015 13:30:09 -0600

pc_html: simplify catrom to bezier

Diffstat:
Mpc_html | 52+++++++++++++++++++++++-----------------------------
1 file changed, 23 insertions(+), 29 deletions(-)

diff --git a/pc_html b/pc_html @@ -435,44 +435,38 @@ sub catmullrom_to_bezier # 0 1/6 1 -1/6 # 0 0 1 0 - my $d = "M" . $pts[0] . ", " . $pts[1] . " "; + my $d = "M $pts[0], $pts[1] "; my $iLen = @pts; for (my $i = 0; $iLen - 2 > $i; $i += 2) { - my @p; + my (@xs, @ys); if ($i == 0) { - push @p, {x => $pts[$i], y => $pts[$i + 1]}; - push @p, {x => $pts[$i], y => $pts[$i + 1]}; - push @p, {x => $pts[$i + 2], y => $pts[$i + 3]}; - push @p, {x => $pts[$i + 4], y => $pts[$i + 5]}; + push @xs, $pts[$i]; push @ys, $pts[$i + 1]; + push @xs, $pts[$i]; push @ys, $pts[$i + 1]; + push @xs, $pts[$i + 2]; push @ys, $pts[$i + 3]; + push @xs, $pts[$i + 4]; push @ys, $pts[$i + 5]; } elsif ($i == ($iLen - 4)) { - push @p, {x => $pts[$i - 2], y => $pts[$i - 1]}; - push @p, {x => $pts[$i], y => $pts[$i + 1]}; - push @p, {x => $pts[$i + 2], y => $pts[$i + 3]}; - push @p, {x => $pts[$i + 2], y => $pts[$i + 3]}; + push @xs, $pts[$i - 2]; push @ys, $pts[$i - 1]; + push @xs, $pts[$i]; push @ys, $pts[$i + 1]; + push @xs, $pts[$i + 2]; push @ys, $pts[$i + 3]; + push @xs, $pts[$i + 2]; push @ys, $pts[$i + 3]; } else { - push @p, {x => $pts[$i - 2], y => $pts[$i - 1]}; - push @p, {x => $pts[$i], y => $pts[$i + 1]}; - push @p, {x => $pts[$i + 2], y => $pts[$i + 3]}; - push @p, {x => $pts[$i + 4], y => $pts[$i + 5]}; + push @xs, $pts[$i - 2]; push @ys, $pts[$i - 1]; + push @xs, $pts[$i]; push @ys, $pts[$i + 1]; + push @xs, $pts[$i + 2]; push @ys, $pts[$i + 3]; + push @xs, $pts[$i + 4]; push @ys, $pts[$i + 5]; } - my @bp; - push @bp, {x => $p[1]{x}, y => $p[1]{y}}; - push @bp, { - x => ((-$p[0]{x} + 6*$p[1]{x} + $p[2]{x}) / 6), - y => ((-$p[0]{y} + 6*$p[1]{y} + $p[2]{y}) / 6) - }; - push @bp, { - x => (($p[1]{x} + 6*$p[2]{x} - $p[3]{x}) / 6), - y => (($p[1]{y} + 6*$p[2]{y} - $p[3]{y}) / 6) - }; - push @bp, {x => $p[2]{x}, y => $p[2]{y}}; - - $d .= "C " . $bp[1]{x} . ", " . $bp[1]{y} . " " . - $bp[2]{x} . ", " . $bp[2]{y} . " " . - $bp[3]{x} . ", " . $bp[3]{y} . " "; + my (@bp_x, @bp_y); + push @bp_x, $xs[1]; push @bp_y, $ys[1]; + push @bp_x, ((-$xs[0] + 6*$xs[1] + $xs[2]) / 6); + push @bp_y, ((-$ys[0] + 6*$ys[1] + $ys[2]) / 6); + push @bp_x, (($xs[1] + 6*$xs[2] - $xs[3]) / 6); + push @bp_y, (($ys[1] + 6*$ys[2] - $ys[3]) / 6); + push @bp_x, $xs[2]; push @bp_y, $ys[2]; + + $d .= "C $bp_x[1], $bp_y[1] $bp_x[2], $bp_y[2] $bp_x[3], $bp_y[3] "; } return $d;