2d в 3d - как обернуть рисунок вокруг цилиндра - PullRequest
1 голос
/ 12 мая 2011

У меня есть чертежи (массивы точек с координатами x и y), которые повернуты в трехмерном пространстве: http://www.motiondraw.com/md/as_samples/Testing/_mindreader/main.html

Как и сейчас, чертеж выглядит так, как будто обернут вокруг куба, с неприятным90 градусов в углу.Вместо этого он должен выглядеть так, как если бы он был обернут вокруг цилиндра.Перед началом вращения я вызываю функцию (в ActionScript) 'bendDrawing', которая для каждой точки устанавливает начальное значение z:

для (var j = 0; j // чертежи центрированы - точки слева от центра: <0 var distFromCenter = Math.abs (shape [i] .points [j] .x); </p>

var wid = 350;// this could be the radius of the cylinder

// NOTE: suboptimal, as the image gets a 90° corner in the center, at its highest point
// what it should look like: as if the image was wrapped around a cylinder, i.e. in a circular shape
// is that pythagoras? draw triangle, calc distance from base, add to this to c?
var z = wid - distFromCenter;

shape[i].points[j].z =  Math.abs( z);

}

Я простоне могу обернуть голову вокруг этого ;-) Любые указатели очень ценятся!

Андреас Вебер

1 Ответ

2 голосов
/ 12 мая 2011

попробуйте это:

shape[i].points[j].z  = 
    wid * Math.cos((shape[i].points[j].x / wid) * (0.5 * Math.PI));
...