Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как развернуть цилиндр на плоскость?


Нет ©   (2006-03-17 02:23:00) 

Есть масса точек рассполженных строго на цилиндре с радиусом R. Надо развернуть эти точки на плоскость. Чтобы все расстояния между ними сохранились. Как это можно сделать?

GLScene.


grouzd[E]v   (2006-03-23 15:35:00) [1]


> 1. Зачем радианы еще раз в орадианы?

Ну блин, на глазок писАл =)


> 2. Отображение не биективно. Точкам с одинаковой Z соответсвуют
> одинаковые образы.
> 3. Возьмем 2 точки на цилиндре(считаем что центральная ось
> - OZ) с координатами (-r,0,0) и (0,r,0). Расстояние по цилиндру
> между ними Pi*r/2, при вашем же подходе - на плоскости -
> у второй и образа нет.

Гм, действительно

---
... we are walking on a thin line and you better avoid the risk ...


Думкин   (2006-03-23 08:45:00) [2]

3. Хотя можно приписать образ, но все одно - расстояния не сохранятся и к тому же 2 - все убивает.

вернее x-[0,2*Pi*r)
Но, лучше рассматривать цилиндр как фактоизацию, по данной полосе всей плоскости. Тогда проблем с вычислением расстояний не будет. Ибо 2 точки могут быть близки на цилиндре, но далеки на полосе - ибо 2 точки можно связать 2-мя геодезическими имеющими соответсвующие отрезки разной длины. но можно на соседней полосе рассмотреть образ этой же точки и соединить отрезком. вот какой короче - таково и расстояние.


Думкин   (2006-03-23 08:38:00) [3]

> grouzd[E]v ©   (17.03.06 02:38) [1]
> труба вдоль оси Z, для каждой точки делаем
>
>
> const
>  RADIAN = 180 / pi;
>
> r - радиус
> a := arctan(y / x);
> x := -sin( a / RADIAN) * r;
> y := -cos( a / RADIAN) * r;

Не верно.
1. Зачем радианы еще раз в орадианы?
2. Отображение не биективно. Точкам с одинаковой Z соответсвуют одинаковые образы.
3. Возьмем 2 точки на цилиндре(считаем что центральная ось - OZ) с координатами (-r,0,0) и (0,r,0). Расстояние по цилиндру между ними Pi*r/2, при вашем же подходе - на плоскости - у второй и образа нет.

Координаты на цилиндре - 2 числа (Z,Fi). Переход к полосе на плоскости с сохранением расстояний:
x - [0,2*Pi]
y - [-бесконечность, + бесконечность]
делается небольшим усилием.


Думкин   (2006-03-23 07:33:00) [4]

Точно. Год - 1985.
Обложка - http://kvant.mcnmo.mccme.ru/1985/02/pti.htm
А на обороте - обозначения чисел у разных народов:
http://kvant.mcnmo.mccme.ru/1985/02/pot.htm
Но текста нет. :(

А если серьезно разобраться желание есть - то дифференциальная геометрия - первая и вторая квадратичные формы. И далее.


Думкин   (2006-03-23 07:19:00) [5]

Год вроде спутал - 1985. А вот номер - вроде нет. Глобус на обложке был.


Думкин   (2006-03-23 07:15:00) [6]

> Нет   (19.03.06 04:38) [6]

Это к картографам. Была статья на тему в №2 1986 года в Кванте. :о)


Нет   (2006-03-19 04:38:00) [7]

Обычные текстуры. Ну глянь в GLScene, например.
Как вообще лучше сделать развёртку шара на плоскость?


grouzd[E]v   (2006-03-18 11:01:00) [8]

Трехмерные текстуры?

---
... we are walking on a thin line and you better avoid the risk ...


Нет   (2006-03-18 04:14:00) [9]

Но ведь шары отекстуривают как то?


XProger   (2006-03-17 11:35:00) [10]

Нет, карты географические видел?


Нет   (2006-03-17 03:12:00) [11]

Спасибо!
Пойду проверю.

Кстати, а можно шар развернуть на плоскость?


grouzd[E]v   (2006-03-17 02:38:00) [12]

труба вдоль оси Z, для каждой точки делаем


const
 RADIAN = 180 / pi;

r - радиус
a := arctan(y / x);
x := -sin(a / RADIAN) * r;
y := -cos(a / RADIAN) * r;


вроде так. если хочешь - посчитай на листочке, может че сократится

---
... we are walking on a thin line and you better avoid the risk ...


Наверх

Титульная страница Поиск, карта сайта Написать письмо