fix(live-room): Path로 그리는 하트 모양 보정
This commit is contained in:
@@ -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()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user