2009-05-10 2 views
3

Я художник, занимающийся созданием различных видов компьютеров, управляемых компьютером. Я начал прототипирование машины XY на основе gimble-based и понял, что необходимые математические данные недоступны. Я достаточно приличный программист, но не очень силен в математике. 3D-математика.Математическое программирование для машины для рисования на основе gimble

Чтобы получить представление о том, что я необходимости делать, это может быть полезно взглянуть на вышке:

Ранний прототип:

http://roypardi.com/gimble/IMG_2803.JPG

http://roypardi.com/gimble/IMG_2805.JPG

http://roypardi.com/gimble/IMG_2806.JPG

http://roypardi.com/gimble/gimbleSmall.MOV (небольшое видео)

http://roypardi.com/gimble/gimbleLarge.mov (больше видео)

Два внутренние кольца представляют собой X/Y оси и управляются шаговыми двигателями. Я хочу иметь возможность использовать как растровые изображения, так и векторные данные (gcode). Поэтому мне нужно иметь возможность адресовать точку в 2D-пространстве на бумаге/из моих данных и выяснить, какая ориентация должна быть там, чтобы добраться туда (то есть, сколько нужно сделать для каждого двигателя).

Я искал 2D> 3D-проекцию, углы Эйлера и т. Д., Но я не в своей глубине. Любые указатели, нажатие в правильном направлении или фрагменты кода будут наиболее желанными. Я могу понять большинство языков программирования.

+0

fyi общий термин en.wikipedia.org/wiki/Gimbal, хотя, конечно, вы можете использовать проприетарное правописание для своей версии. :) –

ответ

0

Я думаю, что это проблема простого http://en.wikipedia.org/wiki/Trigonometry

Допустим, что расстояние от центра Ваших колец до ближайшей точки на бумаге (которую я называю точку «O» для «происхождения») является расстояние X.

Возьмем другую точку Р непосредственно к северу от о, расстояние которых от O является Y.

Чтобы нарисовать эту точку, вы должны угол альфа, например, что загар (альфа) = Y/X, то есть вы может вычислять альфа, используя формулу «arctan (Y/X)» [arctan иногда также известен как atan]. Arctan - это тригонометрическая функция, которую, я думаю, вы, вероятно, найдете в API общей математической библиотеки.

Вышеупомянутый простейший случай.

Единственный другой случай, о котором я могу думать, это когда точка P не должна быть на севере. Вместо того, чтобы быть на севере, допустим, что его расстояние составляет Y1 на севере, а Y2 - на восток. Решение представляет собой два угла (один угол для каждого из двух колец), один из которых является «arctan (Y1/X)», а другой из них «arctan (Y2/X)».

1

Очень хорошая машина, которую вы создали, я надеюсь, что это сработает для вас. Я считаю, что это правильно.

Способ, которым я его вижу, состоит в том, чтобы получить один угол, просто, но другой немного сложнее визуализировать, поскольку мы наклонены ось, на которую он поворачивается.

Я собираюсь избежать использования загара, так как при программировании это может привести к делению на 0, что может расстраивать. Также Z будет высотой происхождения над бумагой.

YAxis = агсзш (Х/SQRT (X² + Z²))

XAxis = агсзш (Y/SQRT (Y² + X² + Z²))

или мы могли бы использовать

XAxis = агсзш (Y/SQRT (Y² + Z²))

YAxis = агсзш (X/SQRT (X² + Y² + Z²))

Кроме того, я бы очень хотел, чтобы увидеть видео этого черчения, если он работает.

Редактировать: Подумав об этом, я верю, что только одно решение будет работать, это зависит от того, на какую ось влияет другой. Является ли YAxis в середине или в Xaxis?

+0

Спасибо ChrisW + zekian. Я следую тому, что вы оба говорите. Я нашел этот интерактивный калькулятор триггеров после публикации моего вопроса, и я начинаю понимать, как подойти к этому. Мне нужно будет сделать некоторый перевод скатных растровых данных, чтобы 0/0 находилось в центре изображения. И затем выясните, как перевести радианы на дискретные шаги (шаговые двигатели перемещаются с шагом + или - n). Возможно, это будет немного проб и ошибок - количество шагов, которые кольцо может перемещать в своем диапазоне движения (скажем, от 45 градусов до 45 градусов), а затем определить количество шагов на радиан - что-то вроде этого. thanks/Roy – 2009-05-10 21:22:59

+0

Ох - предназначено для добавления ссылки на калькулятор триггеров: http://www.visualtrig.com/Default.aspx – 2009-05-10 21:24:42

+0

Радианы легко преобразуются в градусы (я полагаю, вы знаете, сколько градусов каждый шаг двигателя есть), чтобы преобразовать радианы в градусы, мы умножаем их на 180 и делим на pi. Итак, чтобы получить XAxis в градусах, вы бы сделали arcsin (X/sqrt (X² + Z²)) * 180/3.141592 Также Z может использоваться для изменения масштаба вашего рисунка, просто подумал, что я дам вам знать случай, которого вы не понимаете. Если вам интересно, как я пришел к уравнениям, которые я вам дал, я с радостью объясню с помощью диаграммы. –

0

Возможно, я неправильно понимаю, но я не верю, что карданный шар будет делать то, что вы хотите. Шарнир может указывать в любом трехмерном направлении, но он не может перемещаться в произвольные точки в трехмерном пространстве. Если плоскость бумаги пересекает объем, охваченный ручкой, удерживаемой в кардане, перо может быть способно нарисовать круг, но не более того. Даже рисование круга не является верным, поскольку в этом случае бумага также будет пересекать объем, охваченный кардановыми кольцами; пытаясь сориентировать перо, кольцо попало в бумагу.

Я думаю, что вы хотите, это plotter, а не карданный.

+0

Если вы посмотрите на фильм, кажется, что он будет рисовать лазером, а не физической кистью. – ChrisW

+0

Да. Я использую чернила «jet» (сплошной поток, высокое давление, контролируемый электромагнитным клапаном) в центре самого маленького кольца. У меня есть другая машина, над которой я работаю - более традиционный плоттер X/Y, и программирование для этого довольно прямолинейно (хотя точность + разрешение = управление двигателем было немного сложной задачей. Некоторые изображения здесь: http://roypardi.com/dp/ – 2009-05-10 21:12:31

+0

ОК, я сначала не видел лазерного пятна в фильме, и теперь я вижу, о чем вы говорите. Я оставлю свой ответ здесь, как предупреждение другим исследовать перед публикацией. –