|
Вращение точки.
|
|||
---|---|---|---|
#18+
Здравствуйте, помогите пожалуйста написать программу. 6 электронов с противоположными спинами вращаются по трем орбитам, изредка подергиваясь. Должна быть одна большая кнопка, при нажатии на которую включается магнитное поле и электрон вращаясь плавно переходит в плоскость XY и начинает вращаться в ней. Что я не знаю как: 1. Подергивание (как сделать так, чтоб Rnd отдавало не одно рандомное число, а каждый раз разное? как сделать рандомный таймер? ну, чтоб все электроны не дергались синхронно, а по разному и по отдельности) 2. Как сделать плавный поворот электрона? Не чтоб он скакнул из XZ в XY, а чтоб плавненько повернулся, пройдя при этом пару раз по орбите? 3. Как сделать так, чтоб орбита стиралась ~ через пол периода? Можно конечно запустить вторую линию цвета фона с отставанием в пол периода, но это как-то некрасиво. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2012, 18:09 |
|
Вращение точки.
|
|||
---|---|---|---|
#18+
marinpro1. Подергивание (как сделать так, чтоб Rnd отдавало не одно рандомное число, а каждый раз разное? как сделать рандомный таймер? ну, чтоб все электроны не дергались синхронно, а по разному и по отдельности)Зови rnd несколько раз подряд, тогда и будет каждый раз разное. Таймер рандомным быть не может. Но можно завести для каждого электорна по счетчику. Сначала задаешь им случайные значения, а потом по таймеру все декрементируешь. Как только для какого-то электорона счетчик стал в ноль - дергаешь его и задаешь новое случайное значение в счетчик. marinpro2. Как сделать плавный поворот электрона? Не чтоб он скакнул из XZ в XY, а чтоб плавненько повернулся, пройдя при этом пару раз по орбите?А как он у тебя по орбите ходит? marinpro3. Как сделать так, чтоб орбита стиралась ~ через пол периода? Можно конечно запустить вторую линию цвета фона с отставанием в пол периода, но это как-то некрасиво.Именно так и надо. Либо стирать все и на каждом шагу рисовать всю картинку заново. Почитай учебники про двойную буферизацию чтобы картинка не дергалась. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2012, 20:13 |
|
Вращение точки.
|
|||
---|---|---|---|
#18+
marinproкак сделать так, чтоб Rnd отдавало не одно рандомное число, а каждый раз разное?.а про randomize не забыл? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2012, 20:56 |
|
Вращение точки.
|
|||
---|---|---|---|
#18+
White OwlЗови rnd несколько раз подряд, тогда и будет каждый раз разное. Таймер рандомным быть не может. Но можно завести для каждого электорна по счетчику. Сначала задаешь им случайные значения, а потом по таймеру все декрементируешь. Как только для какого-то электорона счетчик стал в ноль - дергаешь его и задаешь новое случайное значение в счетчик. Почему тут: Код: vbnet 1. 2.
а всегда = 0? Если cint, то а = 0 ... 1. Мне нужны 0.1 ... 0.9, что делать? White OwlА как он у тебя по орбите ходит? Код: vbnet 1. 2. 3. 4. 5. 6.
x8, y8, x628, y628 вывела как скролл бары для поиграться White OwlИменно так и надо. Либо стирать все и на каждом шагу рисовать всю картинку заново. Почитай учебники про двойную буферизацию чтобы картинка не дергалась. Ясно, спасиб. Проще вторую линию. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2012, 19:21 |
|
Вращение точки.
|
|||
---|---|---|---|
#18+
marinproRandomize a = Int(Rnd(5)) даже не представляю, чего ты хотела добиться) при чём тут 5? вот довольно полная инфа об rnd 12493545 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2012, 20:13 |
|
Вращение точки.
|
|||
---|---|---|---|
#18+
marinproПочему тут: Код: vbnet 1. 2.
а всегда = 0? Если cint, то а = 0 ... 1. Мне нужны 0.1 ... 0.9, что делать?Подсказываю: подумай над смыслом функции Int(). marinproWhite OwlА как он у тебя по орбите ходит? Код: vbnet 1. 2. 3. 4. 5. 6.
x8, y8, x628, y628 вывела как скролл бары для поигратьсяНу вот, а теперь добавь к этой системе из двух уровнений третье, для Z. Иными словами, напиши уравнение круга в трехмерном пространстве. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2012, 21:05 |
|
Вращение точки.
|
|||
---|---|---|---|
#18+
marinpro Мне нужны 0.1 ... 0.9, что делать? Код: vbnet 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.05.2012, 07:33 |
|
Вращение точки.
|
|||
---|---|---|---|
#18+
Так ... . Finally, был написан маршрут с подёргиваниями и всем, чем нужно для одного электрона. Теперь нужно сделать так, чтобы был 6 электронов и у всех были чуть-чуть разные орбиты. Т.е. : ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2012, 13:51 |
|
Вращение точки.
|
|||
---|---|---|---|
#18+
marinproТак ... . Finally, был написан маршрут с подёргиваниями и всем, чем нужно для одного электрона. Теперь нужно сделать так, чтобы был 6 электронов и у всех были чуть-чуть разные орбиты. Нечаянно отправила. Т.е. : Нужно чтобы было: ndX = 8 * Sin(6.28 / 360 * inTN): ndY = 13 * Cos(6.28 / 360 * inTN) для первого, ndX = 4 * Sin(6.28 / 360 * inTN): ndY = 8 * Cos(6.28 / 360 * inTN) для второго и т.д. Короче, нужно сделать функцию, засунуть туда как-то переменные и вытаскивать значение в цикле при заданных переменных. Как? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2012, 13:53 |
|
Вращение точки.
|
|||
---|---|---|---|
#18+
marinproКороче, нужно сделать функцию, засунуть туда как-то переменные и вытаскивать значение в цикле при заданных переменных. Как? Что именно вы не знаете: как объявить функцию, или как прописать в ней параметры, или как вызывать ее в цикле? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2012, 15:31 |
|
Вращение точки.
|
|||
---|---|---|---|
#18+
QValDmarinproКороче, нужно сделать функцию, засунуть туда как-то переменные и вытаскивать значение в цикле при заданных переменных. Как? Что именно вы не знаете: как объявить функцию, или как прописать в ней параметры, или как вызывать ее в цикле? Ох, как бы объяснить. Мне нужно давать этой ф-ии X = ndX * Sin(dX / 360 * inTN) + xx: Y = ndY * Cos(dY / 360 * inTN) + yy ndX, dX, xx, ndY, dY , yy и получать назад X и Y шесть раз за цикл. При этом, рисовать эти точки. Как это сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2012, 15:53 |
|
Вращение точки.
|
|||
---|---|---|---|
#18+
marinpro, я понимаю, что вам нужно, но я спрашивал, что вы из перечисленного не знаете. ps http://www.sd-company.su/article/vba/functions ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2012, 09:29 |
|
Вращение точки.
|
|||
---|---|---|---|
#18+
QValDmarinpro, я понимаю, что вам нужно, но я спрашивал, что вы из перечисленного не знаете. ps http://www.sd-company.su/article/vba/functions Блин, мне что-то в голову стукнуло что там нужны какие-то хитрые переменные с $, а гугл не может в поиск таких символов, вот и мучалась. Оказывается нужно просто каждый раз просто приравнивать их и всё будет ок. Ладно, с этим разобралась, спасибо ( : Теперь ещё пара вопросов: 1. Вот у меня сейчас 6 label с буквой e , символизируют электроны, вращаются внутри picturebox. Как рисовать путь прямо за ними? Путь стирается вращающимся label`ом. Делаю я вот так: PicAnim.Line (ndX, ndY)-(odX, odY), vbBlack odX = ndX: odY = ndY Но т.к. у меня 6 точек, то и рисуются все 6 разом и получается какой-то ужас. 2. У каждой движущейся точки разные nX и nY: ndX = dX + nX * Sin(Scal * (6.28 / 360 * inTN)): ndY = dY + nY * Cos(Scal * (6.28 / 360 * inTN)) Как постепенно привести их к одним nX и nY, чтобы они как бы плавно повернулись? Засунуть в цикл со Step 0.5 ? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2012, 14:48 |
|
Вращение точки.
|
|||
---|---|---|---|
#18+
динамическая графика в таком варианте у вас не выйдет. юзайте directX. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2012, 14:50 |
|
Вращение точки.
|
|||
---|---|---|---|
#18+
marinpro, вы в качестве исходников для своего использовали этот проект? Это я к тому, на что нам ориентироваться... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2012, 16:08 |
|
Вращение точки.
|
|||
---|---|---|---|
#18+
Konst_Oneдинамическая графика в таком варианте у вас не выйдет. юзайте directX. Разве не получится? Помоему тут можно просто наштамповать миллион всяких х1, х2, х3, ..., хn и всё будет рисовать, но можно ведь как-то сделать всё проще и красивее. AndreTM marinpro, вы в качестве исходников для своего использовали этот проект? Это я к тому, на что нам ориентироваться... Ага. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2012, 16:25 |
|
Вращение точки.
|
|||
---|---|---|---|
#18+
на Picture или на Form если рисовать, то AutoRedraw. но всё мигает. поэтому или уходите в строну GDI+ или рисуйте на контексте средствами API. если нужно 3D со всякими сценами и вращениями, то это в сторону DirectX ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2012, 17:05 |
|
Вращение точки.
|
|||
---|---|---|---|
#18+
Konst_Oneна Picture или на Form если рисовать, то AutoRedraw. но всё мигает. поэтому или уходите в строну GDI+ или рисуйте на контексте средствами API. если нужно 3D со всякими сценами и вращениями, то это в сторону DirectX 3д не нужно, просто вращающиеся точки. ладно, фиг с маршрутом, нарисую статический. Разворот. Код: vbnet 1. 2. 3.
и таких 6 штук, у всех разный nX. Нужно чтобы постепенно все пришли к nX=2. Что значит символ $ у переменной? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2012, 18:13 |
|
Вращение точки.
|
|||
---|---|---|---|
#18+
вы про такое объявление? Код: vbnet 1.
это string ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2012, 18:15 |
|
Вращение точки.
|
|||
---|---|---|---|
#18+
Konst_Oneвы про такое объявление? Код: vbnet 1.
это string Ясно, спасибо. marinproРазворот. Код: vbnet 1. 2. 3.
и таких 6 штук, у всех разный nX. Нужно чтобы постепенно все пришли к nX=2. Как такое сделать? В голову лезет только писать все новые nX в массив и потом доставать оттуда. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2012, 19:35 |
|
|
start [/forum/topic.php?fid=60&fpage=72&tid=2157557]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
174ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 304ms |
total: | 583ms |
0 / 0 |