Сложный вопрос о стереометрии

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сложный вопрос о стереометрии

Сообщение Sirik » 25.01.2005 (Вт) 11:09

Есть такие данные:
1,305,17,31,59,144,-36
2,285,21,24,62,140,-32
3,268,23,24,62,140,-32
4,172,32,21,68,142,-24
, где первые 3 - это координаты (X,Y,Z)
последние - это углы (A,O,T).

Как и что надо сделать чтобы получилась картинка (см. влодение)?

ЗЫ. Помогите очень надо.
На рисунки видно только точки 2,3 и 4

Размещение точек (т.е. X,Y,Z) я сделал, но вот как быть с углами, вернее наклонами?

И ещё одно: как привязаться к началу координат использую только три точки?
Вложения
Pic.zip
(4.71 Кб) Скачиваний: 25

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 25.01.2005 (Вт) 11:18

Посмотри в Наших Проектах тему от tyomitch а. Называется как то типа "непреодолмое желание понтануться". там как раз было про трассировку лучей.
I don't understand. Sorry.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 25.01.2005 (Вт) 11:20

Называется именно так, но не смотри, не поможет :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 25.01.2005 (Вт) 12:02

Sirik, я совершенно не понял вопрос... Если ты как-то его более понятно сформулируешь, то вполне возможно, что я смогу ответить.
Шестёрка чисел задаёт что - точку? Тогда при чём там углы? Или отрезок? Или что?
Изображение

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 25.01.2005 (Вт) 12:07

tyomitch,
3 координаты задают положение точки, ещё 3 - направляющие косинусы - положение "камеры".

Sirik, сейчас пример не напишу, надо аналгеом вспоминать и линал, - матрицы преобразования (перехода)...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 25.01.2005 (Вт) 12:26

Amed писал(а):tyomitch,
3 координаты задают положение точки, ещё 3 - направляющие косинусы - положение "камеры".

Раз ты понял задачу - объясни мне :-D
Что там - 4 точки и 4 камеры? Или что?
Изображение

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 25.01.2005 (Вт) 12:39

[offtop]По ходу дела, там всё-таки 4 точки ;)
И камеры. :D[/offtop]

Скорее всего, [b]Sirik'у[b] нужны только углы от первой точки, иначе объяснить я не могу.

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 25.01.2005 (Вт) 12:44

2 Amed
Насчёт матриц - это верно! Но вот на счёт cos углов, не совсем так.

вот например: точка 305,17,31,59,144,-36
и если её нагнуть вперёд на 10 градусов, то получаем:305,17,31,75,149,-23

Я раньше думал, что эти углы - углы наклона точки относительно осей, но почему же тогда, когда я изменил након только меняются все три угла?

У робота данная команда реализуется так:
p1 - точка с координатами (305,17,31,59,144,-36)

POINT p2=p1 + RX (-10)
и получаем точку p2, с наклоном относительно p1 вперёд на 10 градусов
p2 (305,17,31,75,149,-23)

ЗЫ. Я сделал фотку робота обвёл инструмент, именно для него и надо показывать углы
Вложения
Image001.zip
Фото робота
(14.53 Кб) Скачиваний: 27

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 25.01.2005 (Вт) 12:57

Я взял часть готового проекта у итальянца. и там всё работает
счас выложу, только объясните как там всё работает
Вложения
gss.zip
(71.44 Кб) Скачиваний: 20

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 25.01.2005 (Вт) 13:03

Неточно. Что такое, - "нагнуть вперёд"? Вращать вокруг оси OX (например), может быть?

[offtop]Ух ты, робот :D
Моя специальность, круто...[/offtop]

А вообще-то, расскажи точно про систему координат робота. По должна быть такая (например):

x,y,z,a,b,c

x,y,z - координаты начала манипулятора
a,b,c - углы поворота конца манипулятора относительно его же начала.
Я правильно понимаю?

А при изменении одного угла меняются несколько координат (сферическая СК) -
x=r*cos(a)*cos(b)
y=r*cos(a)*sin(b)
z=r*sin(a)

[updated]Сейчас посмотрю пример, пока я писал, уже выложился...[/updated]
[updated]Йоу, пример на 464 кб... :roll: [/updated]

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 25.01.2005 (Вт) 14:20

2 Amed
1. Начало координат есть точка (TOC) в середине робота. Начальное положение робота= он вытянут вверх, при этом углы равны нулю. На русунке показан робот в рабочем положении, т.е. это у него как-бы новая позиция от которой и надо вести расчёт углов (x,y,z,90,180,0) или (x,y,z,45,180,-45) что одиннаково.

2. На счёт наклона: я даю команду команду роботу: накнись на 10 грудусов вперёд, при этом он как-бы описывает окружность с радиусом R.
Т.е. я сам толком не могу понять какие это имеено углы. В руководстве робота (причём руководство на итал. языке) написано о 3 типах координат: BASE (базовые), JOINTS (суставные) и TOOL (инструмента)

Если хоч, я могу снять эти картинки и скинуть в форум или по почте

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 25.01.2005 (Вт) 14:33

Sirik

1. Ага, это всё вполне логично.
2. Было бы неплохо снять картинки, - так понятно совсем немного.

3 типа координат на самом деле говорят, кажется, о том, что у робота 3 "звена": две "руки" и "инструмент". (2 joints, 1 tool).

Картинки, думаю, можно выложить прямо в форум, - всем будет интересно...

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 25.01.2005 (Вт) 15:00

Нет, у робота 6 суставов.
я делалю два вложения:
1. это выдержки из руководства
2. скрины с имулятора робота (второй снимок - это рабочая позиция робота)
Вложения
Robot_Pos.zip
Скрины имулятора
(29.2 Кб) Скачиваний: 16
Koor.zip
(306.25 Кб) Скачиваний: 19

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 25.01.2005 (Вт) 17:50

Что? На этом помощь и закончилась?

KDima
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 759
Зарегистрирован: 14.07.2004 (Ср) 23:14
Откуда: СПб

Сообщение KDima » 25.01.2005 (Вт) 18:41

С каких пор роботов прогрят на VB?
Хороший прогер не тот, кто всё знает, хороший прогер знает, где найти знание.

Последний раз редактировалось: Administrator (15.07.2004 (Вт) 00:01), всего редактировалось 999 раз(а)

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 25.01.2005 (Вт) 18:54

KDima писал(а):С каких пор роботов прогрят на VB?


Во-первых чем тебе VB не нравится? Старое программное обеспечения для робота было как раз на VB написано!

Во-вторых какая разница на чём делать? Что мне ближе на том и пишу!

KDima
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 759
Зарегистрирован: 14.07.2004 (Ср) 23:14
Откуда: СПб

Сообщение KDima » 25.01.2005 (Вт) 19:00

Я не против ВБ
Нет просто интересно :)
Хороший прогер не тот, кто всё знает, хороший прогер знает, где найти знание.

Последний раз редактировалось: Administrator (15.07.2004 (Вт) 00:01), всего редактировалось 999 раз(а)

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 25.01.2005 (Вт) 19:23

KDima писал(а):Я не против ВБ
Нет просто интересно :)


Тогда знай: моя первая версия программы пошла на ура.
Только проблеммы остались с углами и ихнего представления

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 25.01.2005 (Вт) 20:24

KDima писал(а):С каких пор роботов прогрят на VB?


А что, VB для этого не подходит? :?

По поводу инструкций сейчас буду потихоньку разбирацца...

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 26.01.2005 (Ср) 14:03

Что, обсуждение законченно?

Но вопрос всё-таки весит в воздухе?

ЗЫ:
1. как представить координаты точки в матрице? знаю что размероность должна быть 4х4.
2. Ещё надо уравнения поворта относительно всех трех осей
3. Это само сложное:
допустим есть 3 точки, как зная координаты этих точек и их углы, перенести центр координат в эту точку?
Опять-таки в роботе это делается простой инструкцией:
p_new=FRAME[p1,p2,p3,p1]

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 29.01.2005 (Сб) 9:32

Ок. Данные вопросы очень сложны.

Допустим у меня есть три точки (x,y,z). Если я хочу посмотреть на них сверху, то я просто желаю график плоскости XY, отсекаю координату Z и строю график.

А как повернуть камеру, например относительно оси z на 10 градусов?
Какие преоброзование слудет делать?

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 29.01.2005 (Сб) 14:25

Прогляди учебник по линейной алгебре или на сайтах про DX... В ЛЮБОМ случае надо умножать координаты точки на матрицу перехода, в которую подставлены все углы. Сейчас, к сожалению, не могу найти матрицу, поищи в Яndex

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 29.01.2005 (Сб) 14:28

Так мне и надо знать марицу перехода.

Кстати, я почти разобрался с координатами робота.
Если всё так как я думаю, то скоро покажу результат своей работы :D

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 29.01.2005 (Сб) 16:00

Ок. давай посмотрим таким образом:

допустим есть точка с координатами (10,20,30)
камера (т.е. наблюдатель смотрит на точку под углом (относительно oX=79, oY=175, oZ=-98)).
проекцируем всё это на плоскость XY

Вот это и будет решение. Только как это сделать?

Faust
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 649
Зарегистрирован: 29.12.2003 (Пн) 13:38
Откуда: лаборатория

Сообщение Faust » 31.01.2005 (Пн) 21:56

Похоже это дело на углы эйлера, задающие переход от одной системы координат к другой - это более-менее понятно разобрано в "ландафшице", Механика. К следущему понедельнику вернусь в Физтех, если к тому времени вы сами не найдете ответ, могу выслать нужную инфу.
Листинги не горят!

Faust
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 649
Зарегистрирован: 29.12.2003 (Пн) 13:38
Откуда: лаборатория

Сообщение Faust » 31.01.2005 (Пн) 22:00

Похоже это дело на углы эйлера, задающие переход от одной системы координат к другой - это более-менее понятно разобрано в "ландафшице", Механика. К следущему понедельнику вернусь в Физтех, если к тому времени вы сами не найдете ответ, могу выслать нужную инфу.
Листинги не горят!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11

    TopList