@Kozgemikin

Как перевести декартовы координаты в изометрические?

Пишу код,для создания игры в изометрическом стиле. Вот код,но объекты располагаются на экране не так,как надо. Подскажите,в чем проблема.
var objects=[]
var Obj=function(x,y) {
this.x=x
this.y=y
this.iX=x-y+500
this.iY=(x+y)/2
objects.push(this)
this.id="n"+objects.length
document.write('<img id="'+this.id+'" src="obj1.png" width=100 height=100 style="position:absolute;left:'+this.iX+';top:'+this.iY+';transform:rotate(45deg);">')
}
var o1 = new Obj(100,20)
var o2 = new Obj(200,20)
var o3 = new Obj(100,120)
var o4 = new Obj(200,120)
  • Вопрос задан
  • 234 просмотра
Пригласить эксперта
Ответы на вопрос 2
@Karpion
Я такую задачу решал на Acorn B+ ...

Есть универсальное решение. Для каждой из трёх координат объёмного пространства пишем угол (против часовой стрелки от горизонтальной координаты) и масштаб.
Для изометрии будет так:
  1. X: AX=-150 градусов, KX=1
  2. Y: AY=-30 градусов, KY=1
  3. Z: AZ=+90 градусов, KZ=1
Плоские координаты x и y вычисляем так:
  1. x = x0 + X*cos(AX)*KX + Z*cos(AY)*KZ + Z*cos(AZ)*KZ
  2. y = y0 + X*sin(AX)*KX + Z*sin(AY)*KZ + Z*sin(AZ)*KZ
x0 и y0 - это центральная точка.
Множитель cos(AX)*KX и остальные - вычислить заранее один раз.

Вроде, всё остальное д.б. очевидно. И модифицировать под любую систему несложно - менять углы и масштаб.
Это чистая математика, без привязки к языку программирования.
Ответ написан
Комментировать
joeberetta
@joeberetta Куратор тега JavaScript
Читай: https://epdf.pub/google-for-dummies.html
Используйте готовые движки. Зачем изобретать велосипед?
Вводная статья про изометрические координаты (на п...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы