Модераторы: gambit, Partizan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> шарик на нитке 
:(
    Опции темы
m412
  Дата 16.12.2006, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 14.12.2006
Где: [tmn]

Репутация: нет
Всего: нет



Здравствуйте!

Мне нужно сделать шарик который болтается на нитке... (как я сам не знаю)
Люди, подскажите пож-та, как мне это осуществить... smile 

и вот рисунок может кому пригодиться...

Это сообщение отредактировал(а) m412 - 16.12.2006, 10:29

Присоединённый файл ( Кол-во скачиваний: 78 )
Присоединённый файл  123.gif 5,24 Kb
PM MAIL WWW   Вверх
Softaz
Дата 16.12.2006, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


wasm
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 16.1.2006

Репутация: 3
Всего: 16



Рисуешь линию и круг, записываешь это в Graphics, потом в цикле-таймере вращаешь на Angle


--------------------
Разочарованный в .NET
PM MAIL WWW   Вверх
ivashkanet
Дата 16.12.2006, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 11
Всего: 149



m412, хотелось бы знать, какая информация у тебя уже есть.

Если ничего кроме задания, то тебе в Центр помощи  smile 
PM MAIL WWW ICQ   Вверх
m412
Дата 16.12.2006, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 14.12.2006
Где: [tmn]

Репутация: нет
Всего: нет



Цитата(ivashkanet @ 16.12.2006,  20:41)
m412, хотелось бы знать, какая информация у тебя уже есть.

Если ничего кроме задания, то тебе в Центр помощи  smile

ну я нарисовать то нарисовал, а как это все заставить двигаться, а точнее как правильно...
а то у меня шарик улетает и не возрашается smile  smile  smile 

Код


 private void timer1_Tick(object sender, EventArgs e)
        {   Graphics gr1 = this.CreateGraphics();
            Graphics gr2 = this.CreateGraphics();
            Graphics gr3 = this.CreateGraphics();
          
           PointF[]ptf = new PointF[4];
                ptf[0].X = 398; ptf[0].Y = 10;
                ptf[1].X = 402; ptf[1].Y = 10;

                ptf[2].X = 402; ptf[2].Y = 200;
                ptf[3].X = 398; ptf[3].Y =200;
           
            SolidBrush sBrush = new SolidBrush(Color.Black);
               gr1.Clear(Color.SteelBlue);
               gr1.FillEllipse(sBrush, 374, 175, 50, 50);
               gr2.FillRectangle(sBrush, 350, 0, 100, 10);
               gr3.FillPolygon(sBrush,ptf);
   
        }

 smile 
PM MAIL WWW   Вверх
thomas
Дата 17.12.2006, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 1
Всего: 65



Цитата

ну я нарисовать то нарисовал, а как это все заставить двигаться, а точнее как правильно...


m412
А математика на что. Формула затухающего маятника.  smile 


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
Softaz
Дата 17.12.2006, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


wasm
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 16.1.2006

Репутация: 3
Всего: 16



Период
Код

t = 2*Math.Pi*Math.sqrt(lenght/9.81);


Затухающие колебания уменьшаются EXP[x] раз за каждое колебание


--------------------
Разочарованный в .NET
PM MAIL WWW   Вверх
ivashkanet
Дата 17.12.2006, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 11
Всего: 149



Вот код формы с маятником. 
Все работает, но физика у маятника страдает  smile
Хотя, вроде, сам выводил формулу:
Цитата
X(t) = l * sin(w * t), w = sqrt(m*g/l)

Код

    public partial class Form1 : Form
    {
        private Timer _timer;
        private Point _centerOfBall;
        
        public Form1()
        {
            InitializeComponent();

            calculateBallCenter();

            _timer = new Timer();
            _timer.Interval = 100;
            _timer.Tick += new EventHandler(_timer_Tick);
            _timer.Start();
        }

        void _timer_Tick(object sender, EventArgs e)
        {
            calculateBallCenter();
            // перерисовываем форму
            this.Invalidate();
        }

        void calculateBallCenter()
        {
            double k = 0.05F;

            int x = (int)(200 + 100 * Math.Sin(k * DateTime.Now.Ticks / 1000000));
            int y = (int)(100 + 100 * Math.Abs(Math.Cos(k * DateTime.Now.Ticks / 1000000)));
            _centerOfBall = new Point(x, y);
        }

        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;

            // рисуем нитку из точки (200,100) в точку _centerOfBall
            Point beginOfLine =new Point(200, 100);
            g.DrawLine(Pens.Black, beginOfLine, _centerOfBall);

            // рисуем шарик с центром в точке _centerOfBall и радиусом 20
            Rectangle ballRectangle = new Rectangle(_centerOfBall-new Size(10,10),new Size(20,20));
            g.FillEllipse(Brushes.Black,ballRectangle);
        }
    }


P.S. DateTime.Now.Ticks / 1000000 --- это перевод тиков в секунды.
У формы нужно поставить DoubleBuffered в true

PM MAIL WWW ICQ   Вверх
m412
Дата 18.12.2006, 08:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 14.12.2006
Где: [tmn]

Репутация: нет
Всего: нет



Всем спасибо... пойду пробовать)))
 smile 
PS полюбому еще зайду...)))
PM MAIL WWW   Вверх
m412
Дата 18.12.2006, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 14.12.2006
Где: [tmn]

Репутация: нет
Всего: нет



Что-то ругается на эту строчку...

Цитата

Graphics g = e.Graphics;
 

 smile 
PM MAIL WWW   Вверх
ivashkanet
Дата 18.12.2006, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 11
Всего: 149



Цитата(m412 @  18.12.2006,  08:43 Найти цитируемый пост)
Что-то ругается на эту строчку...

Что  именно говорит?
"Не могу найти Graphics"? 

Подключи неэймспэйс System.Drawing
Код
using System.Drawing;



Цитата(ivashkanet @  17.12.2006,  21:29 Найти цитируемый пост)
DateTime.Now.Ticks / 1000000

Обманул. В секунды нужно делить на десять мильонов  smile 


P.S. Предвижу следующий вопрос:
Код
 private void Form1_Paint(object sender, PaintEventArgs e)

Это обработчик события Paint формы.
PM MAIL WWW ICQ   Вверх
m412
Дата 18.12.2006, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 14.12.2006
Где: [tmn]

Репутация: нет
Всего: нет




Подключать неэймспэйс System.Drawing!?!??!
он же по умолчанию подключен...
может ты имеешь в виду 
Код

using System.Drawing.Drawing2D;


// хотя так тоже не работает...

говорит что не содержит Graphics...

Цитата

'System.EventArgs' does not contain a definition for 'Graphics'

 smile 
PM MAIL WWW   Вверх
ivashkanet
Дата 18.12.2006, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 11
Всего: 149



Цитата(m412 @  18.12.2006,  18:29 Найти цитируемый пост)
'System.EventArgs' does not contain a definition for 'Graphics'

А где ты нашел System.EventArgs
Если там на чистом английском написано PaintEventArgs

Код

        private void Form1_Paint(object sender, PaintEventArgs e)

PM MAIL WWW ICQ   Вверх
m412
Дата 19.12.2006, 07:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 14.12.2006
Где: [tmn]

Репутация: нет
Всего: нет



гы гы гы...
кое как запустил... 
в Form1.Designer.cs ругался на 
Цитата

 this.Load += new System.EventHandler(this.Form1_Load);


Сначало на имя Form1_Load, а когда я поменял его Form1_Paint то он начал ругаться на EventHandler....

вообщем эту срочку я закомментировал и форма запустилась... тока ничего не нарисовалось....  smile  smile 
PM MAIL WWW   Вверх
ivashkanet
Дата 19.12.2006, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 11
Всего: 149



m412, комментатор, блин  smile 


Цитата(m412 @  19.12.2006,  06:48 Найти цитируемый пост)
this.Load += new System.EventHandler(this.Form1_Load);

Эта строчка добавляет обработчик к событию Load  smile 
А нам нужен Paint.

Код

this.Paint += new System.PaintEventHandler(this.Form1_Paint);

PM MAIL WWW ICQ   Вверх
m412
Дата 19.12.2006, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 14.12.2006
Где: [tmn]

Репутация: нет
Всего: нет



хе хе... так я так делал...
он эту строчку подчеркивает  а именно PaintEventHandler ...
говорит что в пространстве имен такова имени нету!!!

Пробовал сделать как ты говорил раньше...

Код

    
this.Paint += new System.Drawing.PaintEventHandler(this.Form1_Paint);


Но в DrawingЕ тоже нет такова имени....(((
PM MAIL WWW   Вверх
ivashkanet
Дата 19.12.2006, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 11
Всего: 149



Извиняюсь, писал без студии:

Код

this.Paint += new System.Windows.Forms.PaintEventHandler (this.Form1_Paint);


Добавлено @ 11:17 
Короче, открываешь дизайнер формы, выбираешь среди ее событий Paint и два раза на него стрикаешь мышкой. В полученный метод копируешь то что я написал для this.Form1_Paint

PM MAIL WWW ICQ   Вверх
m412
Дата 19.12.2006, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 14.12.2006
Где: [tmn]

Репутация: нет
Всего: нет



о......... 
УРА УРА УРА!!!!!!!!!!!!!! smile  smile  smile 
Все работает!!!!!!!!!

ivashkanet Большое тебе спасибо!!!!!!!!

PS кстати потом у меня наверняка появятся вопросы...))))))))
 smile 


PM MAIL WWW   Вверх
ivashkanet
Дата 19.12.2006, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 11
Всего: 149



Цитата(m412 @  19.12.2006,  10:19 Найти цитируемый пост)
Большое тебе спасибо

Не за что smile Заходи еще.
Цитата(m412 @  19.12.2006,  10:19 Найти цитируемый пост)
кстати потом у меня наверняка появятся вопросы...

Не сомневался  smile  
PM MAIL WWW ICQ   Вверх
m412
Дата 20.12.2006, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 14.12.2006
Где: [tmn]

Репутация: нет
Всего: нет



вот глянь... правильно ли я создал прямоугольники... 
т.е. все запускается и работает.., но просто хотелось бы знать!! 
таким ли способом надо создавать их...

Код

 public partial class Form1 : Form
    {
        private Timer _timer;
        private Point _centerOfBall,fon,fon1,potolok;
        

        public Form1()
        {
            InitializeComponent();
            calculateBallCenter();
            _timer = new Timer();
            _timer.Interval = 100;
            _timer.Tick += new EventHandler(_timer_Tick);
            _timer.Start();
        }
        void _timer_Tick(object sender, EventArgs e)
        {
            calculateBallCenter();
            // перерисовываем форму
            this.Invalidate();
        }
        void calculateBallCenter()
        {
            double k = 0.05F;
            int x = (int)(200 + 100 * Math.Sin(k * DateTime.Now.Ticks / 1000000));
            int y = (int)(10 + 100 * Math.Abs(Math.Cos(k * DateTime.Now.Ticks / 1000000)));
            _centerOfBall = new Point(x, y);
           
            int a = 0;
            int b = 0;
            fon = new Point(a, b);

            int c = 0;
            int d = 260;
            fon1 = new Point(c, d);

            int e = 200;
            int f = 10;
            potolok = new Point(e, f);

        }
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            
            Graphics g = e.Graphics;
            Graphics gr = e.Graphics;
            Graphics gr1 = e.Graphics;
            Graphics potol = e.Graphics;

            Rectangle noname = new Rectangle(fon - new Size(10, 10), new Size(410, 250));
            gr.FillRectangle(Brushes.AliceBlue, noname);

            Rectangle noname1 = new Rectangle(fon1-new Size (10,10),new Size(410,160));
            gr1.FillRectangle(Brushes.YellowGreen,noname1);

            Rectangle noname2 = new Rectangle(potolok - new Size(10, 10), new Size(20, 10));
            potol.FillRectangle(Brushes.Black, noname2);

            // рисуем нитку из точки (200,10) в точку _centerOfBall
            Point beginOfLine = new Point(200, 10);
            g.DrawLine(Pens.Black, beginOfLine, _centerOfBall);
            // рисуем шарик с центром в точке _centerOfBall и радиусом 20
            Rectangle ballRectangle = new Rectangle(_centerOfBall - new Size(10, 10), new Size(20, 20));
            g.FillEllipse(Brushes.Black, ballRectangle);
        }
    }

PM MAIL WWW   Вверх
ivashkanet
Дата 20.12.2006, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 11
Всего: 149



По просьбам трудящихся добавил более подробные комментарии:
Код

 public partial class Form1 : Form
    {
        private Timer _timer;
        private Point _centerOfBall;

        public Form1()
        {
            // это написал дизайнер формы, так что мы это не трогаем :)
            InitializeComponent();

            // создаем новый таймер
            _timer = new Timer();
            // устанавливаем интервал срабатывания в 0,1 сек
            _timer.Interval = 100;
            // регистрируем обработчик события Tick
            // т.о. через каждые 0,1 сек будет 
            // вызываться метод _timer_Tick,
            // который передвинет центр маятника
            _timer.Tick += new EventHandler(_timer_Tick);
            // запускаем таймер
            _timer.Start();
        }
        void _timer_Tick(object sender, EventArgs e)
        {
            // пересчитываем центр нашего шарика
            // формула: X(t) = l * sin(k * t), k = sqrt(m*g/l)
            //          Y(t) = l * cos(k * t)
            // k было подобрано вручную
            
            double k = 0.05F;
            
            // DateTime.Now.Ticks -- показывает сколько тиков (1/1000000 секунды) 
            // прошло с 1 января 1900

            // чисто считаем :)
            int x = (int)(200 + 100 * Math.Sin(k * DateTime.Now.Ticks / 1000000));
            int y = (int)(100 + 100 * Math.Abs(Math.Cos(k * DateTime.Now.Ticks / 1000000)));

            // устанавливаем поле _centerOfBall в координаты вычисленной точки
            _centerOfBall = new Point(x, y);

            // перерисовываем форму
            this.Invalidate();
        }

        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            // получаем Graphics на котором будем рисовать
            // он связан с формой, т.е. то что мы будем рисовать на
            // нем будет отображаться на форме
            Graphics g = e.Graphics;
            // рисуем нитку из точки (200,100) в точку _centerOfBall
            Point beginOfLine = new Point(200, 100);
            // дословно: на Graphics-е g  рисуем линию
            // из точки beginOfLine в точку _centerOfBall
            // черным цветом
            g.DrawLine(Pens.Black, beginOfLine, _centerOfBall);
            // рисуем шарик с центром в точке _centerOfBall и радиусом 20
            // создаем ограничивающий прямоугольник для нашего шарика
            // размеры его 20х20 и расположен он на 10 выше и левее 
            // центра шарика
            Rectangle ballRectangle = new Rectangle(_centerOfBall - new Size(10, 10), new Size(20, 20));
            // дословно: на Graphics-е g  рисуем заполненный 
            // черным цветом эллипс, который ограничен
            // прямоугольником ballRectangle
            g.FillEllipse(Brushes.Black, ballRectangle);
        }
    }

PM MAIL WWW ICQ   Вверх
ivashkanet
Дата 20.12.2006, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 11
Всего: 149



Цитата(m412 @  20.12.2006,  10:40 Найти цитируемый пост)
вот глянь... правильно ли я создал прямоугольники... 

m412, ну и накосячили вы, товарищ Бендер  smile 
smile Прошу не обижаться. Это я просто такой веселый smile 
Цитата(m412 @  20.12.2006,  10:40 Найти цитируемый пост)
fon,fon1,potolok

Зачем их хранить и пересчитывать если они не меняются?
Цитата(m412 @  20.12.2006,  10:40 Найти цитируемый пост)

            Graphics gr = e.Graphics;
            Graphics gr1 = e.Graphics;
            Graphics potol = e.Graphics;

Зачем тебе столько графиксов? Они же все равно один и тот же?
Цитата(m412 @  20.12.2006,  10:40 Найти цитируемый пост)
            int a = 0;
            int b = 0;
            fon = new Point(a, b);

А почему бы просто не написать:
Код

fon = new Point(0, 0);

 smile 
Цитата(m412 @  20.12.2006,  10:40 Найти цитируемый пост)
fon - new Size(10, 10

А зачем ты все время эту десятку отнимаешь?
У меня бало вычитание только потому, что центр квадрата со стороной 20 находится на 10 ед правее и на 10 ниже чем его верхний левый край.

А так: 
Цитата(m412 @  20.12.2006,  10:40 Найти цитируемый пост)
все запускается и работает

Так что все нормально, почти. см. выше smile

P.S. Но голова явно варит smile 
Приятно, когда человек сам пытается понять, а не просто джет готовое smile
PM MAIL WWW ICQ   Вверх
m412
Дата 20.12.2006, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 14.12.2006
Где: [tmn]

Репутация: нет
Всего: нет



Спасибо за подробный перевод)))

Цитата

P.S. Но голова явно варит smile 


хе хе))) ну спасибо)))  smile 

вот подредактировал код...

Код

 public partial class Form1 : Form
    {
     
        private Point _centerOfBall;
    
        public Form1()
        {
            InitializeComponent();
            
            calculateBallCenter();
            timer1.Tick += new EventHandler(timer1_Tick);
           
        }
        void timer1_Tick(object sender, EventArgs e)
        {
            calculateBallCenter();
            this.Invalidate();
        }
        void calculateBallCenter()
        {
            double k = 0.05F;
            int x = (int)(200 + 100 * Math.Sin(k * DateTime.Now.Ticks / 1000000));
            int y = (int)(10 + 100 * Math.Abs(Math.Cos(k * DateTime.Now.Ticks / 1000000)));
            _centerOfBall = new Point(x, y);
           
        }
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            
            Graphics g = e.Graphics;
            Graphics gr = e.Graphics;

            Rectangle noname = new Rectangle(0,0,410,250);
            gr.FillRectangle(Brushes.AliceBlue, noname);

            Rectangle noname1 = new Rectangle(0,260,410,160);
            gr.FillRectangle(Brushes.YellowGreen,noname1);

            Rectangle noname2 = new Rectangle(190, 0, 20, 10);
            gr.FillRectangle(Brushes.Black, noname2);

           
             Point beginOfLine = new Point(200, 10);
            g.DrawLine(Pens.Black, beginOfLine, _centerOfBall);
          
            Rectangle ballRectangle = new Rectangle(_centerOfBall - new Size(10, 10), new Size(20, 20));
            g.FillEllipse(Brushes.Black, ballRectangle);

        }

        private void button1_Click(object sender, EventArgs e)
        {
            timer1.Start();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            timer1.Stop();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

    }


кнопочки добавил... 
и таймер на форму, 
а таймер нельзя на паузу ставить???

кстати не совсем понял вот это...
Цитата

// DateTime.Now.Ticks -- показывает сколько тиков (1/1000000 секунды) 
  // прошло с 1 января 1900
  // чисто считаем smile


причем тут 1 января!!??!?!
 smile 
PM MAIL WWW   Вверх
Naum
Дата 21.12.2006, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 1
Всего: 15



Цитата(ivashkanet @  20.12.2006,  17:06 Найти цитируемый пост)
Зачем тебе столько графиксов? Они же все равно один и тот же?

gr тоже можно убрать.  smile Оставить только g.


Цитата(m412 @  20.12.2006,  23:09 Найти цитируемый пост)
а таймер нельзя на паузу ставить???

timer1.Enabled=False;



Цитата(m412 @  20.12.2006,  23:09 Найти цитируемый пост)
кстати не совсем понял вот это...

Цитата

// DateTime.Now.Ticks -- показывает сколько тиков (1/1000000 секунды) 
  // прошло с 1 января 1900
  // чисто считаем 




причем тут 1 января!!??!?!


Для digital устройств 1 января 1900 года - тоже самое, что для нас 1 января 0000. Даже, наверное, еще больше. Они - глупые думают, что вся жизнь во вселенной началась 1 января 1900.   smile 



--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
ivashkanet
Дата 21.12.2006, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 11
Всего: 149



Цитата(Naum @  21.12.2006,  09:19 Найти цитируемый пост)
timer1.Enabled=False;

А я всегда его стопаю
Код

_timer.Stop();


А как лучше?
PM MAIL WWW ICQ   Вверх
Naum
Дата 21.12.2006, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 1
Всего: 15



ivashkanet, у тебя же вроде тоже есть Lutz Roeder's .NET Reflector. (Кстати спасибо тебе и mr.Duda, я тоже в него влюбился smile )
Вот System.Windows.Forms.Timer.Stop()
Код

public void Stop()
{
      this.Enabled = false;
}

То-есть, получаетя, с точки зрения производительности, разницы нет.


--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
ivashkanet
Дата 21.12.2006, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 11
Всего: 149



Naum, ууу какие хитрые  smile

Добавлено @ 14:49 
Цитата(m412 @  20.12.2006,  21:09 Найти цитируемый пост)
вот подредактировал код...

Ооо, так уже лучше smile

Кроме:
Цитата(Naum @  21.12.2006,  09:19 Найти цитируемый пост)
gr тоже можно убрать.   Оставить только g.
 и 
Цитата(m412 @  20.12.2006,  21:09 Найти цитируемый пост)
private void Form1_Load(object sender, EventArgs e){}

Я понимаю, конечно, что ты просто нечаянно нажал на не тот обработчик в дизайнере формы, но его ведь можно убрать 
PM MAIL WWW ICQ   Вверх
m412
Дата 21.12.2006, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 14.12.2006
Где: [tmn]

Репутация: нет
Всего: нет



да... на форму я нажал случайно..
а gr специально сделал))) 
 smile 
щас пойду парится по поводу формул... smile 
PM MAIL WWW   Вверх
m412
Дата 6.1.2007, 01:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 14.12.2006
Где: [tmn]

Репутация: нет
Всего: нет



Всем Привет!!!
И с наступившим новом годом  smile 

Это снова я и с новыми вопросами)))

Вопрос такой..
как мне теперь это шарик остановить?!?!!
Ну что бы он затухал!! smile 
PM MAIL WWW   Вверх
ivashkanet
Дата 6.1.2007, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 11
Всего: 149



Цитата(m412 @  6.1.2007,  00:59 Найти цитируемый пост)
Ну что бы он затухал!!

Найд формулу затухающих колебаний маятника и замени:

Цитата(m412 @  20.12.2006,  21:09 Найти цитируемый пост)
            int x = (int)(200 + 100 * Math.Sin(k * DateTime.Now.Ticks / 1000000));
            int y = (int)(10 + 100 * Math.Abs(Math.Cos(k * DateTime.Now.Ticks / 1000000)));

В соответствии с этой формулой smile
PM MAIL WWW ICQ   Вверх
Kefir
Дата 6.1.2007, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: нет
Всего: 87



m412, чисто для проформы - когда студия чего-нибудь не находит (класс то биш) в первую очередь попытайся кнопнуть правой шёлкой мыши на классе который оно не находит и сделать Resolve. 
PM MAIL WWW Skype   Вверх
m412
  Дата 7.1.2007, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 14.12.2006
Где: [tmn]

Репутация: нет
Всего: нет



Цитата(ivashkanet @ 6.1.2007,  13:31)
Цитата(m412 @  6.1.2007,  00:59 Найти цитируемый пост)
Ну что бы он затухал!!

Найд формулу затухающих колебаний маятника и замени:

Цитата(m412 @  20.12.2006,  21:09 Найти цитируемый пост)
            int x = (int)(200 + 100 * Math.Sin(k * DateTime.Now.Ticks / 1000000));
            int y = (int)(10 + 100 * Math.Abs(Math.Cos(k * DateTime.Now.Ticks / 1000000)));

В соответствии с этой формулой smile

ПРивет=)
Да... я в курсе что нужно заменить формулой))
Вот только какой... хз... 
так... пойду на форум физиков схожу)))
 smile 
PM MAIL WWW   Вверх
juravel
Дата 7.1.2007, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 18.12.2006

Репутация: нет
Всего: нет



Цитата

так... пойду на форум физиков схожу)))

А ето где? smile 
PM MAIL   Вверх
m412
Дата 7.1.2007, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 14.12.2006
Где: [tmn]

Репутация: нет
Всего: нет



Цитата(juravel @ 7.1.2007,  13:07)

А ето где? smile

в нете=)))
PM MAIL WWW   Вверх
m412
Дата 9.1.2007, 02:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 14.12.2006
Где: [tmn]

Репутация: нет
Всего: нет



вот нашел физику...
http://www.college.ru/physics/courses/op25...esign/index.htm
еще бы кто объяснил что к чему там...
PM MAIL WWW   Вверх
m412
Дата 25.1.2007, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 14.12.2006
Где: [tmn]

Репутация: нет
Всего: нет



А что нужно переделать что бы в 2003 работало?!?! smile  smile 
PM MAIL WWW   Вверх
mr.DUDA
Дата 25.1.2007, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 24
Всего: 232



Цитата(m412 @  25.1.2007,  18:34 Найти цитируемый пост)
А что нужно переделать что бы в 2003 работало?!?!

Если там 2.0 фреймворк, то ничего не выйдет переделать.


--------------------
user posted image
PM MAIL WWW   Вверх
m412
Дата 25.1.2007, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 14.12.2006
Где: [tmn]

Репутация: нет
Всего: нет



Все уже са сделал...))) smile 

Это сообщение отредактировал(а) m412 - 27.1.2007, 00:41
PM MAIL WWW   Вверх
m412
Дата 29.1.2007, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 14.12.2006
Где: [tmn]

Репутация: нет
Всего: нет



Люди!! Помогите формулу воплотить в код....

user posted image
PM MAIL WWW   Вверх
-Mikle-
Дата 29.1.2007, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 8
Всего: 59



Не особый знаток в этой области, но может так?

T = 2 * Math.PI * Math.Sqrt(l/g);



--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
ivashkanet
Дата 29.1.2007, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 11
Всего: 149



m412, это не формула затухаюжх колебаний. Это просто формула периода проколебания простого маятника  smile 
PM MAIL WWW ICQ   Вверх
m412
Дата 29.1.2007, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 14.12.2006
Где: [tmn]

Репутация: нет
Всего: нет



блин....
опять промах... smile  smile 
PM MAIL WWW   Вверх
ivashkanet
Дата 29.1.2007, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 11
Всего: 149



На, следи за темой


PM MAIL WWW ICQ   Вверх
ivashkanet
Дата 30.1.2007, 08:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 11
Всего: 149



m412, вот тебе уже и ответ готов:
Цитата

x = a0*e^(-bt)*cos(w*t + a)

Сам прикрутишь?
PM MAIL WWW ICQ   Вверх
m412
Дата 31.1.2007, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 14.12.2006
Где: [tmn]

Репутация: нет
Всего: нет



ivashkanet
пасибо!!)))))

Цитата(ivashkanet @  30.1.2007,  08:38 Найти цитируемый пост)
Сам прикрутишь? 


ага... если тока на шурупы...)))
что означают переменные я примерно знаю...
 
a0 - начальная амплитуда, определяется им же.
a - начальная фаза, определяется способом запуска.

а остальные....  smile 


Это сообщение отредактировал(а) m412 - 31.1.2007, 04:02
PM MAIL WWW   Вверх
ivashkanet
Дата 31.1.2007, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 11
Всего: 149



b --- коэффициент затухания.
w --- частота колебаний маятника
PM MAIL WWW ICQ   Вверх
m412
Дата 31.1.2007, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 14.12.2006
Где: [tmn]

Репутация: нет
Всего: нет



а для y как будет выглядеть ?!?! 
так же?!? ....
там же вроде sin нужен.... smile 
PM MAIL WWW   Вверх
Naum
Дата 31.1.2007, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 1
Всего: 15



Как я понимаю нитка всегда натянута. Зная x длину нити можно узнать y. Сейчас попробую
Пусть r - длина нити, fi - угол наклона, x0, y0- координаты точки подвеса.
Код

x=x0+r*cos(fi)
cos(fi)=(x-x0)/r
fi=+- acos((x-x0)/r), зная, что наш угол либо в 3 либо в 4 четвертях получаем fi=- acos((x-x0)/r)
y=y0+r*sin(fi)

Видишь, не так все трудно, просто ты начал немного подлениваться.

Добавлено @ 11:02 
Блин, с эти кампутером все время путаюсь. На мониторе же начало координат вверху, т.е. 
Код

fi=acos((x-x0)/r)


Это сообщение отредактировал(а) Naum - 31.1.2007, 11:01


--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
m412
Дата 19.3.2007, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 14.12.2006
Где: [tmn]

Репутация: нет
Всего: нет



Naum

блин... а какие должны быть значения...??

РЕБЯТА!!
помогите сделать этот долбаный шарик!!!
меня уже хотят отчислять из-за этого шарика!!!  smile 
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.1684 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.