Автор Тема: Программирование на языке GAMBAS  (Прочитано 66610 раз)

ska

  • Гость
Re: Программирование на языке GAMBAS
« Ответ #60 : 06.01.2012 08:33:11 »
Я только начинаю изучать этот язык, поэтому интуитивно многое. Форма для рисования у меня названа pic1 поэтому я вставил твой код таким образом
Draw.Begin(pic1)

FOR T = 0 TO 10 STEP 0.1

Y = V0 * Sin(A * Pi / 180) * T - G * T * T / 2

X = V0 * Cos(A * Pi / 180) * T


Draw.Point(X, Y)

NEXT

pic1.Mirror(TRUE, TRUE)

Draw.End
в результате выдало ошибку "неизвестный символ Mirror в drawingarea"

в приложении архив с проектным заданием
« Последнее редактирование: 06.01.2012 08:40:25 от ska »

Оффлайн Archer

  • Завсегдатай
  • *
  • Сообщений: 56
Re: Программирование на языке GAMBAS
« Ответ #61 : 06.01.2012 10:21:36 »
Какая версия gambas?

Посмотри чтобы были подключены компаненты
gb.image, gb.image.effect

И лучше бы проект, выложил повторять твой код сложно и неудобно будет.

ska

  • Гость
Re: Программирование на языке GAMBAS
« Ответ #62 : 06.01.2012 10:24:23 »
В тобычной системе координат - это что значит? Чтобы ноль был в нижнем левом углу?
да типа того. Нужно задать начало координат. Допустим в левом нижнем углу. Чтобы относительно этого начала строилась траектория (слева направо). Проект выложил, прикрепил в прошлом посте

ska

  • Гость
Re: Программирование на языке GAMBAS
« Ответ #63 : 06.01.2012 10:26:22 »
Какая версия gambas?

Посмотри чтобы были подключены компаненты
gb.image, gb.image.effect

gb.image есть
gb.image.effect нету (
версия 2.17

ska

  • Гость
Re: Программирование на языке GAMBAS
« Ответ #64 : 06.01.2012 10:42:41 »
Поиграл с translate, в результате удалось перемещать начало графика
' начало графика в области рисования в точке 100 100 в пиксельном исчислении
Draw.Translate(100, 100)
при этом еще поменял местами x y, стараясь выровнить график(
Draw.Point(Y, X)
« Последнее редактирование: 06.01.2012 10:46:47 от ska »

Оффлайн Archer

  • Завсегдатай
  • *
  • Сообщений: 56
Re: Программирование на языке GAMBAS
« Ответ #65 : 06.01.2012 10:49:37 »
В Алте же 2.23 есть.

Да в Gambas2 нет gb.image.efect.

И зделай рамку у DrawArea, а то непонятно как облость ограничена.

И наверное сначало придется оси координат нарисовать, а потом график, тогда уже понятнее все будет.

И Выложи все-таки проект архивом, я запущу в gambas2, gambas3 посмотрю, как работает в разных версиях, самому интересно стало.

ska

  • Гость
Re: Программирование на языке GAMBAS
« Ответ #66 : 06.01.2012 12:12:15 »
ок, вот добавил рамку, нарисовал 2 линии (типа оси xy). Опять же проблема со шкалой деления. Т.е. по оси ох еще можно как-нибудь изловчиться с помощью цикла for и draw.text (хотя в том виде, как у меня сейчас сделаны оси, с нуля отсчет не получится), а вот для oy набить подписи тоже проблематично(.
Да и график по-прежнему вверх ногами в самом верху области рисования(
« Последнее редактирование: 06.01.2012 12:17:00 от ska »

Оффлайн Archer

  • Завсегдатай
  • *
  • Сообщений: 56
Re: Программирование на языке GAMBAS
« Ответ #67 : 06.01.2012 12:57:44 »
Короче толи лыжи не едут, толи ...

В gambas3 вобще толком не стал работать Draw. Я до этого думал я чето не разобрался, но похоже там он глючит, но у меня ещё не релиз сейчас стоит а RC7.

В gambas2 работает, хотя не почему то не запоминает textbox.text если задать в свойствах, бред какой то.

По идее у тебя должен быть код типа вот этого:
DY = pic1.Height - 50
FOR T = 0 TO 10 STEP 0.1

Y = (DY - (V0 * Sin(A * Pi / 180) * T - G * T * T / 2))

X = V0 * Cos(A * Pi / 180) * T


Draw.Point(X, Y)

NEXT

Т.е. Y у тебя рисуется из нуля и увеличивая значения, а нужно рисовать смещая его в начало координат и уменьшая значение.
Но этот код у меня не заработал, в отладчике Y ровно такой, как и был, чето ниче не понимаю.

Но попробуй развить идею, по идее она верная.

Оффлайн Archer

  • Завсегдатай
  • *
  • Сообщений: 56
Re: Программирование на языке GAMBAS
« Ответ #68 : 06.01.2012 13:34:09 »
Да это глючит у меня Gambas3 RC6 в Fedora. Перегрузился в Arch там все нормально, RC7 стоит. Релиз на работе скомпилил только.

Вобщемя правильно тебе подсказал:
DY = pic1.Height - 50
For T = 0 To 10 Step 0.1

Y = DY - (V0 * Sin(A * Pi / 180) * T - G * T * T / 2)

X = 50 + V0 * Cos(A * Pi / 180) * T


Draw.Point(X, Y)

Next
Вот такой код дает такой результат:

ska

  • Гость
Re: Программирование на языке GAMBAS
« Ответ #69 : 06.01.2012 15:44:10 »
Да, спасибо. Теперь картинка выглядит лучше). Правильно ли я понимаю, что мера исчисления при рисовании графиков в гамбасе это исключительно пиксели и в качестве осей и ориентира следует опираться на края формы рисования? Других вариантов нет? (типа маппинга какого-нибудь?)
И еще вопрос... Горизонтальную разметку я сделал так
FOR T = 0 TO 100 STEP 15
Draw.Text(T, T, pic1.Height - 50)
NEXT
А как сделать вертикальную по oy от -5 до, скажем, 30?

ska

  • Гость
Re: Программирование на языке GAMBAS
« Ответ #70 : 06.01.2012 17:37:54 »
ska, приходи сюда:
http://im-ua.org/
Попробуем помочь. Я сам тока вчера взялся с Draw разбираться, не все там понятно, как то.
Не могу зарегистрироваться - код картинки не грузится.
такой код
PUBLIC CONST G AS Single = 9.81
PUBLIC SUB Button1_Click()
DIM V0, S, L, P, X AS Single
DIM txtA1 AS Object
DIM A AS Integer
'Ввод начальных значений 
V0 = Val(txtV0.Text)
S = Val(txtS.Text)
L = Val(txtL.Text)
P = Val(txtP.Text)
txtA1.Text = ""
FOR A = 0 TO 90 STEP P
'Попадание в площадку 
X = V0 ^ 2 * Sin(2 * A * Pi / 180) / G
IF S <= X AND X <= S + L THEN
txtA1.Text = txtA1.Text + Str(A)
END IF
NEXT
END SUB
Выдает ошибку null object с пометкой на строку txtA1.Text = ""

Оффлайн Archer

  • Завсегдатай
  • *
  • Сообщений: 56
Re: Программирование на языке GAMBAS
« Ответ #71 : 06.01.2012 19:11:26 »
Строки в Гамбас складываются так:
txtA1.Text = txtA1.Text & Str(A)
Про регистрацию уточню у администратора, меняли домен, много поломалось.

Оффлайн Archer

  • Завсегдатай
  • *
  • Сообщений: 56
Re: Программирование на языке GAMBAS
« Ответ #72 : 07.01.2012 10:55:33 »
Да, спасибо. Теперь картинка выглядит лучше). Правильно ли я понимаю, что мера исчисления при рисовании графиков в гамбасе это исключительно пиксели и в качестве осей и ориентира следует опираться на края формы рисования? Других вариантов нет? (типа маппинга какого-нибудь?)
И еще вопрос... Горизонтальную разметку я сделал так
FOR T = 0 TO 100 STEP 15
Draw.Text(T, T, pic1.Height - 50)
NEXT
А как сделать вертикальную по oy от -5 до, скажем, 30?
Да наверное примерно так:
FOR T = 0 TO 100 STEP 15
Draw.Text(T, 50, (pic1.Height - 50)-Т)
NEXT

А можно нарисовать оси координат отдельно и просто выложить картинкой, через
Draw.Image(...)Тока потом сложнее в 0 попадать будет.

ska

  • Гость
Re: Программирование на языке GAMBAS
« Ответ #73 : 09.01.2012 13:25:08 »
Да, только если нужно и минусовые значения указать на шкале, то пожалуй так
FOR T = (-15) TO 100 STEP 15
причем минусовое значение берется в скобки почему-то, иначе не работает

Ну и пожалуй последнее в этой связи... А что если я хочу указать на осях более подробные деления, скажем с шагом 5, а то и еще меньше. Дело в том, что с таким мелким шагом цифры сливаются и разобрать их становится невозможно. Есть ли решение?

Оффлайн Rezedent12

  • Завсегдатай
  • *
  • Сообщений: 640
  • Цель оправдывает средства.
Re: Программирование на языке GAMBAS
« Ответ #74 : 09.01.2012 15:03:43 »
У меня вопрос небольшой.
Если я на невидимой форме разместил udp или tcp элемент управления. То при  попытке инициализации этой формы без иксов программа упадёт?