feat(main.kt): Alfa1

This commit is contained in:
Kirill 2025-05-12 15:05:10 +03:00
parent b4232eee5e
commit 7c27a20994

View File

@ -287,48 +287,29 @@ class AtomModelShader {
val xy2 = radius * cos(stackAngle2) val xy2 = radius * cos(stackAngle2)
val z2 = radius * sin(stackAngle2) val z2 = radius * sin(stackAngle2)
for (j in 0..sectors) { for (j in 0 until sectors) {
val sectorAngle1 = j * sectorStep val sectorAngle1 = j * sectorStep
val sectorAngle2 = (j + 1) * sectorStep val sectorAngle2 = (j + 1) * sectorStep
// Вершины для двух треугольников, образующих квад // Вершины для двух треугольников, образующих квад
for (k in 0..1) {
val sa = if (k == 0) sectorAngle1 else sectorAngle2
val stackAngle = if (k == 0) stackAngle1 else stackAngle2
val xy = if (k == 0) xy1 else xy2
val z = if (k == 0) z1 else z2
val x = xy * cos(sa)
val y = xy * sin(sa)
val nx = x / radius
val ny = y / radius
val nz = z / radius
vertices.add(x)
vertices.add(y)
vertices.add(z)
vertices.add(nx)
vertices.add(ny)
vertices.add(nz)
}
// Вторая пара вершин для завершения квада
val x1 = xy1 * cos(sectorAngle1) val x1 = xy1 * cos(sectorAngle1)
val y1 = xy1 * sin(sectorAngle1) val y1 = xy1 * sin(sectorAngle1)
val x2 = xy2 * cos(sectorAngle1) val x2 = xy2 * cos(sectorAngle1)
val y2 = xy2 * sin(sectorAngle1) val y2 = xy2 * sin(sectorAngle1)
val x3 = xy1 * cos(sectorAngle2) val x3 = xy1 * cos(sectorAngle2)
val y3 = xy1 * sin(sectorAngle2) val y3 = xy1 * sin(sectorAngle2)
val x4 = xy2 * cos(sectorAngle2) val x4 = xy2 * cos(sectorAngle2)
val y4 = xy2 * sin(sectorAngle2) val y4 = xy2 * sin(sectorAngle2)
// Первый треугольник // Первый треугольник (верхний)
addVertexWithNormal(vertices, x1, y1, z1, radius) addVertexWithNormal(vertices, x1, y1, z1, radius)
addVertexWithNormal(vertices, x2, y2, z2, radius) addVertexWithNormal(vertices, x2, y2, z2, radius)
addVertexWithNormal(vertices, x3, y3, z1, radius) addVertexWithNormal(vertices, x3, y3, z1, radius)
// Второй треугольник // Второй треугольник (нижний)
addVertexWithNormal(vertices, x2, y2, z2, radius) addVertexWithNormal(vertices, x2, y2, z2, radius)
addVertexWithNormal(vertices, x4, y4, z2, radius) addVertexWithNormal(vertices, x4, y4, z2, radius)
addVertexWithNormal(vertices, x3, y3, z1, radius) addVertexWithNormal(vertices, x3, y3, z1, radius)
@ -342,9 +323,12 @@ class AtomModelShader {
} }
private fun addVertexWithNormal(vertices: MutableList<Float>, x: Float, y: Float, z: Float, radius: Float) { private fun addVertexWithNormal(vertices: MutableList<Float>, x: Float, y: Float, z: Float, radius: Float) {
// Позиция вершины
vertices.add(x) vertices.add(x)
vertices.add(y) vertices.add(y)
vertices.add(z) vertices.add(z)
// Нормаль (нормализованный вектор от центра к вершине)
vertices.add(x / radius) vertices.add(x / radius)
vertices.add(y / radius) vertices.add(y / radius)
vertices.add(z / radius) vertices.add(z / radius)