Skip to content

Commit

Permalink
refactor: optimize drawPeanoSierpinskiCurve
Browse files Browse the repository at this point in the history
  • Loading branch information
duong755 committed Jan 1, 2024
1 parent 330d5fd commit 7afb31a
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 61 deletions.
20 changes: 10 additions & 10 deletions algorithms/peano-sierpinski.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import { partition } from "../functions/collection.js";
import { centroid } from "./helpers.js";
import { simplePeano } from "./peano.js";

Expand Down Expand Up @@ -43,16 +42,17 @@ export function peanoSierpinskiCurve(quadrangle, iteration) {
export function drawPeanoSierpinskiCurve(context, quadrangle, iteration) {
const quadrangles = peanoSierpinskiCurve(quadrangle, iteration);
const centroids = quadrangles.map(function (quadrangle) {
return centroid.apply(undefined, quadrangle);
return centroid(...quadrangle);
});
const groupsOfFour = partition(centroids, 4);

groupsOfFour.forEach(function (fourPoints) {
context.beginPath();
context.moveTo.apply(context, fourPoints[0]);
context.lineTo.apply(context, fourPoints[1]);
context.lineTo.apply(context, fourPoints[2]);
context.lineTo.apply(context, fourPoints[3]);
context.stroke();
centroids.forEach(function (_, index) {
if (index % 4 === 0 && iteration > 0) {
context.beginPath();
context.moveTo(...centroids[index + 0]);
context.lineTo(...centroids[index + 1]);
context.lineTo(...centroids[index + 2]);
context.lineTo(...centroids[index + 3]);
context.stroke();
}
});
}
4 changes: 2 additions & 2 deletions algorithms/peano.js
Original file line number Diff line number Diff line change
Expand Up @@ -78,9 +78,9 @@ export function drawPeanoCurve(context, colors, quadrangle, iteration) {
makeLinearGradient(context, colors, centroids[0], centroids[centroids.length - 1]);
centroids.forEach(function (point, index) {
if (index === 0) {
context.moveTo.apply(context, point);
context.moveTo(...point);
} else {
context.lineTo.apply(context, point);
context.lineTo(...point);
}
});
context.lineWidth = 2;
Expand Down
2 changes: 1 addition & 1 deletion draw/peano-sierpinski.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ function draw() {
ctx.lineWidth = 2;
ctx.strokeStyle = "#FFFFFF";

for (let iteration = 0; iteration <= 5; iteration++) {
for (let iteration = 0; iteration <= 6; iteration++) {
setTimeout(function () {
ctx.clearRect(0, 0, w, h);
drawPeanoSierpinskiCurve(ctx, [[0, 0], [w, 0], [w, h], [0, h]], iteration);
Expand Down
48 changes: 0 additions & 48 deletions functions/collection.js

This file was deleted.

0 comments on commit 7afb31a

Please sign in to comment.