fix: contouring

This commit is contained in:
hypercross 2026-03-15 01:49:28 +08:00
parent acc9d79873
commit 025f5a46b0
1 changed files with 10 additions and 10 deletions

View File

@ -38,17 +38,17 @@ export function getRoundedRectPoints(
} }
// 左上角圆角(从顶部开始,顺时针) // 左上角圆角(从顶部开始,顺时针)
for (let i = 0; i < segmentsPerCorner; i++) { for (let i = 0; i <= segmentsPerCorner; i++) {
const angle = (Math.PI / 2) * (i / segmentsPerCorner); const angle = (Math.PI / 2) * (i / segmentsPerCorner) - Math.PI;
points.push([ points.push([
r + r * Math.cos(angle - Math.PI / 2), r + r * Math.cos(angle),
r + r * Math.sin(angle - Math.PI / 2) r + r * Math.sin(angle)
]); ]);
} }
// 右上角圆角 // 右上角圆角
for (let i = 0; i < segmentsPerCorner; i++) { for (let i = 0; i <= segmentsPerCorner; i++) {
const angle = (Math.PI / 2) * (i / segmentsPerCorner); const angle = (Math.PI / 2) * (i / segmentsPerCorner) - Math.PI/2;
points.push([ points.push([
width - r + r * Math.cos(angle), width - r + r * Math.cos(angle),
r + r * Math.sin(angle) r + r * Math.sin(angle)
@ -56,8 +56,8 @@ export function getRoundedRectPoints(
} }
// 右下角圆角 // 右下角圆角
for (let i = 0; i < segmentsPerCorner; i++) { for (let i = 0; i <= segmentsPerCorner; i++) {
const angle = (Math.PI / 2) * (i / segmentsPerCorner) + Math.PI / 2; const angle = (Math.PI / 2) * (i / segmentsPerCorner);
points.push([ points.push([
width - r + r * Math.cos(angle), width - r + r * Math.cos(angle),
height - r + r * Math.sin(angle) height - r + r * Math.sin(angle)
@ -65,8 +65,8 @@ export function getRoundedRectPoints(
} }
// 左下角圆角 // 左下角圆角
for (let i = 0; i < segmentsPerCorner; i++) { for (let i = 0; i <= segmentsPerCorner; i++) {
const angle = (Math.PI / 2) * (i / segmentsPerCorner) + Math.PI; const angle = (Math.PI / 2) * (i / segmentsPerCorner) + Math.PI/2;
points.push([ points.push([
r + r * Math.cos(angle), r + r * Math.cos(angle),
height - r + r * Math.sin(angle) height - r + r * Math.sin(angle)