• Добро пожаловать на Quest3D - Русскоязычное сообщество.
 

[G]Построение Кривой Линии (есть ответ)

Автор mixey, 10 марта 2009, 01:15:12

« назад - далее »

mixey

Всем Привет! У меня вполне конкретная проблема. Необходимо построить график, который может быть представлен различными кривыми линиями. Скажем есть уравнение описывающее эту кривую, либо нужно динамически (с определенным шагом) выхватывать координаты точек и строить по ним линию. Как это можно реализовать?

Есть конечно вариант использовать Line и указывать координаты, но тогда график сильно зависит от количества шагов, так как представлен отрезками. Другие варианты есть??

Заранее Благодарен! :)

Ruslan

Сдесь посмотри, 3d Spline называется, только регистрироваться нужно...

http://quest.ovos.at/

mixey

О! Скачал! То, что надо! :D Только увы там с ОО работают, а я в нем нифига не знаю  ??? Придется долго разбираться...
Большое Спасибо! Мой проект спасен! А есть хорошие хелпы по ОО в квесте?? И за сколько вообще его реально освоить если общие представления имеются, но ни разу не работал с этим??

mixey

#3
На самом деле все оказалось так, как я и предполагал. При помощи For Loop и Lines можно сделать кривые линии. При чем количество итераций влияет на гладкость кривой. Если у кого то будут вопросы, то объясню. Общий вид алгоритма выглядит так:

cashis

скажи а где вообще на твоей схеме прописана та формула по которой строится график ????

mixey

 cashis, смотри исправления в предыдущем посте! Если требуется объяснить подробнее, то объясню!

Const_47

"
А есть хорошие хелпы по ОО в квесте?? И за сколько вообще его реально освоить если общие представления имеются, но ни разу не работал с этим??
"


c:\Program Files\Quest3D\Quest3D 4.2.2\Examples\OO\
Хороший хелп по оо квест )))

Усвоить можно очень быстро, если есть опыт ОО проектирования.

Это больше всего похоже на OO java     

mixey

Const_47, благодарю за ответ!

Но теперь у меня новый вопрос! Как сделать так, чтобы в определенный момент времени (например через равный интервал в 1 секунду) заносить значение координат в какой-то массив, чтобы потом по ним построить график. Решение наверняка простое, но додуматься пока никак не могу. Перечислять все точки, чтобы проверять совпадение момента времени не рационально, да и вообще определенная точка может пролететь и не занестись в массив.

Const_47

#8
Вот тебе пример построение Еnvelope из координат хранящихся в массиве Table
http://rapidshare.com/files/209911810/BuildEnvelope.rar.html

Так же, можо и заносить координаты в Таble.

Хелп по Луа тут, там функции для работы с Q, так же
и с Тable
http://support.quest3d.com/index.php?title=Lua_Script

Я думаю это будет проще и удобнее, чем построение только из блок-схем

Если ты не знаком с версиями  Q3D до 4.0 то можеш и не знать Q3D -> section -> ClassicLayout. Появится вкладка
АrreyEditor, вместо OO Editor-a.

Отрезок времени? Юзай Тіmer. 

mixey

Const_47, спасибо большое!  :D Очень нужная вещь! Кажется во всем разобрался! Но есть очередной вопрос, а какой функцией в луа можно изменить тип данных, например value поместить в text, ну в общем, чтоб как operator был?

Const_47

Вот этот простенький тест
http://rapidshare.com/files/210105820/TestConvert.rar.html
показывает, что в QЛуа нет специальной функции для преобразования value в text, в этом просто нет необходимости.



Если я тебя правильно понял, то тебя нужно примерно так, как на твоей  пикче просчитать значение(ху) всех поинтов кривой и сохранить в массиве , что бы потом рисовать с временным интервалом конкретную итарацию?

Или же просчитать конкретную итерацию, пропустить временной интервал, рисовать конкретную итерацию, и так далее...
пока не будет нарисована вся кривая?

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






mixey

О! Очередное спасибо! Теперь писать скрипт стало гораздо удобнее!

А теперь описываю общую задачу, которую пытаюсь решить. У меня есть механизм, состоящий из различных звеньев и узловых точек. Движение каждой узловой точки и каждого звена функционально зависит от угла поворота первого звена, которой задается. Движение уже смоделировал. Теперь необходимо нарисовать траекторию движения узловых точек механизма. Поскольку размеры звеньев можно менять, то траектории каждый раз будут разные, но в общем виде конечно будут двигаться по дугам эллипса. Я хотел решить эту задачу путем "снятия" через некий промежуток времени координат точки и строить по этим данным траекторию. Но это на мой взгляд крайне каряво... Какой способ более так скажем математический чтоли... Задать построение линий какой-либо функцией?

Const_47

Я мало что понял конкретно, больше в общих чертах.

"Задать построение линий какой-либо функцией?"

Просчитать математично идея хорошая.
Предлагаю посмотреть на этот экземпл
C:\Program Files\Quest3D\Quest3D 4.2.2\Examples\Advanced\Lua Script\Pattern Boxes.cgr
Мне кажется что это довольно близко к цели, по крайней мере
есть от чего "плясать"

Покажи плиз конечный результат, это что то не совсем "стандартное", поэтому жутко интересное...
:)))

mixey

Этот пример уже юзал - близко, но все же не то. Так как там итерации идут как натуральный ряд (1,2,3 и т.д), а у меня время, которое представляется и дробями, поэтому возникают сложности в построении нужной кривой линии.

Ну в общем щас еще поламаю голову. Но у меня щас вообще какая-то странная проблема! Скорее это глюк! Короче после некоторого времени работы в GUI EditBox нельзя вводить с клавы число! Просто не реагирует на клаву и все тут, хотя никаких изменений не было! О_о И никак не убивается эта фигня, приходиться за место старого GUI просто ставить новый и все работает! Что это может быть??? Может структура самого проекта не корректная?

Const_47

Я сталкивался с подобным, правда в моем случае, это не был
GUI EditBox.

Могу уверенно сказать, что в паблише он уже не "поломается" )))