вот код. С определением точек проблем нет,проблема с формулой для вычисления угла.
- Код: Выделить всё
Public Sub Rotate_Tank()
Dim xx As Single, yy As Single, zz As Single, n As Single, m As Single
Dim x1 As Single, z1 As Single, x2 As Single, z2 As Single
CosA = Cos(-(User_Tank(User_Tank_Tek).rTank_Y + g_360d))
SinA = Sin(-(User_Tank(User_Tank_Tek).rTank_Y + g_360d))
'перед зад
x1 = User_Tank(User_Tank_Tek).Pos_X + SinA * 1.25
z1 = User_Tank(User_Tank_Tek).Pos_Z - CosA * 1.25
x2 = User_Tank(User_Tank_Tek).Pos_X - SinA * 1.25
z2 = User_Tank(User_Tank_Tek).Pos_Z + CosA * 1.25
xx = LS.GetHeight(x1, z1)
zz = LS.GetHeight(x2, z2)
n = (xx - zz)
yy = n * (0.3 / 0.82468)
User_Tank(User_Tank_Tek).rTank_X = yy
' лево право
CosA = Cos(-(User_Tank(User_Tank_Tek).rTank_Y - g_90d))
SinA = Sin(-(User_Tank(User_Tank_Tek).rTank_Y - g_90d))
x1 = User_Tank(User_Tank_Tek).Pos_X + SinA * 0.75
z1 = User_Tank(User_Tank_Tek).Pos_Z - CosA * 0.75
x2 = User_Tank(User_Tank_Tek).Pos_X - SinA * 0.75
z2 = User_Tank(User_Tank_Tek).Pos_Z + CosA * 0.75
xx = LS.GetHeight(x1, z1)
zz = LS.GetHeight(x2, z2)
'Draw_Metka x1, LS.GetHeight(x1, z1), z1
'Draw_Metka x2, LS.GetHeight(x2, z2), z2
If xx > zz Then
n = (zz - xx)
Else:
n = (xx - zz)
End If
yy = n / 0.5
User_Tank(User_Tank_Tek).rTank_Z = yy
End Sub
Когда танк стоит строго по x или z проблем практически нет, но при попытке развернутся вокруг оси, стоя на уклоне, танк то подымается то в верх, то зарывается в низ. Я думаю что при повороте танка под 45* или 90*, смещаются между собой и углы "User_Tank(User_Tank_Tek).rTank_Z"