fix(live-room): Path로 그리는 하트 모양 보정

This commit is contained in:
2025-11-06 16:15:28 +09:00
parent b3a17b26dc
commit f4244d5913

View File

@@ -2416,18 +2416,19 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
} }
private val baseHeartPath: Path = Path().apply { private val baseHeartPath: Path = Path().apply {
// 하트 경로(정규화 좌표 [-1,1]) // Swift HeartShape와 동일한 하트 경로 (정규화 좌표 [-1,1]에 0.9 스케일 반영)
reset() reset()
moveTo(0f, -0.2f) val S = 0.9f
moveTo(0f, -0.45f * S)
cubicTo( cubicTo(
0.85f, -1.0f, 0.62f * S, -1.02f * S,
1.35f, 0.2f, 1.22f * S, -0.04f * S,
0f, 1f 0f, 0.65f * S
) )
cubicTo( cubicTo(
-1.35f, 0.2f, -1.22f * S, -0.04f * S,
-0.85f, -1.0f, -0.62f * S, -1.02f * S,
0f, -0.2f 0f, -0.45f * S
) )
close() close()
} }
@@ -2604,22 +2605,19 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
private val particles = mutableListOf<Particle>() private val particles = mutableListOf<Particle>()
private val baseHeartPath: Path = Path().apply { private val baseHeartPath: Path = Path().apply {
// 하트 실루엣(정규화 좌표: x,y ∈ [-1,1]) // Swift HeartShape와 동일한 하트 경로 (정규화 좌표 [-1,1]에 0.9 스케일 반영)
// 상단 중앙 노치가 있고 좌우 로브가 둥글며 하단 포인트가 뾰족한 형태
// y 범위 [-1, 1] 유지(halfSize 기반 착지/충돌 판정과 정합)
reset() reset()
moveTo(0f, -0.2f) // top notch val S = 0.9f
// right lobe → bottom tip moveTo(0f, -0.45f * S)
cubicTo( cubicTo(
0.85f, -1.0f, // control1: right lobe top 0.62f * S, -1.02f * S,
1.35f, 0.2f, // control2: right shoulder 1.22f * S, -0.04f * S,
0f, 1f // bottom tip 0f, 0.65f * S
) )
// left lobe → back to notch
cubicTo( cubicTo(
-1.35f, 0.2f, // control1: left shoulder -1.22f * S, -0.04f * S,
-0.85f, -1.0f, // control2: left lobe top -0.62f * S, -1.02f * S,
0f, -0.2f // notch 0f, -0.45f * S
) )
close() close()
} }
@@ -2722,22 +2720,19 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
private val drops = mutableListOf<Drop>() private val drops = mutableListOf<Drop>()
private val baseHeartPath: Path = Path().apply { private val baseHeartPath: Path = Path().apply {
// 하트 실루엣(정규화 좌표: x,y ∈ [-1,1]) // Swift HeartShape와 동일한 하트 경로 (정규화 좌표 [-1,1]에 0.9 스케일 반영)
// 상단 중앙 노치가 있고 좌우 로브가 둥글며 하단 포인트가 뾰족한 형태
// y 범위 [-1, 1] 유지(halfSize 기반 착지/충돌 판정과 정합)
reset() reset()
moveTo(0f, -0.2f) // top notch val S = 0.9f
// right lobe → bottom tip moveTo(0f, -0.45f * S)
cubicTo( cubicTo(
0.85f, -1.0f, // control1: right lobe top 0.62f * S, -1.02f * S,
1.35f, 0.2f, // control2: right shoulder 1.22f * S, -0.04f * S,
0f, 1f // bottom tip 0f, 0.65f * S
) )
// left lobe → back to notch
cubicTo( cubicTo(
-1.35f, 0.2f, // control1: left shoulder -1.22f * S, -0.04f * S,
-0.85f, -1.0f, // control2: left lobe top -0.62f * S, -1.02f * S,
0f, -0.2f // notch 0f, -0.45f * S
) )
close() close()
} }