@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)
  • Вопрос задан
  • 279 просмотров
Пригласить эксперта
Ответы на вопрос 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
Используйте готовые движки. Зачем изобретать велосипед?
Вводная статья про изометрические координаты (на п...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы