parseSVGPath(svgPath) {
		// Split path into commands and coordinates
		const pathCommands = svgPath.match(/([a-df-z])[^a-df-z]*/gi);
		const points = this.points;
		const startPoint = this.startPoint;
		let lastPoint = startPoint;

		this.beginPath();

		// Process each command and corresponding coordinates
		for (let i = 0; i < pathCommands.length; i++) {
			const pathCommand = pathCommands[i];
			const command = pathCommand[0].toUpperCase();
			const coordinates = pathCommand
				.slice(1)
				.trim()
				.split(/[\s,]+/)
				.map(parseFloat);

			switch (command) {
				case "A":
					{
						// A command takes 5 coordinates
						const p = endpointToCenterParameterization(...coordinates);
						this.arc(
							p.x,
							p.y,
							p.radiusX,
							p.radiusY,
							p.rotation,
							p.startAngle,
							p.endAngle,
							p.applyanticlockwise,
						);
					}
					break;
				case "H":
					// H take 1 coordinate
					lastPoint =
						points.length === 0 ? startPoint : points[points.length - 1];
					this.lineTo(lastPoint.x + coordinates[0], lastPoint.y);
					break;
				case "V":
					// V take 1 coordinate
					lastPoint =
						points.length === 0 ? startPoint : points[points.length - 1];
					this.lineTo(lastPoint.x, lastPoint.y + coordinates[0]);
					break;
				case "M":
					// M takes 2 coordinates
					this.moveTo(...coordinates);
					break;
				case "L":
					// L takes 2 coordinates
					this.lineTo(...coordinates);
					break;
				case "Q":
					// Q takes 4 coordinates
					this.quadraticCurveTo(...coordinates);
					break;
				case "C":
					// C takes 6 coordinates
					this.bezierCurveTo(...coordinates);
					break;
				case "Z":
					this.closePath();
					break;
				default:
					console.warn("Unsupported command:", command);
					break;
			}
		}
	}
Parses an SVG path string and adds the points to the current path.
@param {string} svgPath - The SVG path string to parse.